机器学习中数值型特征做特征归一化

今天去某外卖平台面试机器学习算法工程师,二面时面试官问到数值型特征工程,提到归一化,按常规想法就是MinMaxScaler或Zscore。本以为回答完美,但被面试官追问,为什么做归一化,做与不做,有什么区别?这让我猝不及防,就按自己的理解说,某些特征的数值相较其他特征数值范围差异大,在算法的训练中,对结果受影响。面试官又问什么程度是大?被这追问问的头皮发麻。后面又提到数值型特征也可以用对数?又被问什么用对数,我就说对数是针对某些指数型数据特征,降低数据的长度,有助于模型的训练,加速训练。这个时候也不知道自己说的对不对,脑子问的一片空白。这就是自己学艺不精,也是面试官的压力测试,不停追问为什么。

现在回到家,静静的梳理一下今天下午的问题吧

特征归一化(Feature Scaling),这也是许多机器学习模型都需要注意的问题。

有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据占有优势。

有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

做归一化有什么好处呢?

其一是提升模型训练速度。

比如就两个特征,一个特征取值为0~2000,而另一个特征取值为1-5,对其进行优化时,会得到一个长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代慢。相比之下,做过鬼优化的迭代就会很快。

Feature Scaling:(make sure features are on a similar scale)

其二,提升模型的精度。

在涉及到一些距离计算的算法时效果显著,比如算法要计算欧式距离。做归一化很有必要,可以让各个特征对结果做出的贡献相同。

关于归一化的选择:

1)在分类、聚类算法中,需要使用距离来度量相似性的时候,或者使用PCA技术进行降维的时候,用Zscore表现更好。

2)在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用minmaxscore或其他归一化方法。

你可能感兴趣的:(机器学习算法系列)