在机器学习进行数据处理前,首先要保证所有数据是无量纲的,并且数据是可以比较的,需要采用标准化方法来消除不同数据之间存在的差异。将原始数据进行处理,变为无量纲可比较的过程实际可以看做是归一化的过程。
目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。
常见的方法有:min-max标准化(min-max normalization)、log函数转换、atan函数转换、z-score标准化(zero-mena normalization,此方法比较常用)、模糊量化法。
常用的数据变换方法:
在做灰色关联分析上的运用具体参考CSDN博主「cuntou0906」的原创文章,原文链接:https://blog.csdn.net/weixin_44231148/article/details/120046823
三种最常用的归一化方法:
1、min-max法(规范化方法)
min-max法也叫离差标准化,是对原始数据的线性变换,使结果映射到[0,1]区间。此方法类似于区间值变换方法。
这里特别用matlab中的mapminmax函数的使用来进行说明,mapminmax函数使用方法:
训练数据归一化函数 mapminmax() 默认归一化区间[-1,1],如果需要其他区间,则格式改成:[Y,PS] = mapminmax(X,0,1)归一化到区间[0,1]。
函数调用格式:
(1) [Y1,PS] = mapminmax(X1)
对 X1 的每一个元素采用的规范标准化映射为: f: Y1 = (X-Xmin)/(Xmax-Xmin) (映射过程记录在PS中 ,这个PS在后续数据预测结果反归一化时会用到)
(2) Y2 = mapminmax('apply',X2,PS)
对 X 采用的规范化映射为: f:Y = (X-Xmin)/(Xmax-Xmin) ,(记录在PS中),对 X2 也采取X1这个映射 PS进行与X1一致的规范化处理。
(3) X1 = mapminmax('reverse',Y1,PS),将归一化的数据Y1按照PS映射规则反归一化再得到原来的数据X1。
我在某数据预测中主要用到以上三种格式,其他不在赘述。
2、z-score法(正规化方法)
(1) 这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到y。
(2) z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。
(3) SPSS默认的标准化方法就是z-score标准化。
(4) z-score的简单化模型:y=1/(1+x) ,x越大证明y越小,这样就可以把很大的数规范在[0-1]之间了。
3、比例法(归一化方法)
该方法是针对全部数据为正值的序列。
原理介绍参考CSDN博主「样young」的原创文章,原文链接:https://blog.csdn.net/jisuanjiguoba/article/details/86439375
在使用中我主要用过min-max法(规范化方法)、初值化、均值化,之后有其他方法的使用再贴上我的使用经验总结。
本文主要是为方便查找资料将别人文章原理介绍粘贴汇总至此同时附上部分自己使用的经验总结,便于以后需要可以随时打开,理解不当之处感谢指正!