机器学习中特征归一化

特征归一化的种类

特征归一化,主要指的就是将原先的特征空间通过某种特定的方式映射到另一个特征空间,比如[0,1],[-1,1]等等。比较常用的归一化方法有
1.min-max normalization
2.mean normalization
3.standardization(z-score)
4.scaling to unit length
总结起来,前3种方式都可以理解为先减去一个统计量,再除以一个统计量,而最后一种方式则是除以自身的长度。
从原理上来说,减去一个统计量可以理解为像某种中心点平移,一般会选择一些有意义的点比如最小值或均值。可以看作是某种偏置无关性操作。而除以一个统计量可以看作对特征进行缩放,用于降低尺度对特征本身的影响,可以看作是某种尺度无关操作。但是这里需要注意的一个点是,当我们使用最大最小值作为跨度区间的时候,outliers的存在就会对我们的归一化有很大的影响,也就是min-max normalization是对异常值敏感的,所以我们再使用min-max normalization时要特别注意这一点。最后除以自身长度可以理解为是长度归一化,把所有样本映射到单位球上,可以看作是某种长度无关操作。比如对于文本类的数据而言,我们想要知道一个词在某句话中的重要性,不能只是看它的出现次数,还需要考虑文本长度,那么这时就很适合做长度归一化处理。

什么时候需要特征归一化

1.算法涉及距离
很多时候,我们的归一化都是针对于消除距离的额外优势,所以当某个算法是涉或隐含距离计算的时候,我们往往需要做特征归一化,用来消除这种额外的优势。

就欧式距离而言,增大某个特征的尺度,可以理解为增加了它在距离计算中的权重,除非我们有明确的prior表明这个特征十分重要,不然的化我们还是需要对不同的feature做scaling,对各个维度特征平等对待。

常见的算法如KNN,PCA,SVM等都是需要做归一化的。

2.添加正则项
对于一般的线形模型而言,归一化的作用并不大,因为某一个特征的scale很大也会被系数给“吸收”(即系数会同等程度的收缩)。但是如果模型中存在正则项,比如L2,那么对于那些scale较大的特征i而言,它们的系数wi比较小,那么模型在考虑正则项λ∣∣w∣∣^2时,会相对忽略这个特征,因为wi的变化对于正则项值的变化影响程度极小。这样显然是不公平的,因此我们需要通过正则化来让损失函数平等看待每一个特征。

3.优化使用梯度下降算法
当我们使用梯度下降来进行损失函数优化时,使用特征归一化能够帮助模型更快的收敛,同时下降过程也会更加稳定。

什么时候不需要特征归一化

与距离无关的模型,比如一些概率模型,如naive bayes, 还比如一些树模型,因为树的分裂过程关注的是某一个特征中,选取哪个切分点最优,而与特征间的相对大小无关。

参考:解读:为什么要做特征归一化/标准化?

你可能感兴趣的:(机器学习基础,机器学习)