大家新年好,我将在本文中继续对数据挖掘一书进行总结,今天接着上一篇文章,总结一下数据预处理这个相对来说比较重要的知识点。


数据预处理

数据挖掘的目的是在大量的、潜在有用的数据中挖掘出有用的模式和信息,因此,挖掘的数据的质量就直接影响了挖掘的效果。高质量的数据是进行有效挖掘的前提,高质量的决定必须建立在高质量的数据上。我们将讨论如下主题:数据清理,数据集成,数据变换,数据归约,数据离散化:

数据清理

由于人工录入数据的时候出现的失误、测量设备的限制或数据收集过程的漏洞等因素,现实世界的数据通常是不完整的、有噪声的和不一致的。数据清理的目的就是试图填充缺失值、去除噪声并识别离群点、纠正数据中的不一致值。

(1)缺失值的处理方法(略)

(2)噪声数据的平滑方法

有如下三种方法,其中最重要,相对来说最关键的是分箱(binning)法:

分箱方法通过考察“邻居”(即周围的值)来平滑有序数据的值。有序值被分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此它进行的是局部平滑。

分箱法主要分为两个类型:等深分箱和等宽分箱。等深分箱即首先分出N个间隔,每个间隔大约包含了等数量的样本;等宽分箱则不同,是根据样本的取值范围,分出N个间隔,每个间隔的取值范围基本相同,一般来说,箱的宽度越大,平滑效果越大。

而在对数据集进行了分箱以后,就要对箱内数据进行平滑(局部平滑)。平滑有数种方法,包括平均值平滑(箱中的每个数值被此箱的平均值替换)、中值平滑(箱中的每个值被箱中的中值替换)以及边界平滑(箱中的最大值和最小值同样被视为边界,箱中的每个值被最近的边界值替换)。

此外,还有聚类法(讲类似的值组织成群或“簇”,直观地,落在簇集合之外的值被视为异常值,通过删除离群点来平滑数据。)以及回归法(通过线性回归、非线性回归等方法让数据适合一个函数来平滑数据),这里就暂时不提。

数据聚合

指将两个或者多个数据源中的数据,存放在一个一致的数据存储设备中。主要考虑数据一致性和冗余这两个重要问题。

数据变换

数据变换一般涉及以下内容:

  1. 平滑:去除数据中的噪声,包括分箱、回归和聚类等算法。
  2. 聚集:对数据进行汇总或聚集。例如,可以通过聚集电信客户的日消费数据,计算月和年消费数据。
  3. 数据泛化:使用概念分层,用高层概念替换低层或“原始”数据。例如,对客户的地址(街道)可以泛化为较高层的概念,如城市或省。
  4. 规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0~1.0或0.0~1.0。
  5. 属性构造(特征构造):利用已知属性,可以构造新的属性,以更好地刻画数据的特性,帮助挖掘过程。
  6. 数据离散化:离散化问题就是决定选择多少个分割点和确定分割点位置的问题,利用少数分类值标记替换连续属性的数值,从而减少和简化原来的数据。

下面是四个重点,大家可以主要看看规范化的方法:

数据泛化

概念分层可以用来规约数据,这种泛化,尽管细节丢失了,但泛化后的数据更容易让人理解和归纳,更加有意义。

规范化(重点!)

数据规范化是将原来的度量值转换为无量纲的值。利用距离度量的分类算法,如涉及神经网络、最近邻分类和聚类算法,规范化特别有用。对于基于距离的方法,规范化可以帮助平衡具有较大初始值域的属性与具有较小初始值域的属性可比性。常用规范化方法有如下三种:

给定一个属性(变量)f,以及fn个观测值x_{1f},x_{2f},x_{3f},...,x_{nf}

(1)最小—最大规范化

做线性变换:z_{if}=\tfrac{x_{if}-min_{f}}{max_{f}-min_{f}}(b-a)+a,将值转换到】[a,b],这里min_{f}max_{f}分别为fn个观测值的最小值和最大值。最常用的情况是取a=0,b=1。

(2)z-score规范化

①计算平均值EX_{f}、标准差\delta _{f}

EX_{f}=\tfrac{1}{n}(x_{1f}+x_{2f}+...+x_{nf})

\delta _{f}=\sqrt{\tfrac{1}{n}(|x_{1f}-EX_{f}|^2+|x_{2f}-EX_{f}|^2+...+|x_{nf}-EX_{f}|^2)}

②计算规范化的度量值(Z-score):

z_{if}=\tfrac{x_{if}-EX_{f}}{\delta_{f}}

当属性f的实际最大和最小值未知,或者离群点左右了最小—最大规范化时,该方法是有用的。

(3)小数定标规范化

小数定标规范化通过移动属性f的小数点位置进行规范化。小数点的移动位数依赖于f的最大绝对值。f的值v被规范化为v',则有:

v'=\tfrac{v}{10^j},其中,j是使max(|v'|)<1的最小整数。

*特别需要注意的是,规范化将原来的数据改变很多,因此有必要保留规范化参数(如EX_{f}\delta _{f}min_{f}max_{f}),以便将来的数据可以用一致的方法规范化。

特征构造

数据集的特征维数太高容易导致维灾难,而维度太低又不能有效地不活数据集中重要的信息。在实际应用中,通常需要对数据集中的特征进行处理来创建新的特征。由原始特征创建新的特征集有时候被称为特征提取或者特征构造,其目的是帮助提高精度和对高维数据结构的理解。

数据离散化

聚类、分类或关联分析中的某些算法要求数据是分类属性,因此需要对数值属性进行离散化(discreization)。

连续属性离散化为分类属性涉及两个子任务:决定需要多少个分类值,以及确定如何将连续属性值映射到这些分类值中。第一步,将连续属性值排序后,通过制定k-1个分割点(split point)把他们分成k个区间。第二步,将一个区间的所有值映射到相同的分类值。因此,离散化问题就是决定选择多少个分割点和确定分割点位置的问题。利用少数分类值标记替换连续属性的数值,从而减少和简化了原来的数据。

离散化技术根据是否使用类别信息可分为两类。如果离散化过程使用类别信息,则称之为监督(指导)离散化;反之,则称之为非监督(无指导)离散化。

等宽和等频(等深)离散化是两种常用的无监督离散化方法(等宽和等深可以参见之前的分箱法)。等宽方法将属性的值域分成具有相同宽度的区间,而区间的个数由用户指定。等宽离散化方法经常会造成实例分布非常不均匀,这样会严重削弱属性帮助构建较好决策结果的能力。

等频或等深方法试图将相同数量的对象放进每个区间,区间个数由用户指定。

数据规约

接下来我们来了解一下数据规约,首先看看什么叫做维度规约和特征变换。

1、维度规约和特征变换

维度(数据特征的数目)规约是指通过数据编码或变换,得到原始数据的规约或“压缩”表示。如果原始数据可以由压缩数据重新构造而不丢失任何信息,则该数据规约是无损的;如果只能重新构造原始数据的近似表示毛泽改数据规约是有损的。此外,维度规约还有很多好处:

  • 降低纬度,使得许多数据挖掘算法效果更好。
  • 维规约使得模型涉及更少的特征,因而可以产生更容易理解的模型。
  • 可以降低数据挖掘算法的时间和空间复杂度。

接下来简单介绍两种有效的有损规约方法,如果有兴趣的可以自行去拓展,笔者也不费笔墨了。

(1)离散小波变换(DWT)

离散小波变换是一种线性信号处理技术,有许多实际应用,包括手写体图像压缩、计算机视觉、时间序列数据分析和数据清理。当用于数据向量D时,离散小波转换将D转换成不同数值向量小波系数D',这两个向量具有相同的长度。

小波变换后的数据可以裁减,仅存放一小部分最强的小波系数,就能保留近似的压缩数据。离散小波变换一般使用分层金字塔算法,在每次迭代中将数据减半(因此计算速度很快),方法如下:

  1. 输入数据向量的长度L必须是2的整数幂,必要时,通过在数据向量后添加0来满足这一条件。
  2. 每个变换涉及应用两个函数。第一个使用某种数据平滑,如求和或加权平均;第二个进行加权差分,产生数据的细节特征。
  3. 两个函数作用于输入数据对,产生两个长度为L/2的数据集。一般地,它们分别代表输入数据平滑后的低频内容和高频内容。
  4. 两个函数递归地作用于前面循环得到的数据集,直到结果数据集的长度为2。
  5. 在以上迭代得到的数据集中选择值,指定其为数据变换的小波系数。

(2)主成分分析(PCA)

主成分分析是一种用于连续属性的线性变换技术,找出新的属性(主成分),这些属性是原属性的线性组合,是相互正交的,使原数据投影到较小的集合中,并且捕获数据的最大变差。PCA常常能揭示先前未曾察觉的联系、解释不寻常的结果。其基本过程如下:

  1. 对输入数据规范化,使得每个属性都落入相同的区间。
  2. PCA计算k个标准正交单位向量,作为规范化输入数据的基。这些向量称为主成分,输入数据是主成分的线性组合。
  3. 对主成分按“重要性”或强度降序排列。主成分基本上充当数据的新坐标轴,提供关于方差的重要信息。也就是说,对坐标轴进行排序,使得第一个坐标轴显示数据的最大方差,第二个显示次大方差,以此类推。例如图中展示对于原来映射到轴X_{1}X_{2}的给定数据集的两个主要成分Y_{1}Y_{2}.这一信息帮助识别数据中的分组或模式。
  4. 既然主要成分是根据“意义”降序排列,因此可以通过去掉较弱的成分来规约数据。使用最强的主要成分,可能重构原数据的很好的近似值。

2、抽样

在这里只简单叙述几种主要的抽样方法:

①无放回简单随机抽样方法。该方法从N个数据行中随机(每一数据行被选中的概率都为\tfrac{1}{N})抽取出n个数据行,以构成抽样数据子集。

②有放回简单随机抽样方法。该方法与无放回简单随机抽样方法类似,也是从N个数据行中每次随机抽取一数据行,但该数据行被选中后仍将留在数据集D中,这样最后获得由n个数据行组成的抽样数据子集中可能会出现相同的数据行。

③分层抽样方法。首先将数据集D划分为若干不相交的“层”,再分别从这些“层”中随机抽取数据对象,从而获得具有代表性的抽样数据子集。

3、特征选择

特征选择是指从一组已知特征集合中选择最具有代表性的特征子集,使其保留原有数据的大部分信息,即所选择的特征子集可以像原来的全部特征一样用来正确区分数据集中的每个数据对象。通过特征选择,一些与任务无关或者冗余的特征被删除,从而提高数据处理的效率,简化学习模型。

特征选择的理想方法是:将所有可能的特征子集作为感兴趣的数据算法的输入,然后选取产生最好结果的子集。这种方法的优点是反映了最终使用的数据挖掘算法的目的与偏爱,但是由于涉及n个属性的子集多达2^n个,大部分情况下这种理想方法偶读行不通,因此我们需要其他的策略。

根据特征选择过程与后续数据挖掘算法的关联,特征选择方法可以分为过滤、封装和嵌入

①过滤方法(Filter Approach):使用某种独立于数据挖掘任务的方法,在数据挖掘算法运行之前进行特征选择,即先过滤特征集产生一个最有价值的特征子集。

②封装方法(Wrapper Approach):将学习算法的结果作为特征子集评价准确的一部分,根据算法生成规则的分类精度选择特征子集。该类算法具有使得生成规则分类精度高的优点,但特征选择效率较低。

③嵌入方法(Embedded approach):特征选择作为数据挖掘算法的一部分自然地出现。在数据挖掘算法运行期间,算法本身决定使用哪些属性和忽略哪些特征,如决策树C4.5分类算法。

根据特征选择过程是否用到类信息的指导,特征选择可以分为监督式特征选择、无监督式特征选择和半监督式特征选择。

①监督式特征选择:使用类信息来指导,通过度量类信息与特征之间的相互关系来确定子集大小。

②无监督式特征选择:在没有类信息的指导下,使用样本聚类或特征聚类对聚类过程中的特征贡献度进行评估,根绝贡献度的大小进行特征选择。

③半监督式特征选择:有类信息的数据是非常“昂贵”的,通常情况下没有足够的有类信息的数据。如果有类信息的数据太少,以致不能提供足够的信息的时候,可以使用少量的有类信息的数据和无类信息的大量数据组合成数据集而进行特征选择。

而特征子集选择的搜索策略主要包括以下技术:

  1. 逐步向前选择:从空属性集作为归约集开始,确定原属性集中最好的属性,并将它添加到归约集中。在其后的每次迭代中,将剩下的原属性集中最好的属性添加到该集合中。
  2. 逐步向后删除:由整个属性集开始,在每一步,删除尚在的属性集中最差的属性。
  3. 向前选择和向后删除的结合:将逐步向前选择和逐步向后删除结合在一起,每一步选择一个最好的属性,并在剩余的属性中删除一个最差的属性。
  4. 决策树归纳:构造出一个类似于流程图的结构,其中每个内部结点表示一个属性的测试,每个分支对应于测试的一个输出;每个外部结点表示一个类预测;在每个节点,算法选择“最好”的属性,将数据划分成类。

以上就是数据预处理的一些重点内容,由于接下来时间受限,我可能会不按照章节,而是对应地按照一些重点单独写博客,希望大家谅解。

数据挖掘原理与实践学习(3)相关推荐

  1. 数据挖掘原理与实践学习(1)

    说来惭愧,开始写这篇博客的动力是由于我数据挖掘考试挂了......自己在寒假重新学习这一科,顺带着写写自己的感悟,希望能与大家一起学习.我有什么错漏或者大家什么好的建议都可以在评论区留言,我会认真回复 ...

  2. 数据挖掘原理与算法:对森林火灾影响因素的分析

    数据挖掘原理与算法:对森林火灾影响因素的分析 一.介绍 Forest Fire Area Prediction of the burnt area by forest fires Overview T ...

  3. 数据挖掘原理与算法:机器学习->{[sklearn. model_selection. train_test_split]、[h2o]、[网格搜索]、[numpy]、[plotly.express]}

    数据挖掘原理与算法:机器学习->{[sklearn. model_selection. train_test_split].[h2o].[网格搜索].[numpy].[plotly.expres ...

  4. 数据挖掘原理与算法:练习题2

    数据挖掘原理与算法:练习题2 题目: 下表给出了一组有关天气状况和能否进行户外活动的数据.请给出所有包含属性"Play"的频繁项集(最小支持度计数为3) No. Outlook T ...

  5. 数据挖掘原理与算法:Jupyter

    数据挖掘原理与算法:Jupyter 一.认识Jupyter Jupyter介绍和使用 中文版 PIP(Python包管理工具) anaconda(开源的Python发行版本) Python,Anaco ...

  6. 数据挖掘原理与算法:练习题1

    数据挖掘原理与算法:练习题1 题目: 考虑下表中的数据集,其中A.B.C为属性,+.-为类标号,构建一个决策树 A B C Number of instances + - T T T 5 0 F T ...

  7. 数据挖掘原理与算法_资料 | 数据挖掘:概念、模型、方法和算法(第2版)/ 国外计算机科学经典教材...

    下载地址: 以下书籍介绍来自图书商城 内容简介 · · · · · · 随着数据规模和复杂度的持续上升,分析员必须利用更高级的软件工具来执行间接的.自动的智能化数据分析.<数据挖掘:概念.模型. ...

  8. 单片机原理与实践学习记录之51单片机硬件基础

    单片机原理与实践学习记录 第三课(更新时间:2021.9.6) 51单片机硬件基础 MCS-51是Intel公司生产的一个单片机系列的总称.在功能上,该系列单片机有基本型和增强型两大类,通常以芯片型号 ...

  9. 单片机原理与实践学习记录之51单片机I/O口简单应用

    单片机原理与实践学习记录 第二课(更新时间:2021.9.3) 51单片机I/O口简单应用 C51中常用的头文件 ​ 通常有reg51.h,reg52.h,math.h, ctype.h, stdio ...

  10. 数据挖掘原理与算法_技术分享|大数据挖掘算法之FPGrowth算法

    程一舰 数据技术处 我们常说我们生活在信息时代,实际上,我们更多的还是生活在数据时代.因为从过去到现在累积了大量的数据,对数据的挖掘和分析也仅是从最近几年大数据和人工智能技术的发展而兴起.我们对现有数 ...

最新文章

  1. gradle项目 避免每次下载gradle文件/解决依赖下载慢的问题
  2. 前端学习(1542):cdn简介
  3. sersync+rsync+inotify-tools集中日志,实时同步
  4. 推荐 | Transformer最新成果!Learn to Dance with AIST++: Music Conditioned 3D Dance Generation!
  5. MQTT协议之发布订阅
  6. ios - 高效,准确的网络检测
  7. matlab para for,matlab并行之parafor
  8. 微信扫描二维码在内置浏览器打不开文件的下载链接怎么办?哪些api接口可以解决...
  9. box-shadow属性四个值_flex笔记1——flex-direction属性
  10. 从美团财报透视餐饮外卖市场新趋势
  11. char类型和字符串
  12. 非转基因保护品种覆盖南北 北方旱作国稻种芯-517功能苦瓜稻
  13. 清华镜像源地址(国内下载python包必备地址)
  14. 微信内部浏览器打开网页时提示外部浏览器打开 升级版
  15. 湖南大学计算机学院陈浩,杨圣洪-湖大信息科学与工程学院
  16. kafka的offset是个什么鬼。。
  17. SSM+社区线上超市购物系统毕业设计-附源码211704
  18. Android启动流程:上电到启动第一个APP的详细流程,
  19. 基于视觉信息的网页分块算法(VIPS)
  20. OCR在扫描笔中的技术应用

热门文章

  1. 各个版本Word转Pdf时出现有关PDFMaker加载项崩溃或错误的解决方法
  2. vfp报表纸张设置_谈VFP9的自定义纸张的设计!
  3. Ubuntu 16.04 安装 GCC-7.3.0
  4. 我为什么要写《OpenCV Android 开发实战》这本书
  5. 最好的git教程,没有之一
  6. java入门第二天如何使用Elipse
  7. vim编辑器删除空行
  8. 图解设计模式:工厂类
  9. MacOS 安装 Matlab R2021b 手记
  10. 10个基础且实用的C语言经典实例【附源码】