2-1、归一化

来源:互联网 发布:期货分钟数据下载 编辑:程序博客网 时间:2024/06/16 09:28

一、 方法引入

数据归一化处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。

有人说,标准化处理数据是一个建模手的基本素养。这样的说法过于绝对,毕竟所有方法都有适用领域,但是这样的说法也充分说明了归一化处理方法的普遍性与重要性。

二、 方法简介

归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式。这种方法在机器学习领域出现频率极高,例如在神经网络预测前对数据处理就常常需要用到归一化方法,其目的是取消各维数据间数量级差别,避免因为输入输出数据数量级差别较大而造成网络预测误差较大。
而数据归一化最常见的方法主要有以下两种:
1、 最大最小法
2、 平均数方差法

三、 方法实现

最大最小法

最大-最小标准化是对原始数据进行线性变换,设 minAmaxA 分别是属性 A 的最小值和最大值,将 A 的一个原始值 x 通过最大-最小标准化映射到区间[0, 1]的值 x,那么公式如下:

x=xminAmaxAminA

Z-score标准化

Z-score标准化是基于原始数据的均值和标准差进行的数据标准化。将属性 A 的原始数据 x 通过Z-score标准化成 x。Z-score标准化适用于属性 A 的最大值或者最小值未知的情况,或有超出取值范围的离散数据的情况。

x=xμσ

其中 μ 为均值, σ 为标准差。Z-score标准化得到的结果是所有数据都聚集在0附近,方差为1。

可以看到,两种方法都较好理解与实现。正是由于标准化处理的普遍性,现在绝大部分软件或者语言都有包装好的标准化处理函数。在数学建模比赛中,将表格数据导入excel中,通过excel就可以进行标准化处理数据,当然通过R或者SPSS都是可以轻松对数据进行处理的。这里用Matlab进行简单演示。

例题:
某班的10名同学参加两场英语考试,第一场考试是百分制考试,第二场考试是十分制考试,现在结合这两场考试的成绩筛选出2名最优秀的成员参加英语竞赛。数据如下:
第一场考试成绩:100 ,92 ,89 , 78 ,95 ,77 , 84 ,96 ,88 ,95
第二场考试成绩:9.8 ,8 ,9 ,7.8 ,9 ,8.7 ,7.9 ,9.4 ,9.6 ,8

如果不对两组数据进行归一化处理,则得到的综合成绩应是:
109.8 ,100 ,98 ,85.8 ,104 ,85.7 ,91.9 ,105.4 ,97.6 ,103

现在进行对其使用最大最小法处理数据再进行计算
代码:

    clear    clc    first=[100,92,89,78,95,77,84,96,88,95];    second=[9.8,8,9,7.8,9,8.7,7.9,9.4,9.6,8];    first_sim=mapminmax(first,0,1);     second_sim=mapminmax(second,0,1);     %同时使用Matlab包装好的函数进行[0,1]之间的标准化处理    all=(first_sim+second_sim)/2; 

最后选出第一名和第七名同学参加竞赛

而如果用Z-score标准化在matlab中也是一样轻松,直接调用zscore函数即可。
在处理数据是我们需要对归一化处理方法较为敏感,同时也能够区分所处情形该方法是否适用。

本文编写参考了以下网址:
http://www.cnblogs.com/chaosimple/archive/2013/07/31/3227271.html
http://blog.csdn.net/acdreamers/article/details/44664205
https://baike.so.com/doc/5331658-5566896.html
http://www.ilovematlab.cn/viewthread.php?tid=12186

原创粉丝点击