第1 章 Spark 的環(huán)境搭建與運行 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 章 設計機器學習系統(tǒng) 24
2.1 MovieStream 介紹 24
2.2 機器學習系統(tǒng)商業(yè)用例 25
2.2.1 個性化 26
2.2.2 目標營銷和客戶細分 26
2.2.3 預測建模與分析 26
2.3 機器學習模型的種類 27
2.4 數據驅動的機器學習系統(tǒng)的組成 27
2.4.1 數據獲取與存儲 28
2.4.2 數據清理與轉換 28
2.4.3 模型訓練與測試回路 29
2.4.4 模型部署與整合 30
2.4.5 模型監(jiān)控與反饋 30
2.4.6 批處理或實時方案的選擇 31
2.5 機器學習系統(tǒng)架構 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 改進模型性能以及參數調優(yōu) 101
5.6.1 特征標準化 101
5.6.2 其他特征 104
5.6.3 使用正確的數據格式 106
5.6.4 模型參數調優(yōu) 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 改進模型性能和參數調優(yōu) 127
6.5.1 變換目標變量 128
6.5.2 模型參數調優(yōu) 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 聚類模型參數調優(yōu) 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 創(chuàng)建Spark Streaming 應用 206
10.3.1 消息生成端 207
10.3.2 創(chuàng)建簡單的流處理程序 209
10.3.3 流式分析 211
10.3.4 有狀態(tài)的流計算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