对于数据较好的处理,可以减轻模型负担,搞一个好的数据预处理比搞一个好的学习算法要容易很多吧。
(1)中心化
每个特征维度都减去相应的均值实现中心化,这样可以使数据变为0均值,对于一些图像数据,一般为了方便直接减去一个相同的值。
(2)标准化
数据变为0均值后,需要使用标准化的做法使数据在不同维度服从相同分布。一般有两种办法:
除以标准差,让新数据的分布接近标准高斯分布;
让每一特征维度的最大值和最小值按比例缩放到-1~1之间。也叫归一化。
数据归一化有很大优势:不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响(加快梯度下降法中对收敛速度),需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。这是数据挖掘中一项基础的工作。

(3)主成分分析PCA
主成分分析是一种常见的降维方法,可以通过减小数据规模来使得学习过程变得更加容易。
其主要思想是将数据映射到一条线上去,使得投影后样本点的方差最大化。

如图,第一个主成分来自方差最大的方向,第二个主成分来自方差次大的方向,且与第一个主成分方向正交。
其计算过程为:
去除均值;
计算协方差矩阵;
计算协方差矩阵的特征值和特征向量;(特征值表示一个特征有多重要,特征向量表示表示特征是什么。Ax= m X;)
将特征值从大到小排序;
保留最前面的N个特征向量;
将数据转换到上述N个特征向量构建的新空间中。
(4)SVD
SVD通过对原始数据的逼近来降维。常用来进行推荐(计算任何计算项的相似度)和提取主题。其公式为;这个分解会得到一个对角矩阵
,这些对角元素从大到小排列,称为奇异值。实际上,这里的奇异值和PCA中的特征值是有关系的,奇异值是
特征值的平方根。不同的是特征值分解对应的是方阵,而奇异值分解可以对应合作矩阵。

在实际应用中,一般对奇异值求平方和,使其可以达到总量的90%为止,或者对于上万特征,取奇异值排名前2000-3000的特征,这需要对数据有充分的了解。
(5)白噪声
白噪声和PCA一样,也是将数据投影到另一个空间,然后每个维度处于特征值来标准化这些数据,直观上就是一个多元高斯分布转化到了一个0均值,协方差矩阵为1的多元高斯分布。但是白噪声会增强数据中的噪声,因为他增强了数据的所有维度。一般在卷积神经网络中,白噪声和PCA都用的不多。
(6)缺失值的处理
对于缺失值的处理可以考虑填均值、众数、类似样本的值,忽略该样本、标记为特殊值等。
分别考虑连续数据还是离散数据是不同的。比如风霜雨雪之类的还是每天的气温。是否正太分布等。
对于离散数据一般考虑众数或者中位数;对于连续数据,需要曲线拟合。
随机森林缺失值处理,数值型一般用中位数、枚举型用众数,非高斯分布情况下,比较相似度
XGBOOST缺失值处理:将缺失内容看作稀疏矩阵,并不单独处理,而是看分在右子树或者左子树,看那一边效果好就分那一边。
(7)非平衡数据集的处理
调节多个分类器的阈值或者损失函数的权重,(代价敏感的学习),增加小类别的权重。
过采样或者欠采样
(8)数据扩增
在卷积神经网络 中,需要通过data arguement 来实现数据扩增,常用的数据增强的方法有 水平翻转、随机裁剪、平移变换、颜色、光照、对比度变换。
(9)数据数字化编码
对于非数值型特征,其预处理方法主要有:序号编码、热独编码、二进制编码。
像决策树、随机森林、朴素贝叶斯可以直接处理非数值特征。
(10)LDA
LDA也可以看作一个降维技术。其被映射的直线的W称为降维矩阵(考虑了类别分布的)