本书是一本关于数据流挖掘与在线学习算法的著作,该书全面、系统阐述了数据流机器学习的模型、算法、平台与实例。全书共10 章,分为4 个部分:第1 部分包括第1~3 章,介绍数据流机器学习基础知识;第2 部分(第4~6章)介绍基于频繁模式的数据挖掘与在线学习算法;第3 部分是基于模型的在线学习算法,包括第7 章在线稀疏学习模型和第8 章在线低秩表示模型;第4 部分(第9、10 章)介绍基于实例的数据流概念演变检测和在线学习算法。对每种典型在线学习算法的背景、模型定义、算法设计思想以及相关实验分析等,书中都有都完整的阐述。同时,也详细分析了一些与在线学习密切相关的离线数据挖掘和机器学习算法与应用。
本书的实验平台开源、简单易用。每章后面都设计了操作性强的课程实验。在图书下载专区目录下,免费提供了本书代码和相关教学配套资源的在线浏览与下载。
本书适合作为高等学校数据科学与大数据应用、智能科学与技术、人工智能等专业本科生和研究生的教材与教学参考书,也可供研究数据流挖掘与在线学习算法的科技人员阅读和使用。
(1)内容全面、案例丰富,对各种在线学习算法的背景、相关工作、模型定义、算法设计思想、以及实验方案与结果分析等,都有完整的阐述。
(2)聚焦大数据分析核心问题,详细介绍与分析了多种典型的在线学习模型与算法,采用的实验平台开源、简单易用。每章后面都设计了可操作性的课程实验,并在图书的附录部分提供课程实验参考报告和其他教学与科研资料。
前言
流数据是大数据的重要来源,在线学习算法作为一种增量式的机器学习技术,是数据流挖掘的有效工具。早期的统计机器学习算法批量训练整个数据集,显然不能适应流数据的动态学习场景。在线学习范式的出现,给大数据时代的机器学习带来了深刻的影响。统计机器学习算法的增量化,大体上有基于模型的在线学习、基于频繁模式的在线学习和基于实例的在线学习等方式。基于模型的在线学习包括在线稀疏学习模型(第7 章)、在线低秩表示模型(第8 章)等。基于模式的机器学习算法包括批量挖掘频繁模式算法(第4章和第5 章)、批次更新的流模式挖掘算法(第6 章)等。基于实例的在线学习算法包括基于实例块的概念演变检测(第9 章)、自适应存储K 近邻算法(第10 章)等。书中归纳总结了在线学习模型与算法基础知识,完整阐述了每种典型在线学习算法的背景、模型定义、算法设计思想、相关实验分析等。从这个意义上说,本书是一部数据流挖掘与在线学习算法的专著。
细心的读者可以看到,图书内容为教学做了精心安排。使用机器学习对数据进行分析,目前已成为计算机学科的基础内容。近几年全国众多各层次高校陆续开设了数据科学与大数据应用、人工智能、智能科学与技术等新工科专业,还有不少高校在软件工程、计算机科学与技术等专业里增设了机器学习、数据挖掘等数据分析类课程。笔者自2016 年承担了大数据基础大数据实时分析离线大数据分析三门课程的主讲教学任务,迄今已为四届本科学生完整上完这三门大数据分析类课程。教学实践中,深切体会到选用合适的新工科课程教材的艰难与重要。促使笔者自己动手写一本教科书的主因是2022 年下学期的学生只开设一门大数据分析技术课程,原来分开三门课程尚且难以选到勉强适用的教材(主要是英文的),踌躇后决定融合三门课程的科研与教学实践经验,以笔者自己的视角来展现大数据分析技术,唯望抛砖引玉,为初学者略尽绵薄之力。
笔者认为,一本好的大数据分析教材,一要新,能基本覆盖重要的前沿材料,要求作者身处科研前沿,专著作为教科书是一件很平常的事情。二要全,所选教学材料不适用或缺失部分开发成相对完整的内容,便于引导、示范和培养学生的开发能力。三要合,即整个教材内容要适合所教的学生,这点尤为重要。与市面上流行的数据分析图书不同,本书的基本架构为Java Weka MOA,更便于教学与开发:①Java 是一门卓越的程序设计语言,信息学科(不仅仅是计算机)的学生都系统学习过这门语言。Weka 和MOA 著名分析平台都采用Java 语言开发,通过在Eclipse 工程中引入weka.jar、moa.jar、sizeofag.jar外部包,很容易上手基于平台的新算法Java 代码二次开发。②Weka 是批量数据挖掘和机器学习领域最Z高水平开源软件,集成了统计机器学习绝大部分算法。除了提供便利的预处理、数据挖掘、可视化等图形化操作,Weka 还明确定义了应用程序编程接口API,很容易嵌入到用户自己的Java 工程项目中。③MOA 是一个面向流数据挖掘的平台,集成了一些典型的在线学习算法。MOA 生成各种数据流,算法评估、参数选择、结果展示等都以图形化方式操作。还提供了API 调用开发新的在线学习算法。
全书共10 章,大致可分为4 个部分:第1 部分包括第1~3 章,介绍数据流机器学习基础知识;第2 部分(第4~6 章)、第3 部分(第7、8 章)、第4 部分(第9、10 章)分别介绍基于频繁模式、基于模型、基于实例的各种典型的数据挖掘和在线学习算法。前3 章之外的后续各章均相对独立,读者可根据自身情况选择使用。每章之后都设计了课程实验,并在书中给出了各个实验报告供参考。实验报告与各章内容相对独立,可根据教学目标和课时情况灵活选用。
本书的研究工作得到了湖南省自然科学基金面上项目(No. 2019JJ40111)和湖南省普通高校教学改革研究项目(No. HNJG-2021-0777)的资助,作者表示衷心的感谢。书中不少原始材料源自作者近年教学实践中本科学生的实验报告或毕业设计论文,在此列出他们的姓名以致谢意:岳登峰、黄世琛、周中梁、李开、马家旺、郑霖涛、易俊威、廖莎、周贵飞、肖倩斌、李长裕、李珊。作者的硕士研究生刘基旺、廖旭红、江华分别以第4 章和第6 章、第5 章和第9 章、第10 章为主要内容进行课题研究与开发,深化与丰富了书稿材料。廖旭红同学通读全稿帮助发现了许多笔误。作者感谢教研室、学院以及学校相关部门领导与同事们的大力支持与帮助。另外,特别感谢中国电力出版社的相关工作人员,为本书的顺利出版付出了大量的辛苦劳动。
笔者从数据流挖掘与在线学习算法视角撰写大数据分析教材,还有很多重要、前沿的材料未能覆盖,即便覆盖到的部分也仅是管中窥豹,更多内容需要与后续课程配合学习。大数据分析技术发展极迅速,分支领域众多。笔者才疏学浅,仅略知皮毛,加上时间和精力有限,书中如有疏漏之处,恳请读者诸君不吝赐教。
李志杰
2022 年6 月
李志杰,男,博士,副教授,硕士研究生导师,中国通信学会高级会员。主要研究方向为大数据在线学习,主持湖南省自然科学基金面上项目 1项;作为第1作者在《计算机研究与发展》、《计算机科学与探索》、ICDM、IJCNN等国内外期刊和学术会议发表论文10多篇,EI收录7篇。主讲《大数据基础》、《大数据实时分析》、《离线大数据分析》等课程;主持湖南省普通高校教学改革项目 1 项,湖南理工学院教研教改项目 1 项。兼任中国通信学会第一届云计算与大数据应用委员会委员、《计算机学报》学术刊物审稿人。
目录
前言
第1 章 数据流机器学习 . 1
1.1 大数据的两种计算模式 .1
1.1.1 大数据离线分析 .1
1.1.2 批量处理方法 2
1.1.3 大数据实时分析 .3
1.1.4 在线学习方法 4
1.2 离线分析平台Weka .5
1.2.1 数据挖掘和机器学习 5
1.2.2 图形用户界面 6
1.2.3 ARFF 格式与示例数据集 .8
1.2.4 预处理过滤器 10
1.2.5 属性选择 11
1.2.6 可视化 12
1.3 数据流挖掘 .14
1.3.1 数据流挖掘循环过程 14
1.3.2 分类器评估 .15
1.3.3 分类方法 16
1.3.4 回归 .22
1.3.5 聚类 .24
1.3.6 频繁模式挖掘 27
1.4 数据流变化处理方法 30
1.4.1 数据流分布统计测试 30
1.4.2 概念漂移数据流产生 31
1.4.3 漂移评估与探测 33
1.4.4 自适应滑动窗口 . 34
1.4.5 数据流特征高维问题 35
1.4.6 噪音数据流处理 . 36
1.5 大规模在线分析平台MOA . 37
1.5.1 图形用户界面 37
1.5.2 命令行操作 39
1.5.3 数据源和数据流生成器 . 41
课程实验1 实验平台安装与操作 44
1.6.1 实验目的 . 44
1.6.2 实验环境 . 44
1.6.3 安装平台 . 44
1.6.4 平台操作 . 47
参考文献 . 50
第2 章 MOA 平台机器学习实例 . 52
2.1 MOA 分类 52
2.1.1 MOA 分类器 . 52
2.1.2 朴素贝叶斯增量分类器 . 53
2.1.3 Hoeffding 自适应窗口树 55
2.1.4 MOA 分类实战操作 . 57
2.2 集成分类实例 65
2.2.1 装袋算法 . 65
2.2.2 提升算法 . 66
2.2.3 随机森林算法 68
2.2.4 MOA 集成实战操作 . 69
2.3 MOA 聚类 78
2.3.1 MOA 聚类设置 78
2.3.2 DBSCAN 密度聚类 81
2.3.3 Den-Stream 数据流聚类 . 82
2.3.4 MOA 聚类实战操作 . 83
2.4 频繁闭合项集挖掘算法 . 90
2.4.1 MOA 扩展包 . 90
2.4.2 MOA 加载配置IncMine 扩展包 91
2.4.3 Java 调用IncMine 对象和选项 92
2.4.4 Eclipse 环境下开发IncMine 代码 93
课程实验2 数据分类 95
2.5.1 实验目的 95
2.5.2 实验环境 96
2.5.3 Weka 分类 96
2.5.4 MOA 分类 99
参考文献 104
第3 章 数据流在线学习模型与典型算法 105
3.1 数据流挖掘sketch 105
3.1.1 sketch 概念与包含的操作 105
3.1.2 自适应滑动窗口ADwin 106
3.1.3 数据流挖掘几种代表性sketch . 108
3.2 在线学习定义与类型 . 116
3.2.1 在线学习定义 . 116
3.2.2 在线学习算法类型划分 117
3.2.3 在线学习常用数据集 . 120
3.2.4 集成学习与并行化处理方式 . 124
3.3 基于批次FCIs 的滑动窗口更新 . 126
3.3.1 semi-FCI 概念 . 126
3.3.2 基于批次的IncMine 滑动窗口更新 . 127
3.4 在线低秩表示矩阵更新 128
3.4.1 低秩矩阵模型 . 128
3.4.2 在线更新低秩表示矩阵 129
3.5 在线对偶平均多任务学习框架 130
3.5.1 任务与特征选择混合范数 130
3.5.2 特征权重矩阵在线更新 131
3.6 在线-离线结合的数据流聚类算法 . 132
3.6.1 层次聚类算法 . 132
3.6.2 基于密度的聚类算法 . 132
3.7 数据流微分类器集成检测概念演变 . 133
3.7.1 微分类器集成 . 133
3.7.2 概念演变检测与分类 . 134
3.8 在线惰性自适应学习算法 135
3.8.1 双存储机制 135
3.8.2 SAM-KNN 分类 135
课程实验3 数据聚类 . 136
3.9.1 实验目的 136
3.9.2 实验环境 136
3.9.3 Weka 聚类 136
3.9.4 MOA 聚类 139
参考文献 141
第4 章 离线挖掘频繁闭合项集 . 144
4.1 算法背景 144
4.1.1 离线挖掘频繁项集 . 144
4.1.2 频繁闭合项集 145
4.2 Charm 批量挖掘频繁闭合项集 146
4.2.1 项集-事务集键值对 146
4.2.2 Itemset-Tidset 前缀搜索树 . 147
4.2.3 Charm 处理关系表型数据 . 148
4.2.4 Charm 伪代码 148
4.3 程序主类实现 150
4.3.1 Charm 程序组成 150
4.3.2 Main 类代码 150
4.4 模式分类的性能比较 155
4.4.1 Output 类代码 155
4.4.2 模式与训练数据集分类 157
4.4.3 抗噪音性能 . 158
课程实验4 频繁模式挖掘 . 159
4.5.1 实验目的 159
4.5.2 实验环境 159
4.5.3 Weka 频繁项与关联规则挖掘 . 160
参考文献 162
第5 章 频繁子序列与基因表达数据双向聚类 . 163
5.1 双向聚类算法 163
5.1.1 单向聚类与全局模式 163
5.1.2 双聚类与局部模式 . 163
5.2 基因表达保序子矩阵方法与实现 . 164
5.2.1 基因表达保序子矩阵 164
5.2.2 频繁闭合子序列挖掘算法 . 165
5.2.3 Charm_Seq 程序结构 166
5.3 Main 类代码 167
5.4 AlgoCharm_Bitset 类代码 171
课程实验5 基因数据局部模式挖掘 . 177
5.5.1 实验目的 177
5.5.2 实验环境 177
5.5.3 输入基因表达数据 178
5.5.4 基因表达值排序 178
5.5.5 基因表达值替换为列标签 179
5.5.6 挖掘公共闭合子序列 . 180
5.5.7 Charm_Seq 双向聚类信息 182
参考文献 183
第6 章 数据流显露模式与贝叶斯分类 184
6.1 基于模式的数据流分类方法 . 184
6.1.1 数据流分类流程 184
6.1.2 基于模式的数据流分类 185
6.2 IncMine 算法 185
6.2.1 算法思想 185
6.2.2 Main 代码 . 186
6.2.3 IncMine 输入数据流 187
6.3 IncMine 概念漂移检测 . 189
6.3.1 概念漂移种类 . 189
6.3.2 基于频繁项集数量监控概念漂移 190
6.4 基于显露模式的数据流贝叶斯分类算法 192
6.4.1 贝叶斯分类与显露模式 192
6.4.2 关系表型数据流半懒惰学习 . 193
6.4.3 实验结果与分析 195
课程实验6 IncMine 概念漂移检测 196
6.5.1 实验目的 196
6.5.2 实验环境 196
6.5.3 命令行方式运行IncMine 196
6.5.4 Eclipse 环境下IncMine 配置与运行 . 197
6.5.5 合成数据流 199
6.5.6 概念漂移检测 . 200
参考文献 201
第7 章 在线特征稀疏学习 202
7.1 嵌入式特征选择 202
7.1.1 特征子集搜索 . 202
7.1.2 L1 正则稀疏化 204
7.1.3 LASSO 的在线学习算法 . 206
7.2 多任务在线学习与特征选择 207
7.2.1 正则化对偶平均在线学习框架 207
7.2.2 多任务学习时空代价分析 . 209
7.3 多任务加速在线学习算法 . 210
7.3.1 加速的多任务在线学习算法 210
7.3.2 求解权重矩阵的闭式解 211
7.3.3 算法收敛理论分析 . 212
7.4 协同过滤在线学习 . 215
7.4.1 概率矩阵分解 215
7.4.2 对偶平均加速在线PMF . 216
7.4.3 实验验证 218
课程实验7 KDD Cup99 分类实战 220
7.5.1 实验目的 220
7.5.2 实验环境 220
7.5.3 数据集预处理 221
7.5.4 分类性能比较 225
参考文献 227
第8 章 低秩表示在线学习 228
8.1 字典学习与稀疏表示 228
8.1.1 字典学习 229
8.1.2 数据集字典学习优化与求解 230
8.2 低秩子空间学习 231
8.2.1 预备知识 231
8.2.2 鲁棒主成分分析 233
8.2.3 低秩矩阵表示 234
8.3 鲁棒主成分分析求解 234
8.3.1 RPCA 优化表达式 235
8.3.2 RPCA 求解 235
8.3.3 图像背景建模应用 . 237
8.4 低秩矩阵表示求解 . 237
8.4.1 LRR 优化表达式 . 238
8.4.2 LRR 求解 . 238
8.4.3 数据表示矩阵Z 稀疏性 239
8.5 结构化增量子空间聚类算法 . 240
8.5.1 静态学习阶段 . 240
8.5.2 构建相似矩阵 . 241
8.5.3 相似度矩阵的动态更新 242
8.5.4 结构化增量子空间聚类算法 . 242
8.6 噪音鲁棒增量子空间表示算法 243
8.6.1 静态子空间结构 243
8.6.2 相似度矩阵的动态更新 244
8.6.3 噪音鲁棒增量子空间表示算法 244
课程实验8 基于词袋模型的文本数据分类 . 245
8.7.1 实验目的 245
8.7.2 实验环境 245
8.7.3 Weka 文本分类 245
8.7.4 MOA 文本分类 . 249
参考文献 251
第9 章 可变数据流重复类与新类检测 252
9.1 重复性概念 252
9.1.1 数据流分布重现 252
9.1.2 分类器再利用 . 252
9.2 微分类器与ART 聚类 254
9.2.1 微分类器与微簇 254
9.2.2 K 均值聚类 255
9.2.3 ART 聚类 256
9.3 自适应谐振理论ART 256
9.3.1 ART 处理流程 257
9.3.2 网络学习算法 . 258
9.3.3 ART 聚类示例 259
9.4 微分类器集成与分类 . 263
9.4.1 可变数据流构建微分类器集成 264
9.4.2 集成分类与离群点识别 264
9.5 新类检测 266
9.5.1 U-outliers 定量度量 . 266
9.5.2 新类检测 267
课程实验9 K 均值聚类分析 . 267
9.6.1 实验目的 267
9.6.2 实验环境 268
9.6.3 Weka 平台K 均值聚类 268
9.6.4 MOA 平台K 均值聚类相关分析 270
参考文献 273
第10 章 KNN 自适应存储处理异质概念漂移 . 274
10.1 数据流测试-训练交替评估方式 274
10.1.1 交替测试训练错误评估 274
10.1.2 数据流概念漂移种类 275
10.2 自适应存储模型 276
10.2.1 模型体系结构 276
10.2.2 SAM-KNN 分类 277
10.3 SAM 模型自适应性 . 278
10.3.1 模型参数 . 278
10.3.2 STM 新概念适应性 278
10.3.3 清理与转化实例操作 279
10.3.4 LTM 聚类压缩 . 280
10.4 集成SAM-KNN . 280
10.4.1 SAM 在线装袋 . 280
10.4.2 SAM 集成算法 . 281
10.4.3 参数对集成分类准确度的影响分析 282
课程实验10 KNN 分类方法 . 284
10.5.1 实验目的 . 284
10.5.2 实验环境 . 284
10.5.3 Weka 平台KNN 分类 284
10.5.4 MOA 平台SAM-KNN 分类 287
参考文献 289