数据预处理——标准化、归⼀化、正则化
三者都是对数据进⾏预处理的⽅式。
正则化的回归分析标准化(Standardization)
归⼀化(normalization)
正则化(regularization)
归⼀化(MinMaxScaler)
将训练集中某⼀列数值特征(假设是第i列)的值缩放到0和1之间。⽅法如下所⽰:
我们在对数据进⾏分析的时候,往往会遇到单个数据的各个维度量纲不同的情况,⽐如对房⼦进⾏价格预测的线性回归问题中,我们假设房⼦⾯积(平⽅⽶)、年代(年)和⼏居室(个)三个因素影响房价,其中⼀个房⼦的信息如下:
⾯积(S):150 平⽅⽶
年代(Y):5 年
这样各个因素就会因为量纲的问题对模型有着⼤⼩不同的影响,但是这种⼤⼩不同的影响并⾮反应问题的本质。
为了解决这个问题,我们将所有的数据都⽤归⼀化处理⾄同⼀区间内。
标准化(StandardScaler)
训练集中某⼀列数值特征(假设是第i列)的值缩放成均值为0,⽅差为1的状态。标准化之后,数据的范围并不⼀定是0-1之间,数据不⼀定是标准正态分布,因为标准化之后数据的分布并不会改变,如果数据本⾝是正态分布,那进⾏标准化之后就是标准正态分布。
综上:在PCA,聚类,逻辑回归,⽀持向量机,神经⽹络这些算法中,StandardScaler 往往是最好的选择,
1、归⼀化和标准化的相同点都是对某个特征(column)进⾏缩放(scaling)⽽不是对某个样本的特征向量(row)进⾏缩放。对⾏进⾏缩放是毫⽆意义的。⽐如三列特征:⾝⾼、体重、⾎压。每⼀条样本(row)就是三个这样的值,对这个row⽆论是进⾏标准化还是归⼀化都是⽆意义的,因为你不能将⾝⾼、体重和⾎压混到⼀起去。
2、标准化/归⼀化的好处
提升模型精度:基于距离的算法,例如Kmeans、KNN等,各个特征的量纲直接决定了模型的预测结果。举⼀个简单的例⼦,在KNN 中,我们需要计算待分类点与所有实例点的距离。假设每个实例点(instance)由n个features构成。如果我们选⽤的距离度量为欧式距离,如果数据预先没有经过归⼀化,那么那些绝对值⼤的features在欧式距离计算的时候起了决定性作⽤。对于PCA,如果没有对数据进⾏标准化,部分特征的所占的信息可能会虚⾼。
提升收敛速度:例如,对于线性model来说,数据归⼀化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。对于SVM标准化之后梯度下降的速度加快。
3、标准化/归⼀化的对⽐分析
⾸先明确,在机器学习中,标准化是更常⽤的⼿段。
MinMaxScaler对异常值⾮常敏感。例如,⽐如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,⽤归⼀化的⽅法后,正常的1,2就会被“挤”到⼀起去。在PCA,聚类,逻辑回归,⽀持向量机,神经⽹络这些算法中,StandardScaler往往是最好的选择。
当数据需要被压缩⾄⼀个固定的区间时,我们使⽤MinMaxScaler.
4、在逻辑回归中需要使⽤标准化么?
如果你不⽤正则,那么,标准化并不是必须的,如果你⽤正则,那么标准化是必须的。为什么呢?因为不⽤正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上⾯的差距外,还要度量参数值是否⾜够⼩。⽽参数值的⼤⼩程度或者说⼤⼩的级别是与特征的数值范围相关的。
举⼀例来说,我们预测⾝⾼,体重⽤kg衡量时,训练出的模型是:⾝⾼ = x*体重+y*⽗母⾝⾼,X是我们训练出来的参
数。当我们的体重⽤吨来衡量时,x的值就会扩⼤为原来的1000倍。在上⾯两种情况下,都⽤L1正则的话,显然当使⽤kg作为单
位时,显然对模型的训练影响是不同的。
再举⼀例来说,假如不同的特征的数值范围不⼀样,有的是0到0.1,有的是100到10000,那么,每个特征对应的参数⼤⼩级别也会不⼀样,在L1正则时,我们是简单将参数的绝对值相加,因为它们的⼤⼩级别不⼀样,就会导致L1会对那些级别⽐较⼤的参数正则化程度⾼,那些⼩的参数都被忽略了。
就算不做正则化处理,建模前先对数据进⾏标准化处理也是有好处的。进⾏标准化后,我们得出的参数值的⼤⼩可以反应出不同特征对label的贡献度,使参数具有可解释性。
5、有些需要保持数据的原始量纲的情况下,不能对数据进⾏标准化或者归⼀化处理。例如,制作评分卡
正则化
正则化主要⽤于防⽌过拟合
我们在训练模型时,要最⼩化损失函数,这样很有可能出现过拟合的问题(参数过多,模型过于复杂),所以我么在损失函数后⾯加上正则化约束项,转⽽求约束函数和正则化项之和的最⼩值。
上式中,蓝⾊部分即为损失函数,红⾊部分是正则化项(参数的2-范数)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论