专注于计算机视觉与机器学习知识分享
编者荐语
特征缩放(Feature Scaling)是将不同特征的值量化到同一区间的方法,也是预处理中容易忽视的关键步骤之一。除了极少数算法(如决策树和随机森林)之外,大部分机器学习和优化算法采用特征缩放后会表现更优。因为在原始的资料中,各变数的范围大不相同。
1. 为什么要做特征缩放
统一特征的权重&提升模型准确性
如果某个特征的取值范围比其他特征大很多,那么数值计算(比如说计算欧式距离)就受该特征的主要支配。但实际上并不一定是这个特征最重要,通常需要把每个特征看成同等重要。归一化/标准化数据可以使不同维度的特征放在一起进行比较,可以大大提高模型的准确性。
提升梯度下降法的收敛速度
在使用梯度下降法求解最优化问题时, 归一化/标准化数据后可以加快梯度下降的求解速度。
zigzag
大多数情况下,你的数据集将包含在大小、单位和范围上差别很大的特征。但是,由于大多数机器学习算法在计算中使用两个数据点之间的欧氏距离,这会是一个问题。
不同单位之间的处理
如果不加考虑,这些算法只考虑特征的大小而忽略了单位。在5kg和5000gms不同的单元之间,结果会有很大的差异。在距离计算中,大尺度的特征比小尺度的特征要重要得多。
为了抑制这种效果,我们需要将所有特征都处理成相同的级别。这可以通过缩放来实现。
2.如何对特征进行缩放
有4中常用的方法可以来做特征的缩放。
3.什么时候进行特征缩放
k-最近邻具有欧氏距离度量,对大小敏感,因此应该对所有特征进行缩放,使其尺度相同。
主成分分析(PCA),缩放是关键。主成分分析试图得到方差最大的特征,对于高幅值特征,方差较大。这使得PCA倾向于高幅值特征。
梯度下降可以通过缩放进行加速。这是因为θ在小尺度上会下降的很快,在大尺度上会很慢,所以,变量尺度不均匀的时候,在最优化的路径上会有震荡(折线型),效率下降。
基于树的模型不是基于距离的模型,可以处理不同范围的特性。因此,建模树时不需要缩放。
线性判别分析(LDA)、朴素贝叶斯等算法设计的时候就准备好了处理这一问题,并相应地赋予特征权重。在这些算法中执行特征缩放可能没有多大效果。
部分内容来源于网络,如果侵权请联系删除。由于文章本身的笔记属性,可能除了大致的逻辑,或多或少的会引入一些小错误,如果发现错误可以及时指出,以免由于作者的水平有限而误导他人。