数据挖掘过程中:数据预处理

 在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。
数据的标准化过程也是归一化的过程。

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

数据归一化的目的是为了把不同来源的数据统一到一个参考系下,这样比较起来才有意义。

1 定义

归一化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。

2 为什么要用归一化呢?

首先先说一个概念,叫做奇异样本数据,所谓奇异样本数据数据指的是相对于其他输入样本特别大或特别小的样本矢量。

下面举例:

m=[0.11 0.15 0.32 0.45 30;

0.13 0.24 0.27 0.25 45];

其中的第五列数据相对于其他4列数据就可以成为奇异样本数据(下面所说的网络均值bp)。奇异样本数据存在所引起的网络训练时间增加,并可能引起网络无法收敛,所以对于训练样本存在奇异样本数据的数据集在训练之前,最好先进形归一化,若不存在奇异样本数据,则不需要事先归一化。

3 归一化方法

主要有如下几种,供大家参考:(by james)

(1)线性函数转换,表达式如下:

y=(x-MinValue)/(MaxValue-MinValue)

说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。

在统计学中,归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。

(2)对数函数转换,表达式如下:

y=log10(x)

说明:以10为底的对数函数转换。

进行Log分析时,会将原本绝对化的时间序列归一化到某个基准时刻,形成相对时间序列,方便排查。

通过以10为底的log函数转换的方法同样可以实现归一下,具体方法也可以如下:

看了下网上很多介绍都是x‘=log10(x),其实是有问题的,这个结果并非一定落到[0,1]区间上,应该还要除以    log10(max),max为样本数据最大值,并且所有的数据都要大于等于1。

(3)反余切函数转换,表达式如下:

y=atan(x)*2/PI

归一化是为了加快训练网络的收敛性,可以不进行归一化处理

(4)z-score 标准化(zero-mean normalization)

也叫标准差标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

4 在matlab里面,用于归一化的方法共有三种:

(1)premnmx、postmnmx、tramnmx

(2)prestd、poststd、trastd

(3)是用matlab语言自己编程。

premnmx指的是归一到[-1 1];prestd归一到单位方差和零均值;关于自己编程一般是归一到[0.1  0.9] 。

5 注意
需要说明的事并不是任何问题都必须事先把原始数据进行规范化,也就是数据规范化这一步并不是必须要做的,要具体问题具体看待,测试表明有时候规范化后的预测准确率比没有规范化的预测准确率低很多.就最大最小值法而言,当你用这种方式将原始数据规范化后,事实上意味着你承认了一个假设就是测试数据集的每一模式的所有特征分量的最大值(最小值)不会大于(小于)训练数据集的每一模式的所有特征分量的最大值(最小值),但这条假设显然过于强,实际情况并不一定会这样.使用平均数方差法也会有同样类似的问题.故数据规范化这一步并不是必须要做的,要具体问题具体看待.

归一化首先在维数非常多的时候,可以防止某一维或某几维对数据影响过大,其次可以程序可以运行更快。方法很多,min-max,z-score,p范数等,具体怎么使用,要根据数据集的特征来选择。

原文发布时间为:2013-09-10


时间: 2024-10-27 12:08:34

数据挖掘过程中:数据预处理的相关文章

数据挖掘-Logistic回归数据预处理问题

问题描述 Logistic回归数据预处理问题 我在做一个新闻数据集的分类,用Logistic回归模型.(数据集来源:http://archive.ics.uci.edu/ml/datasets/Online+News+Popularity) 这个数据集中的数据类型比较杂,有离散的数据也有连续的,有些范围在1以内,有些可以达到几十万,请问对这样的数据可以采用一些什么样的方法预处理,使之适用于Logistic回归? 解决方案 分类数据之logistic回归Logistic 回归Logistic回归p

大家在做Hadoop优化过程中数据都是哪里获取的

问题描述 大家通过什么方式进行数据的仿真,大家所需的大数据都是哪里获取的,比如并行实现了某项算法或者优化了副本的数量,大家的实验数据来源都是在哪里找到的.还有在实验条件有限的环境下可以租用免费的服务器进行试验吗,自己配置的完全分布式环境太小了. 解决方案 解决方案二:读研时没搞这方面,数据来源不清楚,但是机器实验室还是有几个的,实验室没机器就没辙了~~~

AES加解密在php接口请求过程中的应用示例_php实例

在php请求接口的时候,我们经常需要考虑的一个问题就是数据的安全性,因为数据传输过程中很有可能会被用fillder这样的抓包工具进行截获.一种比较好的解决方案就是在客户端请求发起之前先对要请求的数据进行加密,服务端api接收到请求数据后再对数据进行解密处理,返回结果给客户端的时候也对要返回的数据进行加密,客户端接收到返回数据的时候再解密.因此整个api请求过程中数据的安全性有了一定程度的提高. 今天结合一个简单的demo给大家分享一下AES加解密技术在php接口请求中的应用. 首先,准备一个AE

AES加解密在php接口请求过程中的应用示例

在php请求接口的时候,我们经常需要考虑的一个问题就是数据的安全性,因为数据传输过程中很有可能会被用fillder这样的抓包工具进行截获.一种比较好的解决方案就是在客户端请求发起之前先对要请求的数据进行加密,服务端api接收到请求数据后再对数据进行解密处理,返回结果给客户端的时候也对要返回的数据进行加密,客户端接收到返回数据的时候再解密.因此整个api请求过程中数据的安全性有了一定程度的提高. 今天结合一个简单的demo给大家分享一下AES加解密技术在php接口请求中的应用. 首先,准备一个AE

现代C++中的预处理宏

现代C++中的预处理宏 --徐东来 摘要:在C++从C继承的遗产中,预处理宏是其中的一部分.在现代C++的发展过程中,预处理宏是否还有意义?本文将讨论之. 关键字:预处理 宏 #define #pragma      C++中有那么多灵活的特性,例如重载.类型安全的模板.const关键字等等,为什么程序员还要写"#define"这样的预处理指令?    典型的一个例子,大家都知道"const int a=100;"就比"#define a 100"

使用IBM SPSS Modeler进行数据挖掘工作中的数据理解工作

在数据挖掘项目中,数据理解常常不被重视.但其实数据理解在整个数据挖掘项目中扮演着非常重要的角色,可以说是整个项目的基石.在计算机领域有一句话,"Garbage in,garbage out." 意思就是说,如果你的输入数据没有经过科学的预处理,你所得到的结果必将是错误的.通过数据理解,我们可以理解数据的特性和不足,进而对数据进行预处理,使得将来得到的模型更加稳定和精确.其次通过理解数据项之间的关系,我们可以为建模时输入数据项和模型的选择提供重要的信息. 首先,我们需要了解 CRISP-

《移动数据挖掘》—— 第2章 移动数据预处理 2.1 移动数据简介

第2章 移动数据预处理 第2章 移动数据预处理在本章中,首先对移动数据及其特性进行介绍,再介绍针对移动数据的预处理.因为移动数据的挖掘是从原始移动数据.语义移动数据等多个层次进行的,在挖掘时总是会出现各种各样的数据缺失或数据异常.因此,本章的数据预处理包括缺失数据补全.重要地点检测.语义信息标注三个方面,预处理的目的就在于更好地为后续移动数据的挖掘和分析做准备. 2.1 移动数据简介 移动数据的类型众多.范围较广,有来自于人类日常生活中使用手机等智能设备留下的印记,也有为研究人类和动物等的日常行

谷歌发布全新TensorFlow库“tf.Transform” 简化机器学习数据预处理过程

在实际的机器学习开发中,开发者通常需要对数据集进行大量的耗时费力的预处理过程,以适应各种不同标准的机器学习模型(例如神经网络).这些预处理过程根据待解问题的不同和原始数据的组织形式而各不相同,包括不同格式之间的转换,分词.词干提取和形成词汇,以及包括归一化在内的各种数值操作等等.实际上,数据的预处理已经成为了机器学习开发中无法回避的一个难题. 针对这一难题,谷歌于 22 日通过开发者博客正式发布了一个基于 TensorFlow 的全新功能组件 -- tf.Transform.它允许用户在大规模数

机器学习项目中的数据预处理与数据整理之比较

要点 在常见的机器学习/深度学习项目里,数据准备占去整个分析管道的60%到80%. 市场上有各种用于数据清洗和特征工程的编程语言.框架和工具.它们之间的功能有重叠,也各有权衡. 数据整理是数据预处理的重要扩展.它最适合在可视化分析工具中使用,这能够避免分析流程被打断. 可视化分析工具与开源数据科学组件之间,如R.Python.KNIME.RapidMiner互为补充. 避免过多地使用组件能够加速数据科学项目.因此,在数据准备步骤中利用流式获取框架或流式分析产品会是一个不错的选择. 机器学习和深度