随着大数据的概念变得越来越流行,对数据的探索、分析和预测成为大数据分析领域的基本技能之一。作为探索和分析数据的基本理论和工具,机器学习和数据挖掘成为时下的热门技术之一。R作为功能强大并且免费的数据分析工具,在数据分析领域获得了越来越多用户的青睐。本书介绍如何应用R来进行现实世界问题的机器学习,以及如何从数据中获取可以付诸行动的洞察力。
本书的作者Brett Lantz在机器学习领域具有十余年的实践经验。他在本书中介绍了多种重要的机器学习算法。在给出相应的机器学习算法的核心理论之后,都给出了一个实际的案例,从对案例数据的探索、整理,到模型的建立和模型的评估,每一步都给出了详尽的步骤和R代码。
本书共分12章。第1章介绍机器学习的基本概念和理论,并介绍用于机器学习的R软件环境的准备。第2章介绍如何应用R来管理数据,进行数据的探索分析和数据可视化。第3章到第9章介绍典型的机器学习算法和案例,包括:k近邻分类算法、朴素贝叶斯算法、决策树和规则树、回归预测、黑盒算法——神经网络和支持向量机、关联分析、k均值聚类。伴随着这些算法的介绍,书中给出了大量的实际案例,并给出了详细的分析步骤,例如乳腺癌的判断、垃圾短信的过滤、贷款违约的预测、毒蘑菇的判别、医疗费用的预测、建筑用混凝土强度的预测、光学字符的识别、超市购物篮关联分析以及市场细分等。第10章介绍模型性能评价的原理和方法。第11章给出提高模型性能的几种常用方法。第12章讨论用R进行机器学习时可能遇到的一些高级专题,例如特殊形式的数据、大数据集的处理、并行计算和CPU计算等技术。
R本身是一款十分优秀的数据分析和数据可视化软件,其中包括大量用于机器学习的添加包。本书以机器学习算法为主线,通过案例学习的形式来组织内容,脉络清晰,并且各章自成体系。读者可以从头逐章学习,也可以找到自己所需要的内容进行学习。读者只需要具有R的一些基本知识,不需要具备机器学习的深厚基础。不管是R初学者,还是熟练的R用户都能从书中找到对自己有用的内容。
译者曾经应用本书的部分内容进行教学,学生都反映这些内容具有极强的实用价值,许多内容可以直接或者略加修改就可以应用到他们的实际工作中。我们有幸受机械工业出版社委托将此书译成中文,希望中文版的出版能够给国内读者学习R与机器学习带来方便。
在本书的翻译过程中,得到了王春华编辑的大力支持和帮助。本书责任编辑盛思源老师具有丰富的经验,为本书的出版付出了大量的劳动,这里对她们的支持和帮助表示衷心的感谢。本书的翻译工作由李洪成、许金炜和李舰共同完成,丁一飞协助翻译了本书的部分内容,全书由李洪成进行修改并统一定稿。
由于时间和水平所限,难免会有不当之处,希望同行和读者多加指正。
李洪成
封面图
目录
- 推荐序
- 译者序
- 前言
- 致谢
- 关于技术评审人
- 第1章机器学习简介 1
- 1.1机器学习的起源 2
- 1.2机器学习的使用与滥用 3
- 1.3机器如何学习 5
- 1.3.1抽象化和知识表达 6
- 1.3.2一般化 7
- 1.3.3评估学习的成功性 9
- 1.4将机器学习应用于数据中的步骤 9
- 1.5选择机器学习算法 10
- 1.5.1考虑输入的数据 10
- 1.5.2考虑机器学习算法的类型 11
- 1.5.3为数据匹配合适的算法 13
- 1.6使用R进行机器学习 13
- 1.7总结 17
- 第2章数据的管理和理解 18
- 2.1R数据结构 18
- 2.2向量 19
- 2.3因子 20
- 2.3.1列表 21
- 2.3.2数据框 22
- 2.3.3矩阵和数组 24
- 2.4用R管理数据 25
- 2.4.1保存和加载R数据结构 25
- 2.4.2用CSV文件导入和保存数据 26
- 2.4.3从SQL数据库导入数据 27
- 2.5探索和理解数据 28
- 2.5.1探索数据的结构 29
- 2.5.2探索数值型变量 29
- 2.5.3探索分类变量 37
- 2.5.4探索变量之间的关系 39
- 2.6总结 42
- 第3章懒惰学习——使用近邻分类 44
- 3.1理解使用近邻进行分类 45
- 3.1.1kNN算法 45
- 3.1.2为什么kNN算法是懒惰的 51
- 3.2用kNN算法诊断乳腺癌 51
- 3.2.1第1步——收集数据 51
- 3.2.2第2步——探索和准备数据 52
- 3.2.3第3步——基于数据训练模型 55
- 3.2.4第4步——评估模型的性能 57
- 3.2.5第5步——提高模型的性能 58
- 3.3总结 60
- 第4章概率学习——朴素贝叶斯分类 61
- 4.1理解朴素贝叶斯 61
- 4.1.1贝叶斯方法的基本概念 62
- 4.1.2朴素贝叶斯算法 65
- 4.2例子——基于贝叶斯算法的手机垃圾短信过滤 70
- 4.2.1第1步——收集数据 70
- 4.2.2第2步——探索和准备数据 71
- 4.2.3数据准备——处理和分析文本数据 72
- 4.2.4第3步——基于数据训练模型 78
- 4.2.5第4步——评估模型的性能 79
- 4.2.6第5步——提升模型的性能 80
- 4.3总结 81
- 第5章分而治之——应用决策树和规则进行分类 82
- 5.1理解决策树 82
- 5.1.1分而治之 83
- 5.1.2C5.0决策树算法 86
- 5.2例子——使用C5.0决策树识别高风险银行贷款 89
- 5.2.1第1步——收集数据 89
- 5.2.2第2步——探索和准备数据 89
- 5.2.3第3步——基于数据训练模型 92
- 5.2.4第4步——评估模型的性能 95
- 5.2.5第5步——提高模型的性能 95
- 5.3理解分类规则 98
- 5.3.1独立而治之 99
- 5.3.2单规则(1R)算法 101
- 5.3.3RIPPER算法 103
- 5.3.4来自决策树的规则 105
- 5.4例子——应用规则学习识别有毒的蘑菇 105
- 5.4.1第1步——收集数据 106
- 5.4.2第2步——探索和准备数据 106
- 5.4.3第3步——基于数据训练模型 107
- 5.4.4第4步——评估模型的性能 109
- 5.4.5第5步——提高模型的性能 109
- 5.5总结 111
- 第6章预测数值型数据——回归方法 113
- 6.1理解回归 113
- 6.1.1简单线性回归 115
- 6.1.2普通最小二乘估计 117
- 6.1.3相关系数 118
- 6.1.4多元线性回归 120
- 6.2例子——应用线性回归预测医疗费用 122
- 6.2.1第1步——收集数据 122
- 6.2.2第2步——探索和准备数据 123
- 6.2.3第3步——基于数据训练模型 127
- 6.2.4第4步——评估模型的性能 129
- 6.2.5第5步——提高模型的性能 130
- 6.3理解回归树和模型树 133
- 6.4例子——用回归树和模型树估计葡萄酒的质量 135
- 6.4.1第1步——收集数据 135
- 6.4.2第2步——探索和准备数据 136
- 6.4.3第3步——基于数据训练模型 137
- 6.4.4第4步——评估模型的性能 140
- 6.4.5第5步——提高模型的性能 142
- 6.5总结 144
- 第7章黑箱方法——神经网络和支持向量机 146
- 7.1理解神经网络 146
- 7.1.1从生物神经元到人工神经元 148
- 7.1.2激活函数 148
- 7.1.3网络拓扑 151
- 7.1.4用后向传播训练神经网络 153
- 7.2用人工神经网络对混凝土的强度进行建模 154
- 7.2.1第1步——收集数据 154
- 7.2.2第2步——探索和准备数据 155
- 7.2.3第3步——基于数据训练模型 156
- 7.2.4第4步——评估模型的性能 158
- 7.2.5第5步——提高模型的性能 159
- 7.3理解支持向量机 160
- 7.3.1用超平面分类 161
- 7.3.2寻找最大间隔 161
- 7.3.3对非线性空间使用核函数 164
- 7.4用支持向量机进行光学字符识别 165
- 7.4.1第1步——收集数据 166
- 7.4.2第2步——探索和准备数据 166
- 7.4.3第3步——基于数据训练模型 167
- 7.4.4第4步——评估模型的性能 169
- 7.4.5第5步——提高模型的性能 170
- 7.5总结 171
- 第8章探寻模式——基于关联规则的购物篮分析 172
- 8.1理解关联规则 172
- 8.2例子——用关联规则确定经常一起购买的食品杂货 176
- 8.2.1第1步——收集数据 176
- 8.2.2第2步——探索和准备数据 177
- 8.2.3第3步——基于数据训练模型 183
- 8.2.4第4步——评估模型的性能 184
- 8.2.5第5步——提高模型的性能 187
- 8.3总结 189
- 第9章寻找数据的分组——k均值聚类 191
- 9.1理解聚类 191
- 9.1.1聚类——一种机器学习任务 192
- 9.1.2k均值聚类算法 193
- 9.1.3用k均值聚类探寻青少年市场细分 198
- 9.1.4第1步——收集数据 198
- 9.1.5第2步——探索和准备数据 199
- 9.1.6第3步——基于数据训练模型 202
- 9.1.7第4步——评估模型的性能 204
- 9.1.8第5步——提高模型的性能 206
- 9.2总结 207
- 第10章模型性能的评价 208
- 10.1度量分类方法的性能 208
- 10.1.1在R中处理分类预测数据 209
- 10.1.2深入探讨混淆矩阵 211
- 10.1.3使用混淆矩阵度量性能 212
- 10.1.4准确度之外的其他性能评价指标 214
- 10.1.5性能权衡的可视化 221
- 10.2评估未来的性能 224
- 10.2.1保持法 225
- 10.2.2交叉验证 226
- 10.2.3自助法抽样 229
- 10.3总结 229
- 第11章提高模型的性能 231
- 11.1调整多个模型来提高性能 231
- 11.2使用元学习来提高模型的性能 239
- 11.2.1理解集成学习 239
- 11.2.2bagging 241
- 11.2.3boosting 243
- 11.2.4随机森林 244
- 11.3总结 248
- 第12章其他机器学习主题 249
- 12.1分析专用数据 250
- 12.1.1用RCurl添加包从网上获取数据 250
- 12.1.2用XML添加包读/写XML格式数据 250
- 12.1.3用rjson添加包读/写JSON 251
- 12.1.4用xlsx添加包读/写Microsoft Excel电子表格 251
- 12.1.5生物信息学数据 251
- 12.1.6社交网络数据和图数据 252
- 12.2提高R语言的性能 252
- 12.2.1处理非常大的数据集 253
- 12.2.2使用并行处理来加快学习过程 254
- 12.2.3GPU计算 257
- 12.2.4部署最优的学习算法 257
- 12.3总结 258