为什么要对数值类型的特征做归一化
常用的归一化方法
- 线性函数归一化(原始数据线性变换,映射到[0,1]范围,)
Xnorm=X−XminXmax−XminX_{norm} = \frac{X-X_{min}}{X_{max} - X_{min}}Xnorm=Xmax−XminX−Xmin
X为原始数据,Xmax,XminX_{max},X_{min}Xmax,Xmin表示的是最大和最小值 - 零均值归一化(原始数据映射到均值0,标准差1的分布上)
- 原始特征均值υ\upsilonυ 标准差为σ\sigmaσ
z=x−υσz = \frac{x- \upsilon}{\sigma}z=σx−υ
数值型特征做归一化的原因
在随机梯度下降中,更新速度更一直,容易更快通过梯度下降找到最优解
哪些机器学习算法不需要做归一化处理
在实际情况中,通过梯度下降求解的模型一般需要归一化
例如:线性回归,LogisticRegression,KNN,SVM,神经网络等模型
树模型不需要归一化,因为他们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树,随机森林。
- 数值缩放不影响分裂点的位置,对树模型的结构不造成影响,按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同,
- 树模型不能进行梯度下降,因为构建树模型(回归树)寻找最优点时是通过最优分裂点完成的树模型是阶跃的,阶跃点是不可导的,并且求导没意义,所以也就不需要归一化
标准化
特征寻址为0,方差为1
公式
x−np.mean(x)np.std(x)\frac{x-np.mean(x)}{np.std(x)}np.std(x)x−np.mean(x)
常见的归一化形式,
- 特征向量调整L1范数(绝对值相加),特征向量的数值之和为1
- L2范数就是欧几里得之和
这个方法经常用于确保数据点没有因为特征的基本性质而产生较大差异,即确保数据处于同一数量集(同一量纲),提高不同特征数据的可比性。