在做一个具体的机器学习项目中,拿到收集到的数据后,一般都是需要做数据预处理,而标准化(暂时不考虑标准化和归一化的主要区别)是数据预处理中一个比较重要的环节,那么为什么需要对数据进行标准化处理呢?
数据标准化原因:
1、消除量纲或数值对计算结果的影响;
如果你的数据中含有两个特征分别为体重和身高,其中体重的单位是kg,而身高的单位是m,我们知道一般成年人的体重范围大概是40-150kg,一般成年人的身高一般在1.2-1.9m,若不做标准化处理,应用基于距离的模型的话,因为体重的数值偏大,而身高的数值偏小,会导致距离的计算结果严重的依赖于体重,而身高对距离计算结果的影响很小。
2、模型要求数据假定服从相应的分布
有的模型会存在一定的假设条件的,只有在满足条件的情况下模型才是可信的。比如线性回归要求误差服从正态分布等。
3、将数据缩放到指定的区间上
如果数据中的数值特别大或者是特别的小,在模型计算的过程中就会存在超出数值的精度范围。比如在单精度类型的数据表示范围:+-3.4*10^(-38)~~~+-3.4x10^38,如果数据中的数值本省就特别大或者是特别的小,模型计算复杂的话就会存在超过单精度类型的范围,致使你的程序报错。
综上三点总结了数据标准化的原因,下面介绍一些常用的数据标准化方法。
常用数据标准化方法
1、0-1标准化/min-max标准化
0-1标准化主要是将数据变化到[0,1]的范围内,假设样本为
不管是上面的那种数据标准化方法数据中的异常值对标准化的结果影响严重,所以在做标准化的时候一定要看看数据异常值。
2、z-score标准化
z-score标准化也叫标准差标准化,主要是使标准化后的数据服从正态分布,其数学公式为:
3、log转换
log转换通常也称为对数变换,在时间序列分析中是比较常用。在常规的数据挖掘中如果数据中的某个维度的数是某个数的幂的时候,这时可以直接用log转换。
如果感兴趣请关注微信公众号:洞察数据挖掘价值。