第1章 Spark的环境搭建与运行 1
1.1 Spark的本地安装与配置 2
1.2 Spark集群 3
1.3 Spark编程模型 4
1.3.1 SparkContext类与SparkConf类 4
1.3.2 Spark shell 5
1.3.3 弹性分布式数据集 6
1.3.4 广播变量和累加器 10
1.4 Spark Scala编程入门 11
1.5 Spark Java编程入门 14
1.6 Spark Python编程入门 17
1.7 在Amazon EC2上运行Spark 18
1.8 小结 23
第2章 设计机器学习系统 24
2.1 MovieStream介绍 24
2.2 机器学习系统商业用例 25
2.2.1 个性化 26
2.2.2 目标营销和客户细分 26
2.2.3 预测建模与分析 26
2.3 机器学习模型的种类 27
2.4 数据驱动的机器学习系统的组成 27
2.4.1 数据获取与存储 28
2.4.2 数据清理与转换 28
2.4.3 模型训练与测试回路 29
2.4.4 模型部署与整合 30
2.4.5 模型监控与反馈 30
2.4.6 批处理或实时方案的选择 31
2.5 机器学习系统架构 31
2.6 小结 33
第3章 Spark上数据的获取、处理与准备 34
3.1 获取公开数据集 35
3.2 探索与可视化数据 37
3.2.1 探索用户数据 38
3.2.2 探索电影数据 41
3.2.3 探索评级数据 43
3.3 处理与转换数据 46
3.4 从数据中提取有用特征 48
3.4.1 数值特征 48
3.4.2 类别特征 49
3.4.3 派生特征 50
3.4.4 文本特征 51
3.4.5 正则化特征 55
3.4.6 用软件包提取特征 56
3.5 小结 57
第4章 构建基于Spark的推荐引擎 58
4.1 推荐模型的分类 59
4.1.1 基于内容的过滤 59
4.1.2 协同过滤 59
4.1.3 矩阵分解 60
4.2 提取有效特征 64
4.3 训练推荐模型 67
4.3.1 使用MovieLens 100k数据集训练模型 67
4.3.2 使用隐式反馈数据训练模型 68
4.4 使用推荐模型 69
4.4.1 用户推荐 69
4.4.2 物品推荐 72
4.5 推荐模型效果的评估 75
4.5.1 均方差 75
4.5.2 K值平均准确率 77
4.5.3 使用MLlib内置的评估函数 81
4.6 小结 82
第5章 Spark构建分类模型 83
5.1 分类模型的种类 85
5.1.1 线性模型 85
5.1.2 朴素贝叶斯模型 89
5.1.3 决策树 90
5.2 从数据中抽取合适的特征 91
5.3 训练分类模型 93
5.4 使用分类模型 95
5.5 评估分类模型的性能 96
5.5.1 预测的正确率和错误率 96
5.5.2 准确率和召回率 97
5.5.3 ROC曲线和AUC 99
5.6 改进模型性能以及参数调优 101
5.6.1 特征标准化 101
5.6.2 其他特征 104
5.6.3 使用正确的数据格式 106
5.6.4 模型参数调优 107
5.7 小结 115
第6章 Spark构建回归模型 116
6.1 回归模型的种类 116
6.1.1 最小二乘回归 117
6.1.2 决策树回归 117
6.2 从数据中抽取合适的特征 118
6.3 回归模型的训练和应用 123
6.4 评估回归模型的性能 125
6.4.1 均方误差和均方根误差 125
6.4.2 平均绝对误差 126
6.4.3 均方根对数误差 126
6.4.4 R-平方系数 126
6.4.5 计算不同度量下的性能 126
6.5 改进模型性能和参数调优 127
6.5.1 变换目标变量 128
6.5.2 模型参数调优 132
6.6 小结 140
第7章 Spark构建聚类模型 141
7.1 聚类模型的类型 142
7.1.1 K-均值聚类 142
7.1.2 混合模型 146
7.1.3 层次聚类 146
7.2 从数据中提取正确的特征 146
7.3 训练聚类模型 150
7.4 使用聚类模型进行预测 151
7.5 评估聚类模型的性能 155
7.5.1 内部评价指标 155
7.5.2 外部评价指标 156
7.5.3 在MovieLens数据集计算性能 156
7.6 聚类模型参数调优 156
7.7 小结 158
第8章 Spark应用于数据降维 159
8.1 降维方法的种类 160
8.1.1 主成分分析 160
8.1.2 奇异值分解 160
8.1.3 和矩阵分解的关系 161
8.1.4 聚类作为降维的方法 161
8.2 从数据中抽取合适的特征 162
8.3 训练降维模型 169
8.4 使用降维模型 172
8.4.1 在LFW数据集上使用PCA投影数据 172
8.4.2 PCA和SVD模型的关系 173
8.5 评价降维模型 174
8.6 小结 176
第9章 Spark高级文本处理技术 177
9.1 处理文本数据有什么特别之处 177
9.2 从数据中抽取合适的特征 177
9.2.1 短语加权表示 178
9.2.2 特征哈希 179
9.2.3 从20新闻组数据集中提取TF-IDF特征 180
9.3 使用TF-IDF模型 192
9.3.1 20 Newsgroups数据集的文本相似度和TF-IDF特征 192
9.3.2 基于20 Newsgroups数据集使用TF-IDF训练文本分类器 194
9.4 评估文本处理技术的作用 196
9.5 Word2Vec模型 197
9.6 小结 200
第10章 Spark Streaming在实时机器学习上的应用 201
10.1 在线学习 201
10.2 流处理 202
10.2.1 Spark Streaming介绍 202
10.2.2 使用Spark Streaming缓存和容错 205
10.3 创建Spark Streaming应用 206
10.3.1 消息生成端 207
10.3.2 创建简单的流处理程序 209
10.3.3 流式分析 211
10.3.4 有状态的流计算 213
10.4 使用Spark Streaming进行在线学习 215
10.4.1 流回归 215
10.4.2 一个简单的流回归程序 216
10.4.3 流K-均值 220
10.5 在线模型评估 221
10.6 小结 224