代码改变世界

对数据预处理的一点理解[ZZ]

2013-08-15 15:57  Batys  阅读(1554)  评论(0编辑  收藏  举报

数据预处理没有统一的标准,只能说是根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择相关的数据预处理技术,一般会用到多种预处理技术,而且对每种处理之后的效果做些分析对比,这里面经验的成分比较大,即使是声称数据挖掘专家的人可能在某一个方面研究得很深入,但面对新的应用情况和数据,一开始他也不可能很有把握地说能挖掘出有价值的东西,数据挖掘这个术语原来也叫数据采矿,就好比采矿,需要耐心,需要经验,学要总结。其本身是一个综合学科:人工智能,机器学习,数据库,统计学等学科的大综合。个人认为在挖掘中对某一个具体问题做过多的纠缠是无益的,理论上再适合,但没经过你动手去检验,去比较之前那都是虚的。数据挖掘是一个反复的过程,而不是一劳永逸的一次性处理,比如SPSS的CRISP-DM处理过程模型就是个很好的诠释。
    再就是在挖掘的每个过程中,个人认为采用组件化,模块化的思想会有不错的效果,比如预处理过程你选择那些处理模块(实际上就是处理技术,算法)的组合,挖掘模型中采用那些算法组件[聚类算法有那些,分类算法有那些]的组合,展示的时候采用那些展示组件[直方图,散点图,曲线图等...]进行对比。整个挖掘过程就个搭积木的过程,不同的搭配会有不同的效果,这就需要实验,分析,对比,再分析,再实验,再对比...

主要的数据预处理技术:

一、数据清理
通过填写空缺值,平滑噪声数据,识别删除孤立点,并解决不一致来清理数据,主要是达到如下目标:
格式标准化
异常数据清除
错误纠正
重复数据的清除

(1)数据集压缩处理,主要策略:
数据聚集
维规约
数据压缩
数据规约

(2)空缺值处理,主要策略:
忽略元组
人工填写空缺值
使用固定值
使用属性平均值
使用最有可能值

(3)噪声数据处理,主要策略:
数据平滑技术:
需要做分箱处理
箱的深度:表示不同的箱里有相同个数的数据。
箱的宽度:每个箱值的取值区间是个常数。
平滑方法:
按箱平均值平滑
按箱中值平滑
按箱边界值平滑

聚类技术:
每个簇中的数据用其中心值代替
识别检测并忽略孤立点

计算机和人工检查相结合技术:
先通过聚类等方法找出孤立点。这些孤立点可能包含有用的信息。
人工再审查这些孤立点

回归技术:
通过构造函数来符合数据变化的趋势,这样可以用一个变量预测另一个变量。
线形回归
多线形回归


二、数据集成:
将多个数据源中的数据结合起来并统一存储,建立数据仓库的过程实际上就是数据集成。
实体识别 实体和模式的匹配
冗余:某个属性可以由别的属性推出。
相关分析
重复 同一数据存储多次
数据值冲突的检测和处理

三、数据变换:
平滑
聚集
数据概化
规范化
  最小 最大规范化
  小数定标规范化
  属性构造:由给定的属性构造和添加新的属性,以帮助提高精度和对高维数据结构的理解


四、数据归约:
1、维归约
删除不相关的属性(维)来减少数据量。
属性子集选择
找出最小属性集合,使得数据类的概率分布尽可能地接近使用所有属性的原分布
如何选取?
贪心算法
逐步向前选择
逐步后向删除
向前选择和后向删除相结合
判定树归纳

2、数据压缩
有损,无损
小波变换
将数据向量D转换成为数值上不同的小波系数的向量D’.
对D’进行剪裁,保留小波系数最强的部分
主成分分析

3、数值归约
回归和对数线形模型
线形回归
对数线形模型
直方图
等宽
等深
V-最优
maxDiff
聚类
多维索引树 : 对于给定的数据集合,索引树动态的划分多维空间。
选样
简单选择n个样本,不放回
简单选择n个样本,放回
聚类选样
分层选样

五、离散化和概念分层
离散化技术用来减少给定连续属性的个数,这个过程通常是递归的,而且大量时间花在排序上。
对于给定的数值属性,概念分层定义了该属性的一个离散化的值。

数值数据离散化和概念分层生成方法有:
分箱
直方图分析

分类数据的概念分层生成方法有:
由用户和专家在模式级显式的说明属性的部分序
通过显式的数据分组说明分层结构的一部分
说明属性集,但不说明他们的偏序
只说明部分的属性集