标准化、归一化 or 中心化?
注意:需要去除离群值时,当数据本身比较聚集,也就是离散程度不高,使用3 σ \sigma σ会比箱型图要好,因为这个时候的箱型图可能找不出离散值,都在1.5IQR以内。
为什么要线性变化
线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反而能提高数据的表现,这些性质是归一化/标准化的前提。比如有一个很重要的性质:线性变换不会改变原始数据的数值排序,那么数值缩放比例呢?
(1)某些模型求解需要
在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。如左图所示,未归一化/标准化时形成的等高线偏椭圆,迭代时很有可能走“之”字型路线(垂直长轴),从而导致迭代很多次才能收敛。而如右图对两个特征进行了归一化,对应的等高线就会变圆,在梯度下降进行求解时能较快的收敛。
(2)一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。
(3)无量纲化
例如房子数量和收入,因为从业务层知道,这两者的重要性一样,所以把它们全部归一化。 这是从业务层面上作的处理。
(4)避免数值问题
太大的数会引发数值问题。
有哪几种处理方式
(1)最小值归一化
x’ = (x - X_min) / (X_max - X_min)
(2)平均值归一化
x’ = (x - μ) / (X_max - X_min)
(3)非线性归一化
对数函数转换:y = log10(x)
反余正切函数转换:y = arctan(x) * 2 / π
注意:上述两种经常用在数据分化比较大的场景。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。
(4)标准化
Z-score规范化(标准差标准化 / 零均值标准化):标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。
x’ = (x - μ)/σ
(5)中心化
x’ = x - μ
何时要使用标准化
一般来说,不是输出结果范围有要求,都使用z-score比较好,因为z-score可以排除异常值和噪声的干扰。
SVM用高斯核的时候假设特征分布为圆形,即所有维度的方差都一样;
KNN需要进行距离的度量;
神经网络的坑以后再填吧。