什么是特征?
特征就是描述一个事物的属性。例如:一个人的属性可以有姓名、性别、年龄等。一个事物可以有多个特征,在机器学习中可以有选择性的选择需要的特征训练模型。
在机器学习中,通常认为数据和特征决定了结果的上限,而模型和算法只是逼近这个上限而已。因此,没有合适的特征,即使数据量再大,模型和算法再合适也不会得到理想的结果。
什么是特征归一化?
对特征进行归一化处理是为了消除数据特征之间量纲对结果的影响,使模型在训练过程中不同的特征之间具有可比性。比如:对一个人的身体状况进行分析时的身高和体重,身高大多分布在1.6m----1.9m之间,而体重一般在50kg----100kg的范围内(采用m和kg作为单位的时候)。采用这种方式分析得到的结果会倾向于数值较大的体重特征。此时,要想得到理想的结果,就需要对特征进行归一化,使各种特征处于同一数量级。
常用的归一化方法有哪些?
这里只探讨对数值型数据的归一化方法。对于数值型数据常用的归一化方法有:线形归一化和零均值归一化。
- 线形归一化:对原始数据进行线形变换,使数据映射到[0,1]之间,实现数据的等比例缩放。具体公示如下:
Xnorm = (X - Xmin)/(Xmax - Xmin)
其中,X是原始数据,Xmin是数据的最小值,Xmax是数据的最大值。
- 零均值归一化:把原始数据变换到均值为0,方差为1的分布上。具体来说,假如原始数据的均值为a,方差为b,归一化公示可以表示如下:
Xnorm = (X - a)/b
为什么需要特征归一化?
对数据进行归一化的主要原因有两个:
- 使各种特征处于同一数量级,从而使模型不会偏向某一个特征,使用结果更理想(具体解释请参考什么是特征归一化);
- 加快模型收敛到最优解的速度。具体解释如下:
这里借梯度下降说明归一化的重要性。假如两种数值型特征,x1的取值范围是[0,10],x2的取值范围是[0,3]。于是可以构造如图1(a)所示的等高线图。在学习速率相同的情况下,x1的更新速度回大于x2,需要较多次迭代才可以找到最优解。如果把x1和x2归一化到相同的数值范围,优化后的数值曲线呈图1(b)所示的圆形,x1和x2的更新速度一致,可以更快的得到最优解。
图1 数据归一化对梯度下降速度产生的影响
哪些模型需要进行归一化?
需要通过梯度下降求解的模型通常是需要归一化的,需要归一化的模型有:线形回归、逻辑回归、支持向量机、神经网络等。而决策树并不适用归一化,以C4.5为例,决策树在进行节点分裂的时候采用数据集关于特征x的增益比,而增益比与特征是否进行归一化是无关的,因为归一化不改变特征的信息增益。
来源:百面机器学习