在《数据分析的高级应用,是时候搞懂数据挖掘了》一文中,为大家详细介绍了数据挖掘的商业价值,但是质量不高的数据会直接影响挖掘结果,可能导致得出错误的商业结论。
跨行业数据挖掘标准流程(CRISP-DM)把完整的数据挖掘过程定义为六个标准阶段,分别是业务理解、数据理解、数据准备、创建模型、模型评估和模型应用。
其中,数据准备是数据挖掘流程中的一个重要环节。具体工作主要包括清理、规约、转换、抽样等一系列的预处理工作,提高数据的质量,使得数据挖掘算法可以更高效的执行以及获得更加有效的结果。
为什么要预处理数据
有些小伙伴可能会问,我的数据有现成的,为什么还要预处理数据,不能直接拿来进行数据挖掘吗?回答是,当然能。但是,现实往往是残酷的!
1. 现实世界的数据是肮脏的(不完整,含噪声,不一致)。
2. 没有高质量的数据,就没有高质量的挖掘结果。
3. 原始数据中存在很多问题,
- 不一致 :数据内部出现不一致情况
- 不正确:输入的数据不符合字段的有效值
- 不准确:数据可能是正确的,但是不准确
- 重复数据:重复输入的数据
- 不完整 :感兴趣的属性值没有
- 含噪声:数据中存在着错误、或异常(偏离期望值)的数据
- 高维度:存在信息冗余的多个属性。
- 违反业务规则:例如起始日期大于截止日期等情况
有哪些数据预处理方法
常用的数据预处理方法可以归纳为四个方面。
1、数据清理
- 缺失值处理:数据中的缺失值会影响挖掘的正常进行,造成挖掘结果不正确。对较大比例的缺失值可以进行忽略处理,少量的缺失值可以采用最大、最小、均值、中位数、自定义表达式等方式进行填充。
- 数据集成与过滤:用于去除冗余数据、进行重复值检测、编码一致性、数据一致性等。
2、数据规约
- 维规约:减少所考虑的随机变量或属性的个数(主成分分析PCA)。例如,一个汽车数据的样本,里面既有“千米/每小时”的速度特征,也有“英里/小时”的速度特征,显然有一个多余,需要消除冗余的特征。
- 数量规约和压缩:用替代的、较小的数据表示形式替换原数据。例如,不同年份的数据特征基本一样,可以只保留一个年份的数据进行挖掘。
3、数据变换
- 属性构造:从给定属性构造新的属性,或者将属性类别进行变换,辅助数据挖掘过程。例如根据月收入和奖金等属性可以构造出年收入,便于用来预测年收入。
- 归一化:将不同度量方式的数据放在同一个度量体系中进行比较。比如通过min-max标准化方法来求某个字段A的新值,然后进行比较分析。归一化是为了后面数据挖掘算法的方便,保正程序运行时收敛加快,提高挖掘的精度。
- 标准化:数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。可以通过z-score方法对原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化,同时不改变原始数据的分布。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
- 离散化:也叫分箱,将数值属性的原始值用区间标签或概念标签进行替换。如年收入数据,可以通过2-3W、3-5W等区间符号标识,也可以用高收入、中等收入、低收入进行离散化。
4、数据抽样
通过数据抽样来减少用于挖掘的数据量或者从一个大型数据集中提取大小固定的样本。
- 随机抽样:按一定比例或者固定行数从总体中随机的抽取样本。
- 分层抽样:将总体数据分成若干组或者分层,然后从分层中按比例或者固定个数抽取样本。如果数据按层分布的特征比较明显,可以采用分层抽样,减少随机抽样造成的信息丢失。
如何进行数据预处理
进行数据预处理的一般流程为:
我们在网上找到了泰坦尼克乘客数据集(该数据集被评为五大最适合数据分析练手项目之一),想对该数据集进行乘客是否存活的分类挖掘,下期为大家介绍。
这次将为大家介绍如何利用豌豆DM工具的可视化数据探索和预处理功能,提高泰坦尼克乘客数据集的质量,便于后续的挖掘。
上图是泰坦尼克乘客数据集导入后的所有字段,可以看到数据集有12个字段(特征),除了Survived(表示是否获救)外,其他是乘客的信息,为方便识别,我们利用豌豆DM为每个字段加了中文标题。
第一步:数据探索
豌豆DM数据探索提供图表与图形帮助理解数据集统计信息。
泰坦尼克乘客数据集一共有891条记录,其中Age,Cabin和Embarked三个字段有缺失值,为了准确的挖掘,该数据集有下面几个问题需要处理:
缺失值字段的处理
- Cabin字段缺失值占比太高,后续不纳入数据挖掘过程。
- Age字段缺失值较少,且数据呈正态分布,考虑用平均值填充缺失值。
字段离散化
- 要按年龄段分析获救人员情况,需要要将Age字段按年龄段分组为少年儿童、中青年、老年人。
值替换
- 要进行分析的Survived字段用1和0分别表示是否获救,不够直观,需要替换为更为直观的 Yes和No。
第二步:数据处理
豌豆DM提供了一些简便易懂的可视化数据预处理方式,能够完成不同的数据预处理工作。
先用WonderDM创建一个自定义数据集,在这个新数据集上进入”数据预处理”,通过“添加操作”菜单,添加需要的数据预处理操作。
1、设置数据源,选择创建的titanic数据集对应的表。
2、添加“值替换”,将Age字段空值替换为平均值。
3、 添加“离散化”,对Age字段离散化,分为三个年龄段,离散化后的字段名为AGE_GRP。
4、 离散化后的AGE_GRP字段值不直观,则添加“值替换”进一步替换为“少年儿童”,“中青年”,“老年”。
5、将Survived字段值替换为Yes和No。由于原字段是逻辑型,需增加一个字符型字段存放Yes和No,在界面上添加一个“添加字段”,输入相应的转换表达式。
最后,一份完整的数据预处理过程列表见下图,豌豆DM还提供拖拽操作,调整各项操作的执行顺序,用户可点击主界面上的“运行”按钮开始数据预处理工作。
最终处理好的数据集如下图所示,Age字段空值采用了平均值填充,离散化后的字段AGE_GRP采用了明确的年龄分组信息,IS_SURVIVED分别用Yes和No表示是否获救。
至此,我们完成了一个数据处理工作,使用亿信豌豆DM可视化的数据预处理操作过程也非常方便易懂。