zoukankan      html  css  js  c++  java
  • 数据预处理 简介

    ——《Applied predictive modeling》

    数据预处理

    数据的准备能够极大的影响模型的预测能力,如对数据集进行变换以减少数据偏移和离群值的影响,能够显著提高模型的表现。

    对于特征工程来说,使用预测变量的组合能够比使用单独的预测变量更加有效,最有效的编码数据方法来自于建模者对于问题的理解,而非通过数学方法。

    1.数据变换

    1.1.单个预测变量的数据变换

    中心化、标准化、偏度变换

    数据稳健性对模型的提升?数据偏度对预测的影响?

    中心化

    出发点:

    方法:所有的变量减去均值

    结果:变换后的变量均值为0

    标准化

    出发点:

    方法:每个变量除以自身标准差

    结果:迫使变量的标准差为1

    偏度

    出发点:

    计算:$ frac{sum(x_i-ar{x}^{3})}{(n - 1) u^{3/2}} $,其中

    ( u = frac{sum(x_i-ar{x}^{2})}{n - 1})

    方法:对数、平方根、倒数

    使用参数(lambda)进行索引的变换族:$$x^{*} = frac{x^{lambda - 1}}{lambda} (if lambda != 0)$$

    [x^{*} = log(x) (if lambda=0) ]

    结果:偏度正常

    1.2.多变量数据变换

    离群数据

    对于大量数据来说,数据是否有效?(如血压等必须为正数等)

    对于小量的数据,分辨数据是有偏数据还是离群数据?

    预测模型对离群值是否具有抗性?如果敏感的话,如何处理数据(空间表示变换将数据映射到高维的球上)(样本除以其平方模)?PS:空间变换后移除变量会导致一系列问题

    特征提取

    中心化与标准化能够使PCA捕捉到内部潜在的关系而不受原测量标度的影响。PCA未考虑建模目标与响应变量的关系?无监督有监督?

    通过PCA推出主成分与各个变量之间的关系

    1.3.缺失值

    调查数据确实是否和结果变量有关?数据是否两极化(人们在强烈倾向时给出建议)?

    缺失数据还是删失数据?方法采用树模型还是插补缺失值(在预测模型内部建立预测模型——KNN/通过PCA得到缺失变量与其余变量的关系建立预测模型)?

    1.4.移除预测变量

    过多的变量导致计算时间过多且增加了复杂度,若两个预测变量高度相关,表明其包含了相同的潜在信息,冗余的预测变量通常增加了模型的复杂度而非信息量,删除其中一个不会减弱模型表现,会使得模型更简洁易解释。同时服从退化分布的预测变量会削弱模型

    对于零方差变量,对于树模型和线性模型等的影响?如何检测极度不平衡的变量?如何处理(数据有偏/数据极度不平衡)?

    检测的准则是:1.唯一值在样本中的比例低(低于10%?)2.最高频数相比于次高频率的比值

    预测变量之间的相关性

    对于预测变量,各个预测变量之间也可能存在相关性。

    预测变量可通过聚类方法找到线性相关的预测变量,聚类+相关矩阵可视化以梳理出每个主成分与哪些预测变量相互联系

    移除一部分预测变量,使得剩下的预测变量两两之间相关系数低于一个阈值,算法如下:

    相关系数矩阵、找出绝对值最大的预测变量、计算 and Again

    1.5.增加预测变量

    通过例如one-hot encoding增加预测变量(分解变量至虚拟变量),但最后一个变量可由其余变量表示,因此模型是否有截距项和是否采用最后一个可推出的变量的关系?

    若模型有截距项,使用所有的虚拟变量会导致数值计算的问题(虚拟变量的和为1,和截距项表达了相同的信息),若模型对此不敏感,则使用所有的变量有助于模型解释。

    1.6.区间化预测变量

    在建模分析之前将数据预测变量的观测分类,从而得到两个或更多的组

    手动区间化连续型变量可能导致模型表现的显著下降,手动区间化预测变量是否限制了模型发现预测变量和结果变量之间的关系?

    区间化会为模型解释带来好处,但会导致效能的损失。

    如CART 多元自适性回归样条可以自动估计合适的截断点,使用了所有预测变量的信息,且是基于可靠的统计学方法的。

  • 相关阅读:
    python:时间格式转化
    python:将时间戳格式化为yyyyMMdd hh:mm:ss
    Oracle 实现表中id字段自增长
    django:将query-set类型转为json类型
    mysql:获取某个表的所有字段
    Navicat连接Mysql8.0.11出现1251错误
    Java垃圾回收(GC)机制详解
    Mybatis学习总结(九)——查询缓存
    Mybatis学习总结(八)——延迟加载
    Mybatis学习总结(七)——调用存储过程
  • 原文地址:https://www.cnblogs.com/tillnight1996/p/10641916.html
Copyright © 2011-2022 走看看