
本书围绕大数据背景下的数据挖掘及应用技术,从大数据挖掘的基本概念入手,由浅入深、循序渐进地介绍大数据挖掘分析过程中的数据认知与预处理、数据可视化技术、数据挖掘的基本方法、Hadoop大数据分布式处理生态系统及分析应用等内容。其中数据挖掘的基本方法不仅包括数据关联分析、数据分类分析及数据聚类分析,还包括深度学习等重要的数据挖掘研究和发展主题。作者对每一章的内容都尽量从不同的角度进行深入剖析,案例均采用Python语言编程。
本书既可以面向计算机科学与技术、数据科学与技术、人工智能、智能科学与技术等信息类专业的本科生和研究生,也可以面向广大的IT从业人员。全书不仅提供了全部案例的Python源代码,还提供了丰富的习题和参考文献,对读者掌握大数据挖掘及应用领域的基本知识和进一步研究都具有参考价值。
本教材第1版于2017年7月由清华大学出版社正式出版发行。随后在重庆邮电大学经过3年的教学实践,根据各方反馈意见,并汇总读者的建议进一步修订完善,第2版最终于2021年金秋季节出版发行。
第2版基本沿用了第1版的叙述方式,继承并保留了总体结构。同时,在针对性、实用性和拓展性方面进行了删减和补充。与第1版相比,主要有以下几方面变化:
重写了多个章节的案例部分,这些案例都用Python语言实现,本书给出了案例的全部源代码。
更换了一些章节的实例和图表,如第2章的主成分分析实例,第4章的第一个引例,以及FPGrowth算法的实例等。
删除了第1版的第8章和第4章的第5小节,增加了第7章的第2小节,即前馈神经网络的介绍。
修正了多处排版问题及若干实质性错误。请此前版本的读者下载勘误表,并做相应的更正。
感谢我们的读者、学生及同行提出的宝贵意见,这些意见和建议成为本教材不断完善的保证。
本教材提供了丰富的教学资源,供教师教学和学生学习时使用。以本教材各章内容为基础的在线微视频开放课程“大数据分析与处理”是国家级精品在线开放课程,已经在高校邦、学银在线和重庆市高校在线开放课程平台网站上线,教师可以通过课前推送的方式指导学生观看相关视频,进行课前预习,其他读者可以通过该视频课程巩固和掌握各个知识点。除此之外,还提供了一些附加材料,包括每章的课件、涉及样例的完整程序、课后习题解答等,方便读者使用。
本教材第2版的第1、10章由王国胤和刘群编写,第2、4章由刘群编写,第3章由秦红星编写,第5、6章由于洪编写,第7章由曾宪华编写,第8、9章由吴思远编写。全书由王国胤负责组织设计,王国胤和刘群负责统稿。
本教材的编写得到重庆邮电大学计算智能重庆市重点实验室和计算机科学与技术学院教师的大力支持和帮助,也得到许多研究生的支持,他们收集并整理了大量资料,没有他们的帮助,本教材很难在预定时间内完成,在此感谢他们做出的贡献。
由于作者经验有限,时间紧迫,教材中难免存在不足,欢迎读者批评指正。
作者
2021年8月
今天,“大数据”已经成为一个非常时尚的概念,得到广泛应用,不仅受到IT从业人员的重视,而且影响到了自然科学、社会科学、人文科学等领域的广大从业者,并对社会经济的各行业产生了深远的影响。大数据已经不再是对大量数据的处理问题了,最重要的是对大数据进行分析,只有通过分析才能从数据中获取深入的、智能的、有价值的信息与知识。不断增长的大数据呈现出数据量大、种类繁多、增速很快以及隐藏价值大的特点,因此好的分析技术和方法在大数据应用领域显得尤为重要。本书围绕大数据背景下的数据挖掘和应用问题,从大数据挖掘的基本概念入手,由浅入深、循序渐进地介绍了大数据挖掘分析过程中的数据准备和预处理技术、数据可视化技术、数据挖掘的基本方法、大数据分析计算的常用平台架构编程方法、并行化程序设计技术以及常用的SPSS统计分析工具、流行的统计分析R语言等内容。本书不仅面向在校大学生,而且面向社会广大的IT从业人员,有助于读者了解大数据挖掘所涉及的基本技术和方法。作者力图使读者通过学习,提高数据分析的实践动手能力,拓展在数据分析领域的视野。
参与编写本书的所有作者均来自重庆邮电大学计算智能重庆市重点实验室,都具有多年从事数据挖掘、机器学习等人工智能领域的科研和教学实践经验。本书在结构设计与内容安排上既体现了所有作者的群体智慧,也体现了本领域的近期发展和前沿成果。
目前,大数据的知识挖掘及应用方法逐渐成为各高校信息类和管理类本科专业的必修课程内容,同时,作为面向各专业的通识课也广受欢迎。本书作为立足于本科教学的教材,具有如下特色:
(1) 在逻辑安排上循序渐进,由浅入深,便于读者系统学习。
(2) 内容丰富,信息量大,融入了大量本领域的新知识和新方法。
(3) 作为教材,在每一个环节都配有与理论学习内容相结合的案例分析,不仅有学生参赛作品展示,还有采用Python和R语言编写的应用实例,尤其是在第10章还给出了完整的大数据分析应用实际案例,使读者能够在大数据平台上实际感受一个完整的数据分析过程。
(4) 图文并茂,形式生动,可读性强。
全书内容分为3部分,共11章。第1部分是数据挖掘及应用导论,由第1~3章组成。
第1章主要是关于大数据挖掘及应用的概论。本章讨论了大数据挖掘及应用普及的发展历程及重要性,探讨了目前所面临的挑战和问题,介绍了数据挖掘的基本概念、功能和方法,进而对大数据挖掘的计算框架和处理流程进行了分析总结。在本章教学中,可以紧跟最新事件,以生动的实例、动画、视频等形式激发学生兴趣。建议2学时。
第2章的主题是数据认知和数据准备。本章首先从数据分析的定义和流程入手,给出了评价高质量数据的指标。然后对数据由什么类型的属性或字段组成,每个属性具有何种类型的数据值,是离散属性还是连续属性进行了描述,进而讨论了数据的中心趋势和离散趋势度量指标,以及数据相似性和相关性的计算方法,并着重探讨了数据预处理中数据清理、数据集成、数据归约和数据变换的技术。最后简述了目前常用的数据统计分析和预处理工具,并用一个案例对SPSS工具进行了介绍。在本章教学中,可以以一种数据统计分析工具为背景,进行形象具体的介绍。建议6学时。
第3章主要介绍数据可视化技术。本章从可视化技术的应用开始,介绍了最常用的高维数据可视化方法和网络数据可视化方法,最后通过两个竞赛案例对可视化技术的实际应用作了详细的讲解。可视化技术能够以图形的表现方式帮助人们识别隐藏在杂乱数据集中的关系、趋势和偏差等有价值信息。在本章教学中,可以运用可视化软件进行案例演示,激发学生的学习兴趣。建议6学时。
第2部分是数据挖掘及应用的方法论,由第4~8章组成。
第4章包含数据关联分析的基本知识和主要经典算法。数据关联分析是数据挖掘中应用最早和最成熟的一类方法。本章从一个问题案例出发,先后介绍了关联规则分析的基本概念以及3种典型的频繁项集挖掘算法,并对关联规则的有效性进行了探讨,将学习内容扩展到频繁项集挖掘的一些高级方法,例如多维关联规则挖掘和多层关联规则挖掘,最后使用Python语言给出了经典Apriori算法的一个应用案例。在本章教学中,可以结合数据挖掘领域著名的开源软件weka进行演示教学,让学生形象地体会经典关联分析算法产生的效果和使用全过程。建议6学时。
第5章包含数据分类分析的基本知识以及主要经典算法。本章从介绍分类的基本概念入手,讲解了数据分类分析的基本方法,包括最常用的决策树分类器,基于概率统计思想的贝叶斯分类算法,具有统计学习理论坚实基础的支持向量机算法,以及通过构建一组基于学习器进行集成学习的Adaboost算法,最后使用Python语言给出了一个具体案例,使读者能够熟悉数据分类分析的全过程。在本章教学中,可以结合数据挖掘领域著名的开源软件weka进行演示教学,让学生形象地体会经典分类算法产生的效果和使用全过程。建议6学时。
第6章包含数据聚类分析的基本知识和主要经典算法。本章首先引入聚类的基本概念,进而讲解各种聚类算法,包括基于划分的kmeans算法和k中心点算法,基于层次的算法,基于密度的DBSCAN算法以及基于概率模型的期望最大化算法,并简要讨论了评估聚类方法的准则,最后使用Python语言给出一个案例,帮助读者更好地理解聚类分析技术。在本章教学中,可以结合数据挖掘领域著名的开源软件weka进行演示教学,让学生形象地体会经典聚类算法产生的效果和使用全过程。建议4~5学时。
第7章探讨人工智能研究中的一个重要的新领域——深度学习。本章首先介绍深度学习的发展和基本概念,然后具体分析了深度学习的几种经典模型与算法,包括最常用的深信网、深玻尔兹曼机、栈式自动编码器和卷积神经网络,最后介绍了几种深度学习开源模型并给出了一个具体案例,帮助读者了解深度学习在实际应用中的完整工作过程。在本章教学中,可以结合书中介绍的某一种深度学习开源框架,采用相应的数据集进行演示教学,让学生形象地体会深度学习算法产生的效果和使用全过程。建议6学时。
第8章介绍目前流行的统计分析R语言。本章首先从R语言的下载安装开始,介绍R语言的基本技术,包括运行方法、常用操作、包的使用、常用数据结构、编程结构以及与数据挖掘和图形绘制相关的包,最后使用R语言给出了一个从数据预处理到数据分析的具体案例,使读者能够熟悉使用R语言做数据分析的全过程。在本章教学中,可以通过类似实训课程或者视频录像的形式,让学生形象地体会并掌握R语言的操作方法和编程基础。建议4学时。
第3部分属于数据挖掘及应用的进阶部分,由第9~11章组成。
第9章的主题是大数据分布式存储与并行计算的平台Apache Hadoop及其编程框架。本章从介绍Hadoop集群的基本概念开始,讲解了HDFS基本操作、MapReduce并行计算基础、基于Storm的分布式实时计算以及基于Spark Streaming的分布式实时计算等内容。在各节中都给出了若干案例,以供读者在实际编程过程中进行参考。在本章教学中,可以要求学生紧扣教材,完成各节中的案例,增强身临其境的体验。建议4~5学时。
第10章介绍大数据分析处理算法的并行化基础理论和技术。本章介绍了并行计算算法的基本概念,以MRKMeans算法为典型案例分析了其在MapReduce计算框架下的并行化,并基于Mahout和MLlib对该算法进行了并行化实现,最后给出了3个完整的MapReduce平台下数据分析的具体案例,使读者能够了解在大数据平台上进行数据分析的全过程。在本章教学中,可以通过专门的视频演示,让学生理解并行化编程的复杂实际操作。建议4~5学时。
第11章主要关注大数据挖掘及应用的发展趋势和研究前沿。本章首先从大数据时代发展的回顾与展望开始,介绍了大数据发展过程中出现的典型新数据类型以及新挖掘分析方法,并在最后对大数据的发展进行了展望。建议2学时。
本书各章提供的教学建议和学时安排仅供教师参考。教师可以根据教学过程中的实际安排删减内容和调整学时。本书还提供了一些丰富的教学资源供教师教学参考和学生学习时使用。以本书各章内容为基础的在线微视频开放课程已经在cqupt.gaoxiaobang.com网站上线,教师可以通过课前推送的方式,指导学生观看相关视频进行课前预习,其他读者可以通过该视频课程巩固和完善对各个知识点的理解。除此之外,我们还提供了一些其他的附加材料,包括每章的幻灯片、每章涉及的案例的软件程序、课后习题解答以及一些案例的演示视频,以上这些资料在清华大学出版社的网站上向教师提供。
本书的第1、11章由王国胤和张旭编写,第2、4章由刘群编写,第3章由秦红星编写,第5、6章由于洪编写,第7章由曾宪华编写,第8章由吴思远编写,第9章由李智星编写,第10章由张旭编写。全书架构由王国胤负责设计,王国胤和刘群负责统稿。
本书的编写得到了重庆邮电大学计算智能重庆市重点实验室和计算机科学与技术学院教师们的大力支持和帮助,也得到了许多研究生的支持,他们帮助收集并整理了大量资料。没有他们的帮助,本书很难在约定时间内完成。在此,感谢他们对本书的写作所做出的各种贡献。
限于作者学识和经验,书中难免会出现不足和遗漏之处,欢迎读者指出,一旦问题被证实,我们将给出更新勘误表,并对您表示感谢。
感谢读者的鼎力支持,本书得以再次印刷。由于作者学识浅显,经验有限,书中出现了一些遗漏和错误,已经进行了更正。欢迎读者继续指出本书中的错误,一经确认,我们将更新勘误表,并对您的贡献致谢。
作者
2017年7月
第1章大数据挖掘及应用概论1
1.1大数据挖掘及应用的背景1
1.1.1从“小”到“大”的数据分析处理1
1.1.2大数据的智能分析与挖掘2
1.1.3大数据4
1.1.4云计算5
1.2大数据挖掘的发展及挑战7
1.2.1大数据的发展催生三元空间世界7
1.2.2大数据挖掘分析处理面临的挑战9
1.3数据挖掘概述11
1.3.1数据挖掘的概念11
1.3.2数据挖掘的功能11
1.3.3数据挖掘运用的技术13
1.3.4大数据挖掘与传统数据挖掘的关系13
1.3.5数据分析过程的5个原则14
1.4大数据挖掘分析处理框架15
1.4.1大数据挖掘计算平台框架16
1.4.2大数据挖掘处理流程20
1.5小结22
1.6习题23
1.7参考文献24
第2章数据认知与预处理25
2.1数据挖掘的定义和流程26
2.1.1如何理解和描述数据挖掘的问题26
2.1.2数据获取与准备27
2.1.3数据质量评估28
2.2数据类型28
2.2.1属性的定义29
2.2.2标称属性29
2.2.3二元属性30
2.2.4序值属性30
2.2.5数值属性30
2.3数据的统计描述方法30
2.3.1数据的中心趋势度量30
2.3.2数据的离散趋势度量32
2.4数据对象关系的计算方法35
2.4.1对象相似性计算方法35
2.4.2数据相关性计算方法42
2.5数据准备44
2.5.1数据清洗与集成44
2.5.2数据归约技术48
2.5.3数据转换56
2.6数据统计分析常用工具介绍59
2.6.1Pandas统计分析工具59
2.6.2SPSS统计分析工具59
2.6.3SAS统计分析工具61
2.6.4R语言统计分析工具62
2.7Pandas案例分析65
2.7.1数据准备65
2.7.2数据录入与编辑65
2.7.3数据清洗与转换66
2.7.4数据方差分析68
2.7.5数据相关性分析69
2.7.6数据间距离分析71
2.8小结71
2.9习题72
2.10参考文献73
第3章数据可视化技术74
3.1可视化简介74
3.2高维数据可视化75
3.2.1降维方法76
3.2.2非降维方法78
3.3网络数据可视化84
3.3.1结点链接法84
3.3.2相邻矩阵布局89
3.3.3混合布局91
3.4可视化案例分析92
3.4.1案例一: China VIS 2015 竞赛题92
3.4.2案例二: VAST Challenge 2016竞赛题99
3.5小结112
3.6习题113
3.7参考文献113
第4章数据关联分析方法114
4.1问题引入114
4.2基本概念116
4.2.1频繁项集和关联规则117
4.2.2闭频繁项集和极大频繁项集119
4.2.3稀有模式和负模式120
4.3APriori算法121
4.3.1APriori算法的核心思想122
4.3.2APriori算法描述123
4.3.3改进的APriori算法124
4.4FPGrowth算法130
4.4.1FPGrowth算法的核心思想130
4.4.2FPGrowth算法描述131
4.5关联规则有效性的评估方法134
4.5.1关联规则兴趣度评估135
4.5.2关联规则相关度评估135
4.5.3其他的评估度量方法136
4.6多维关联规则的挖掘139
4.7多层关联规则挖掘142
4.8案例分析(Python)146
4.8.1APriori算法146
4.8.2FPGrowth算法149
4.9小结154
4.10习题155
4.11参考文献156
第5章数据分类分析方法158
5.1基本概念和术语158
5.1.1什么是分类158
5.1.2解决分类问题的一般方法160
5.2决策树算法161
5.2.1决策树归纳161
5.2.2如何建立决策树162
5.2.3表示属性测试条件的方法165
5.2.4选择最佳划分的度量166
5.2.5决策树归纳算法170
5.2.6树剪枝171
5.2.7决策树归纳的特点173
5.3贝叶斯分类算法175
5.3.1贝叶斯定理176
5.3.2朴素贝叶斯分类177
5.3.3贝叶斯信念网络179
5.4支持向量机算法180
5.4.1数据线性可分的情况181
5.4.2数据非线性可分的情况184
5.5粗糙集分类算法185
5.6分类器评估方法186
5.6.1评估分类器性能的度量187
5.6.2保持方法和随机二次抽样190
5.6.3交叉验证190
5.6.4自助法191
5.6.5使用统计显著性检验选择模型191
5.7组合分类器技术193
5.7.1组合分类方法简介193
5.7.2装袋193
5.7.3提升和Adaboost194
5.7.4随机森林195
5.7.5提高类不平衡数据的分类准确率196
5.8惰性学习法(k最近邻分类)197
5.9案例分析198
5.9.1SVM案例分析198
5.9.2决策树案例分析206
5.10小结213
5.11习题213
5.12参考文献215
第6章数据聚类分析方法218
6.1基本概念和术语218
6.1.1什么是聚类分析219
6.1.2对聚类的基本要求219
6.1.3不同的聚类方法220
6.2划分方法222
6.2.1kmeans算法222
6.2.2k中心点算法226
6.3层次方法228
6.3.1凝聚的与分裂的层次聚类228
6.3.2算法方法的距离度量230
6.4基于密度的方法 233
6.4.1传统的密度: 基于中心的方法234
6.4.2DBSCAN算法236
6.5概率模型的聚类方法237
6.5.1模糊聚类237
6.5.2基于概率模型的聚类239
6.5.3期望最大化算法241
6.6聚类评估243
6.6.1估计聚类趋势243
6.6.2确定正确的簇个数245
6.6.3测定聚类质量246
6.7案例分析248
6.7.1使用kmeans算法进行西瓜品类分析248
6.7.2使用层次聚类算法进行股票分析252
6.8小结259
6.9习题259
6.10参考文献260
第7章深度学习262
7.1引言262
7.2前馈神经网络(BP网络)263
7.3基本深度神经网络比较267
7.4深信网268
7.4.1玻尔兹曼机269
7.4.2受限玻尔兹曼机269
7.4.3深信网271
7.5深度玻尔兹曼机275
7.6栈式自动编码器277
7.6.1自动编码器277
7.6.2栈式自动编码器278
7.7卷积神经网络280
7.7.1卷积281
7.7.2池化282
7.7.3CNN训练过程283
7.7.4CNN网络构造的案例分析287
7.8深度学习开源框架288
7.8.1开源框架简介288
7.8.2开源案例分析289
7.9深度学习应用技巧294
7.10小结295
7.11习题296
7.12参考文献296
第8章Hadoop大数据分布式处理生态系统299
8.1Hadoop集群基础299
8.1.1Hadoop安装300
8.1.2Hadoop配置301
8.2HDFS基础操作309
8.3MapReduce并行计算框架316
8.3.1MapReduce程序实例: WordCount317
8.3.2Hadoop Streaming320
8.4基于Storm的分布式实时计算321
8.4.1Storm简介321
8.4.2Storm基本概念321
8.4.3Storm编程325
8.5基于Spark Streaming的分布式实时计算333
8.5.1Spark内存计算框架334
8.5.2Spark Streaming简介335
8.5.3Spark Streaming 编程337
8.6小结341
8.7习题342
8.8参考文献342
第9章Hadoop大数据分析应用344
9.1典型数据挖掘算法并行化案例344
9.1.1MR kmeans算法分析344
9.1.2Mahout聚类算法案例347
9.1.3Spark MLlib聚类算法案例352
9.2大数据分析应用案例354
9.2.1搜索引擎日志数据分析354
9.2.2出租车轨迹数据分析357
9.2.3新闻组数据分析359
9.3小结366
9.4习题366
9.5参考文献366
第10章大数据挖掘及应用展望368
10.1大数据挖掘的新数据368
10.2大数据挖掘的新方法370
10.2.1深度学习371
10.2.2知识图谱373
10.2.3迁移学习374
10.2.4强化学习376
10.2.5社会计算377
10.2.6特异群组挖掘377
10.3互联网时代的大数据挖掘应用378
10.4大数据时代面临的挑战380
10.4.1用户隐私和安全问题380
10.4.2数据分析算法的可解释性问题382
10.4.3人工智能的伦理问题383
10.5小结384
10.6参考文献385
全书分导论、方法论和进阶应用三大部分,共10章,涵盖数据分析的数据预处理、关联规则分析方法、有标签的数据分析方法、无标签的数据分析方法、数据可视化技术、深度学习技术、Hadoop大数据分布式应用计算平台等基础知识。
本书内容以大数据分析流程为导引,结合一系列案例和学生竞赛作品,将数据分析技术的应用过程,由浅入深地把理论融入实践,激发读者浓厚的学习热情,加深读者对知识的认识、理解和掌握。
全书所有案例均采用Python语言编写,不仅包括简单程序的代码,也包括较大应用程序代码,所有代码都全部经过验证,适合初学者学习和实现。案例代码可以登录清华大学出版社网站(http://www.tup.com.cn)下载。
可作为高等院校以及高职高专学校的计算机科学与技术、数据科学与技术、人工智能、智能科学与技术等相关信息类专业的教材,也可作为学习数据分析应用技术的参考书使用。
本书是国家级一流本科线上课程《大数据分析与处理》在线微视频开放课程的配套教材,也是重庆市一流本科线上线下混合式课程《数据挖掘基础》的配套教材。
王国胤,主编,主讲本科生及研究生课程多门。出版专著4部,主编教材1部。发表计算机教育教学论文7篇、科学研究论文300多篇。主持1项重庆市重大教改项目、1项国家自然科学基金重点项目、1项科技部重点研发计划和多项国家自然科学家基金面上项目