我们知道在做机器学习算法时,如果是线性模型(LR,深度学习,逻辑回归等)需要进行特征的标准化,而非线性模型(决策树,随机森林等)对数据范围不敏感的模型则不需要进行标准化操作,而这两种操作都是一种线性变换,线性变换有个特性就是不会改变原有数据的数值排序
- 最大最小归一化:计算规则是用每个x值-Xmin/(Xmax-Xmin);优点是可以使不同量纲的特征有可比性,能加快梯度下降加上模型收敛;缺点是极以受异常点的干扰,而且有新数据加入的时候也会到导致min max发生变化从而导致需要重新计算,另外如果异常值过大,会导致正常的值被挤到一起(比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去),这样就会导致我们使用梯度下降来优化模型时,模型很难收敛,因为他要尝试将挤到一起的值区分开;适用于小数据集没有异常数据的精确场景
- z-score 标准化:比归一化更常用,计算规则是每个x值-均值/标准差,将数据规整到一个均值为0标准差为1的分布上,标准化相比于归一化能更好的保持样本间距,不能使数据挤到一起,可以消除分布带来的度量偏差(例如:班级数学考试,数学成绩在90-100之间,语文成绩在60-100之间,那么,小明数学90,语文100,小花数学95,语文95,如何评价两个综合成绩好坏的数学处理方式。)
注意:线性模型一定需要进行标准化吗?
答案是不一定的,准确的说,如果线性模型没有正则项则不需要进行标准化,因为损失=预测值于真实值的误差+正则化,如果不进行标准化,那么参数值就会由数据的大小决定,对于数值大的特征对于的参数也会比较大,这样就会导致正则化的时候这类的参数贡献的损失也比较大,然后就导致模型只关注到了这些数值大的特征而忽略了数值小的特征
参考:https://www.cnblogs.com/nxf-rabbit75/p/10688593.html
https://wap.sciencenet.cn/blog-587102-1268508.html?mobile=1