数据的采集、聚集以及可视化仅仅是数据分析整体工程的一部分,要从海量数据中抽取出有价值的信息是目前大数据应用领域一项新的并且有挑战性的工作。作为大数据的技术基石,机器学习这一新兴学科虽然已经被越来越多的人们所认识,但由于学科自身的交叉性,许多算法往往让人觉得复杂和难以理解。本书作者作为一名资深的数据科学家,借助当前机器学习和数据分析领域最常用的工具R语言,分享了其在数据分析领域实践机器学习算法的诸多心得。
本书内容全面,深入浅出地介绍了采用R语言实现包括分类、回归、聚类、关联分析等常用的机器学习算法的知识,每一个算法都通过案例详细说明了构建模型、实现模型以及评价模型的过程。同时,为了照顾初学者,本书也涵盖了R语言的基础知识,包括环境准备、数据转换、分析和结果可视化的方法。本书最后抛砖引玉,展示了使用RHadoop处理和分析海量数据的过程。
阅读完本书并亲自动手完成作者所有算法案例后,您将对机器学习和R语言都有更深入的了解,设计学习算法来发现隐藏在数据中有价值的模式也不再是遥不可及的目标。
本书能够得以出版,要感谢机械工业出版社的缪杰、佘洁编辑,他在翻译过程中给予了我们很多建设性的指导意见。其次,还要感谢吴怡编辑,是她让我们与机械工业出版社结缘。
由于教学科研需要,译者很早就已经接触了机器学习这一领域,但由于学科发展速度日新月异,在翻译过程中我们仍然遇到了一些问题,尽管我们在此期间查阅了大量的文献及网络资源,并逐字逐句地对译稿进行了反复推敲和琢磨,还是不可避免地存在错误和疏漏之处,还望各位读者不吝指正。
封面图
目录
- 译者序
- 前言
- 作者简介
- 审校者简介
- 第1章基于R实践机器学习1
- 1.1简介1
- 1.2下载和安装R3
- 1.3下载和安装RStudio10
- 1.4包的安装和加载13
- 1.5数据读写15
- 1.6使用R实现数据操作18
- 1.7应用简单统计22
- 1.8数据可视化25
- 1.9获取用于机器学习的数据集28
- 第2章挖掘RMS Titanic数据集32
- 2.1简介32
- 2.2从CSV文件中读取Titanic数据集33
- 2.3根据数据类型进行转换36
- 2.4检测缺失值38
- 2.5插补缺失值40
- 2.6识别和可视化数据43
- 2.7基于决策树预测获救乘客50
- 2.8基于混淆矩阵验证预测结果的准确性53
- 2.9使用ROC曲线评估性能55
- 第3章R和统计58
- 3.1简介58
- 3.2理解R中的数据采样59
- 3.3在R中控制概率分布59
- 3.4在R中进行一元描述统计64
- 3.5在R中进行多元相关分析67
- 3.6进行多元线性回归分析69
- 3.7执行二项分布检验71
- 3.8执行t检验73
- 3.9执行Kolmogorov-Smirnov检验76
- 3.10理解Wilcoxon秩和检验及Wilcoxon符号秩检验78
- 3.11实施皮尔森卡方检验80
- 3.12进行单因素方差分析82
- 3.13进行双因素方差分析85
- 第4章理解回归分析90
- 4.1简介90
- 4.2调用lm函数构建线性回归模型90
- 4.3输出线性模型的特征信息93
- 4.4使用线性回归模型预测未知值94
- 4.5生成模型的诊断图96
- 4.6利用lm函数生成多项式回归模型98
- 4.7调用rlm函数生成稳健线性回归模型99
- 4.8在SLID数据集上研究线性回归案例101
- 4.9基于高斯模型的广义线性回归107
- 4.10基于泊松模型的广义线性回归109
- 4.11基于二项模型的广义线性回归111
- 4.12利用广义加性模型处理数据112
- 4.13可视化广义加性模型114
- 4.14诊断广义加性模型116
- 第5章分类I——树、延迟和概率119
- 5.1简介119
- 5.2准备训练和测试数据集119
- 5.3使用递归分割树建立分类模型121
- 5.4递归分割树可视化124
- 5.5评测递归分割树的预测能力126
- 5.6递归分割树剪枝128
- 5.7使用条件推理树建立分类模型130
- 5.8条件推理树可视化131
- 5.9评测条件推理树的预测能力132
- 5.10使用k近邻分类算法134
- 5.11使用逻辑回归分类算法137
- 5.12使用朴素贝叶斯分类算法142
- 第6章分类II—神经网络和SVM146
- 6.1简介146
- 6.2使用支持向量机完成数据分类147
- 6.3选择支持向量机的惩罚因子149
- 6.4实现SVM模型的可视化152
- 6.5基于支持向量机训练模型实现类预测154
- 6.6调整支持向量机157
- 6.7利用neuralnet包训练神经网络模型161
- 6.8可视化由neuralnet包得到的神经网络模型164
- 6.9基于neuralnet包得到的模型实现类标号预测166
- 6.10利用nnet包训练神经网络模型168
- 6.11基于nnet包得到的模型实现类标号预测170
- 第7章模型评估173
- 7.1简介173
- 7.2基于k折交叉验证方法评测模型性能173
- 7.3利用e1071包完成交叉验证175
- 7.4利用caret包完成交叉检验176
- 7.5利用caret包对变量重要程度排序177
- 7.6利用rminer包对变量重要程度排序180
- 7.7利用caret包找到高度关联的特征181
- 7.8利用caret包选择特征182
- 7.9评测回归模型的性能187
- 7.10利用混淆矩阵评测模型的预测能力189
- 7.11利用ROCR评测模型的预测能力191
- 7.12利用caret包比较ROC曲线193
- 7.13利用caret包比较模型性能差异196
- 第8章集成学习199
- 8.1简介199
- 8.2使用bagging方法对数据分类200
- 8.3基于bagging方法进行交叉验证203
- 8.4使用boosting方法对数据分类204
- 8.5基于boosting方法进行交叉验证207
- 8.6使用gradient boosting方法对数据分类208
- 8.7计算分类器边缘213
- 8.8计算集成分类算法的误差演变216
- 8.9使用随机森林方法对数据分类218
- 8.10估算不同分类器的预测误差223
- 第9章聚类226
- 9.1简介226
- 9.2使用层次聚类处理数据227
- 9.3将树分成簇231
- 9.4使用k均值方法处理数据234
- 9.5绘制二元聚类图237
- 9.6聚类算法比较239
- 9.7从簇中抽取轮廓信息241
- 9.8获得优化的k均值聚类242
- 9.9使用密度聚类方法处理数据244
- 9.10使用基于模型的聚类方法处理数据248
- 9.11相异度矩阵的可视化251
- 9.12使用外部验证评估聚类效果253
- 第10章关联分析和序列挖掘256
- 10.1简介256
- 10.2将数据转换成事务数据257
- 10.3展示事务及关联258
- 10.4使用Apriori规则完成关联挖掘261
- 10.5去掉冗余规则266
- 10.6关联规则的可视化267
- 10.7使用Eclat挖掘频繁项集270
- 10.8生成时态事务数据273
- 10.9使用cSPADE挖掘频繁时序模式276
- 第11章降维279
- 11.1简介279
- 11.2使用FSelector完成特征筛选280
- 11.3使用PCA进行降维283
- 11.4使用scree测试确定主成分数287
- 11.5使用Kaiser方法确定主成分数289
- 11.6使用主成分分析散点图可视化多元变量290
- 11.7使用MDS进行降维293
- 11.8使用SVD进行降维297
- 11.9使用SVD进行图像压缩299
- 11.10使用ISOMAP进行非线性降维302
- 11.11使用局部线性嵌入法进行非线性降维306
- 第12章大数据分析(R和Hadoop)310
- 12.1简介310
- 12.2准备RHadoop环境311
- 12.3安装rmr2314
- 12.4安装rhdfs315
- 12.5在rhdfs中操作HDFS316
- 12.6在RHadoop中解决单词计数问题318
- 12.7比较R MapReduce程序和标准R程序的性能差别320
- 12.8测试和调试rmr2程序321
- 12.9安装plyrmr323
- 12.10使用plyrmr处理数据324
- 12.11在RHadoop中实施机器学习327
- 12.12在Amazon EMR环境中配置RHadoop机群330
- 附录AR和机器学习的资源335
- 附录BTitanic幸存者的数据集337