內容簡介
機器學習是一門多領域交叉學科,可以通過模擬來讓計算機獲取新的知識或技能。Apache Spark是一種通用大數據框架,也是一種近實時彈性分散式計算和數據虛擬化技術,Spark使人們可以大規模使用機器學習技術,而無須在專用數據中心或硬體上進行大量投資。 本書提供了Apache Spark機器學習API的全面解決方案,不僅介紹了用Spark完成機器學習任務所需的基礎知識,也涉及一些Spark機器學習的高級技能。全書共有13章,從環境配置講起,陸續介紹了線性代數庫、數據處理機制、構建機器學習系統的常見攻略、回歸和分類、用Spark實現推薦引擎、無監督學習、梯度下降算法、決策樹和集成模型、數據降維、文本分析和Spark Steaming的使用。 本書是為那些掌握了機器學習技術的Scala開發人員準備的,尤其適合缺乏Spark實踐經驗的讀者。本書假定讀者已經掌握機器學習算法的基礎知識,並且具有使用Scala實現機器學習算法的一些實踐經驗。但不要求讀者提前了解Spark ML庫及其生態系統。
圖書目錄
第 1章 Scala和Spark的機器學習實戰 1
1.1 引言 1
1.1.1 Apache Spark 2
1.1.2 機器學習 3
1.1.3 Scala 4
1.1.4 本書的軟體版本和使用的
類庫 5
1.2 下載和安裝JDK 6
1.2.1 準備工作 6
1.2.2 操作步驟 6
1.3 下載和安裝IntelliJ 6
1.3.1 準備工作 7
1.3.2 操作步驟 7
1.4 下載和安裝Spark 7
1.4.1 準備工作 7
1.4.2 操作步驟 7
1.5 用IntelliJ配置Spark 8
1.5.1 準備工作 8
1.5.2 操作步驟 8
1.5.3 更多 19
1.5.4 參考資料 19
1.6 運行Spark機器學習示例代碼 20
1.6.1 準備工作 20
1.6.2 操作步驟 20
1.7 獲取機器學習實戰所需的數據源 22
1.7.1 準備工作 22
1.7.2 操作步驟 22
1.7.3 更多 23
1.8 用IntelliJ IDE運行第 一個Apache Spark 2.0程式 25
1.8.1 操作步驟 25
1.8.2 工作原理 31
1.8.3 更多 31
1.8.4 參考資料 32
1.9 在Spark程式中添加圖表 32
1.9.1 操作步驟 32
1.9.2 工作原理 36
1.9.3 更多 37
1.9.4 參考資料 37
第 2章 Spark機器學習中的線性代數庫 38
2.1 引言 38
2.2 Vector和Matrix的包引入和初始化設定 40
2.2.1 操作步驟 40
2.2.2 更多 41
2.2.3 參考資料 42
2.3 用Spark 2.0創建和配置DenseVector 42
2.3.1 操作步驟 43
2.3.2 工作原理 43
2.3.3 更多 44
2.3.4 參考資料 45
2.4 用Spark 2.0創建和配置SparseVector 45
2.4.1 操作步驟 45
2.4.2 工作原理 47
2.4.3 更多 48
2.4.4 參考資料 48
2.5 用Spark 2.0創建和配置DenseMatrix 48
2.5.1 操作步驟 49
2.5.2 工作原理 50
2.5.3 更多 52
2.5.4 參考資料 52
2.6 用Spark 2.0的本地SparseMatrix 52
2.6.1 操作步驟 53
2.6.2 工作原理 55
2.6.3 更多 56
2.6.4 參考資料 57
2.7 用Spark 2.0進行Vector運算 57
2.7.1 操作步驟 57
2.7.2 工作原理 59
2.7.3 更多 60
2.7.4 參考資料 61
2.8 用Spark 2.0進行Matrix運算 61
2.8.1 操作步驟 61
2.8.2 工作原理 64
2.9 研究Spark 2.0分散式RowMatrix 66
2.9.1 操作步驟 67
2.9.2 工作原理 70
2.9.3 更多 71
2.9.4 參考資料 72
2.10 研究Spark 2.0分散式IndexedRowMatrix 72
2.10.1 操作步驟 72
2.10.2 工作原理 74
2.10.3 參考資料 75
2.11 研究Spark 2.0分散式CoordinateMatrix 75
2.11.1 操作步驟 75
2.11.2 工作原理 76
2.11.3 參考資料 77
2.12 研究Spark 2.0分散式BlockMatrix 77
2.12.1 操作步驟 78
2.12.2 工作原理 79
2.12.3 參考資料 79
第3章 Spark機器學習的三劍客 80
3.1 引言 81
3.1.1 RDD— 一切是從什麼開始 81
3.1.2 DataFrame—使用高級API統一API和SQL的自然演變 82
3.1.3 Dataset— 一個高級的統一數據API 83
3.2 用Spark 2.0的內部數據源創建RDD 85
3.2.1 操作步驟 86
3.2.2 工作原理 88
3.3 用Spark 2.0的外部數據源創建RDD 88
3.3.1 操作步驟 88
3.3.2 工作原理 90
3.3.3 更多 90
3.3.4 參考資料 91
3.4 用Spark 2.0的filter( ) API轉換RDD 92
3.4.1 操作步驟 92
3.4.2 工作原理 95
3.4.3 更多 95
3.4.4 參考資料 95
3.5 用flatMap( ) API轉換RDD 96
3.5.1 操作步驟 96
3.5.2 工作原理 98
3.5.3 更多 98
3.5.4 參考資料 99
3.6 用集合操作API轉換RDD 99
3.6.1 操作步驟 99
3.6.2 工作原理 101
3.6.3 參考資料 101
3.7 用groupBy( )和reduceByKey( )函式對RDD轉換/聚合 102
3.7.1 操作步驟 102
3.7.2 工作原理 104
3.7.3 更多 104
3.7.4 參考資料 105
3.8 用zip( ) API轉換RDD 105
3.8.1 操作步驟 105
3.8.2 工作原理 107
3.8.3 參考資料 107
3.9 用paired鍵值RDD進行關聯轉換 107
3.9.1 操作步驟 107
3.9.2 工作原理 110
3.9.3 更多 110
3.10 用paired鍵值RDD進行匯總和分組轉換 110
3.10.1 操作步驟 110
3.10.2 工作原理 112
3.10.3 參考資料 112
3.11 根據Scala數據結構創建DataFrame 112
3.11.1 操作步驟 113
3.11.2 工作原理 115
3.11.3 更多 115
3.11.4 參考資料 116
3.12 不使用SQL方式創建DataFrame 116
3.12.1 操作步驟 116
3.12.2 工作原理 120
3.12.3 更多 121
3.12.4 參考資料 121
3.13 根據外部源載入DataFrame和配置 121
3.13.1 操作步驟 121
3.13.2 工作原理 125
3.13.3 更多 125
3.13.4 參考資料 125
3.14 用標準SQL語言(即SparkSQL)創建DataFrame 126
3.14.1 操作步驟 126
3.14.2 工作原理 130
3.14.3 更多 130
3.14.4 參考資料 131
3.15 用Scala序列處理Dataset API 132
3.15.1 操作步驟 132
3.15.2 工作原理 135
3.15.3 更多 135
3.15.4 參考資料 135
3.16 根據RDD創建和使用Dataset,再反向操作 136
3.16.1 操作步驟 136
3.16.2 工作原理 140
3.16.3 更多 140
3.16.4 參考資料 140
3.17 用Dataset API和SQL一起處理JSON 140
3.17.1 操作步驟 141
3.17.2 工作原理 144
3.17.3 更多 144
3.17.4 參考資料 144
3.18 用領域對象對Dataset API進行函式式編程 145
3.18.1 操作步驟 145
3.18.2 工作原理 148
3.18.3 更多 149
3.18.4 參考資料 149
第4章 構建一個穩健的機器學習系統的常用攻略 150
4.1 引言 151
4.2 藉助Spark的基本統計API構建屬於自己的算法 151
4.2.1 操作步驟 151
4.2.2 工作原理 153
4.2.3 更多 153
4.2.4 參考資料 154
4.3 用於真實機器學習套用的ML管道 154
4.3.1 操作步驟 154
4.3.2 工作原理 156
4.3.3 更多 157
4.3.4 參考資料 157
4.4 用Spark標準化數據 157
4.4.1 操作步驟 158
4.4.2 工作原理 160
4.4.3 更多 160
4.4.4 參考資料 161
4.5 將數據劃分為訓練集和測試集 161
4.5.1 操作步驟 161
4.5.2 工作原理 163
4.5.3 更多 163
4.5.4 參考資料 163
4.6 新Dataset API的常見操作 163
4.6.1 操作步驟 163
4.6.2 工作原理 166
4.6.3 更多 166
4.6.4 參考資料 167
4.7 在Spark 2.0中從文本檔案創建和使用RDD、DataFrame和Dataset 167
4.7.1 操作步驟 167
4.7.2 工作原理 170
4.7.3 更多 170
4.7.4 參考資料 171
4.8 Spark ML的LabeledPoint數據結構 171
4.8.1 操作步驟 171
4.8.2 工作原理 173
4.8.3 更多 173
4.8.4 參考資料 174
4.9 用Spark 2.0訪問Spark集群 174
4.9.1 操作步驟 174
4.9.2 工作原理 176
4.9.3 更多 176
4.9.4 參考資料 177
4.10 用Spark 2.0之前的版本訪問Spark集群 178
4.10.1 操作步驟 178
4.10.2 工作原理 180
4.10.3 更多 180
4.10.4 參考資料 180
4.11 在Spark 2.0中使用SparkSession對象訪問SparkContext 180
4.11.1 操作步驟 181
4.11.2 工作原理 184
4.11.3 更多 184
4.11.4 參考資料 184
4.12 Spark 2.0中的新模型導出及PMML標記 185
4.12.1 操作步驟 185
4.12.2 工作原理 188
4.12.3 更多 188
4.12.4 參考資料 189
4.13 用Spark 2.0進行回歸模型評估 189
4.13.1 操作步驟 189
4.13.2 工作原理 191
4.13.3 更多 191
4.13.4 參考資料 192
4.14 用Spark 2.0進行二分類模型評估 192
4.14.1 操作步驟 192
4.14.2 工作原理 196
4.14.3 更多 196
4.14.4 參考資料 196
4.15 用Spark 2.0進行多類分類模型評估 197
4.15.1 操作步驟 197
4.15.2 工作原理 200
4.15.3 更多 200
4.15.4 參考資料 201
4.16 用Spark 2.0進行多標籤分類模型評估 201
4.16.1 操作步驟 201
4.16.2 工作原理 203
4.16.3 更多 203
4.16.4 參考資料 204
4.17 在Spark 2.0中使用Scala Breeze庫處理圖像 204
4.17.1 操作步驟 204
4.17.2 工作原理 207
4.17.3 更多 207
4.17.4 參考資料 208
第5章 使用Spark 2.0實踐機器學習中的回歸和分類——第 一部分 209
5.1 引言 209
5.2 用傳統方式擬合一條線性回歸直線 211
5.2.1 操作步驟 211
5.2.2 工作原理 214
5.2.3 更多 215
5.2.4 參考資料 215
5.3 Spark 2.0中的廣義線性回歸 216
5.3.1 操作步驟 216
5.3.2 工作原理 219
5.3.3 更多 219
5.3.4 參考資料 220
5.4 Spark 2.0中Lasso和L-BFGS的線性回歸API 221
5.4.1 操作步驟 221
5.4.2 工作原理 224
5.4.3 更多 225
5.4.4 參考資料 225
5.5 Spark 2.0中Lasso和自動最佳化選擇的線性回歸API 226
5.5.1 操作步驟 226
5.5.2 工作原理 229
5.5.3 更多 229
5.5.4 參考資料 230
5.6 Spark 2.0中嶺回歸和自動最佳化選擇的線性回歸API 230
5.6.1 操作步驟 230
5.6.2 工作原理 233
5.6.3 更多 233
5.6.4 參考資料 233
5.7 Spark 2.0中的保序回歸 233
5.7.1 操作步驟 234
5.7.2 工作原理 236
5.7.3 更多 237
5.7.4 參考資料 237
5.8 Spark 2.0中的多層感知機分類器 238
5.8.1 操作步驟 238
5.8.2 工作原理 241
5.8.3 更多 242
5.8.4 參考資料 243
5.9 Spark 2.0中的一對多分類器 244
5.9.1 操作步驟 244
5.9.2 工作原理 247
5.9.3 更多 247
5.9.4 參考資料 248
5.10 Spark 2.0中的生存回歸—參數化的加速失效時間模型 248
5.10.1 操作步驟 249
5.10.2 工作原理 252
5.10.3 更多 253
5.10.4 參考資料 254
第6章 用Spark 2.0實踐機器學習中的回歸和分類——第二部分 255
6.1 引言 255
6.2 Spark 2.0使用SGD最佳化的線性回歸 257
6.2.1 操作步驟 257
6.2.2 工作原理 260
6.2.3 更多 261
6.2.4 參考資料 261
6.3 Spark 2.0使用SGD最佳化的邏輯回歸 262
6.3.1 操作步驟 262
6.3.2 工作原理 266
6.3.3 更多 267
6.3.4 參考資料 268
6.4 Spark 2.0使用SGD最佳化的嶺回歸 268
6.4.1 操作步驟 268
6.4.2 工作原理 272
6.4.3 更多 273
6.4.4 參考資料 274
6.5 Spark 2.0使用SGD最佳化的Lasso回歸 274
6.5.1 操作步驟 274
6.5.2 工作原理 277
6.5.3 更多 278
6.5.4 參考資料 279
6.6 Spark 2.0使用L-BFGS最佳化的邏輯回歸 279
6.6.1 操作步驟 279
6.6.2 工作原理 282
6.6.3 更多 283
6.6.4 參考資料 283
6.7 Spark 2.0的支持向量機(SVM) 283
6.7.1 操作步驟 284
6.7.2 工作原理 287
6.7.3 更多 288
6.7.4 參考資料 289
6.8 Spark 2.0使用MLlib庫的樸素貝葉斯分類器 289
6.8.1 操作步驟 289
6.8.2 工作原理 294
6.8.3 更多 294
6.8.4 參考資料 294
6.9 Spark 2.0使用邏輯回歸研究ML管道和DataFrame 295
6.9.1 操作步驟 295
6.9.2 工作原理 302
6.9.3 更多 302
6.9.4 參考資料 303
第7章 使用Spark實現大規模的推薦引擎 304
7.1 引言 304
7.1.1 內容過濾 306
7.1.2 協同過濾 306
7.1.3 近鄰方法 306
7.1.4 隱因子模型技術 306
7.2 用Spark 2.0生成可擴展推薦引擎所需的數據 307
7.2.1 操作步驟 307
7.2.2 工作原理 308
7.2.3 更多 308
7.2.4 參考資料 309
7.3 用Spark 2.0研究推薦系統的電影數據 309
7.3.1 操作步驟 310
7.3.2 工作原理 313
7.3.3 更多 313
7.3.4 參考資料 313
7.4 用Spark 2.0研究推薦系統的評分數據 314
7.4.1 操作步驟 314
7.4.2 工作原理 317
7.4.3 更多 318
7.4.4 參考資料 318
7.5 用Spark 2.0和協同過濾構建可擴展的推薦引擎 318
7.5.1 操作步驟 318
7.5.2 工作原理 324
7.5.3 更多 326
7.5.4 參考資料 327
7.5.5 在訓練過程中處理隱式的輸入數據 327
第8章 Spark 2.0的無監督聚類算法 329
8.1 引言 329
8.2 用Spark 2.0構建KMeans分類系統 331
8.2.1 操作步驟 331
8.2.2 工作原理 334
8.2.3 更多 337
8.2.4 參考資料 337
8.3 介紹Spark 2.0中的新算法,二分KMeans 337
8.3.1 操作步驟 338
8.3.2 工作原理 342
8.3.3 更多 342
8.3.4 參考資料 343
8.4 在Spark 2.0中使用高斯混合和期望最大化(EM)對數據分類 343
8.4.1 操作步驟 343
8.4.2 工作原理 347
8.4.3 更多 348
8.4.4 參考資料 349
8.5 在Spark 2.0中使用冪疊代聚類(PIC)對圖中節點進行分類 349
8.5.1 操作步驟 349
8.5.2 工作原理 352
8.5.3 更多 353
8.5.4 參考資料 353
8.6 用隱狄利克雷分布(LDA)將文檔和文本劃分為不同主題 353
8.6.1 操作步驟 354
8.6.2 工作原理 357
8.6.3 更多 358
8.6.4 參考資料 359
8.7 用Streaming KMeans實現近實時的數據分類 359
8.7.1 操作步驟 359
8.7.2 工作原理 363
8.7.3 更多 364
8.7.4 參考資料 365
第9章 最最佳化——用梯度下降法尋找最小值 366
9.1 引言 366
9.2 最佳化二次損失函式,使用數學方法尋找最小值進行分析 369
9.2.1 操作步驟 369
9.2.2 工作原理 372
9.2.3 更多 372
9.2.4 參考資料 372
9.3 用梯度下降法(GD)編碼實現二次損失函式的最佳化過程 373
9.3.1 操作步驟 374
9.3.2 工作原理 377
9.3.3 更多 380
9.3.4 參考資料 382
9.4 用梯度下降最佳化算法解決線性回歸問題 383
9.4.1 操作步驟 383
9.4.2 工作原理 391
9.4.3 更多 393
9.4.4 參考資料 393
9.5 在Spark 2.0中使用正規方程法解決線性回歸問題 393
9.5.1 操作步驟 394
9.5.2 工作原理 396
9.5.3 更多 396
9.5.4 參考資料 396
第 10章 使用決策樹和集成模型構建機器學習系統 397
10.1 引言 397
10.1.1 集成方法 399
10.1.2 不純度的度量 401
10.2 獲取和預處理實際的醫療數據,在Spark 2.0中研究決策樹和集成模型 404
10.2.1 操作步驟 404
10.2.2 工作原理 406
10.3 用Spark 2.0的決策樹構建分類系統 406
10.3.1 操作步驟 407
10.3.2 工作原理 411
10.3.3 更多 411
10.3.4 參考資料 412
10.4 用Spark 2.0的決策樹解決回歸問題 412
10.4.1 操作步驟 412
10.4.2 工作原理 416
10.4.3 參考資料 417
10.5 用Spark 2.0的隨機森林構建分類系統 417
10.5.1 操作步驟 417
10.5.2 工作原理 420
10.5.3 參考資料 421
10.6 用Spark 2.0的隨機森林解決回歸問題 421
10.6.1 操作步驟 421
10.6.2 工作原理 425
10.6.3 參考資料 425
10.7 用Spark 2.0的梯度提升樹(GBR)構建分類系統 425
10.7.1 操作步驟 425
10.7.2 工作原理 428
10.7.3 更多 429
10.7.4 參考資料 429
10.8 用Spark 2.0的梯度提升樹(GBT)解決回歸問題 429
10.8.1 操作步驟 429
10.8.2 工作原理 432
10.8.3 更多 433
10.8.4 參考資料 433
第 11章 大數據中的高維災難 434
11.1 引言 434
11.2 Spark提取和準備CSV檔案的2種處理方法 438
11.2.1 操作步驟 438
11.2.2 工作原理 441
11.2.3 更多 442
11.2.4 參考資料 442
11.3 Spark使用奇異值分解(SVD)對高維數據降維 442
11.3.1 操作步驟 443
11.3.2 工作原理 448
11.3.3 更多 449
11.3.4 參考資料 450
11.4 Spark使用主成分分析(PCA)為機器學習挑選最有效的
潛在因子 450
11.4.1 操作步驟 451
11.4.2 工作原理 455
11.4.3 更多 458
11.4.4 參考資料 458
第 12章 使用Spark 2.0 ML庫實現文本分析 459
12.1 引言 459
12.2 用Spark統計詞頻 462
12.2.1 操作步驟 462
12.2.2 工作原理 465
12.2.3 更多 465
12.2.4 參考資料 465
12.3 用Spark和Word2Vec查找相似詞 465
12.3.1 操作步驟 466
12.3.2 工作原理 468
12.3.3 更多 468
12.3.4 參考資料 469
12.4 構建真實的Spark機器學習項目 469
12.4.1 操作步驟 469
12.4.2 更多 471
12.4.3 參考資料 471
12.5 用Spark 2.0和潛在語義分析實現文本分析 472
12.5.1 操作步驟 472
12.5.2 工作原理 476
12.5.3 更多 476
12.5.4 參考資料 477
12.6 用Spark 2.0和潛在狄利克雷實現主題模型 477
12.6.1 操作步驟 477
12.6.2 工作原理 481
12.6.3 更多 481
12.6.4 參考資料 482
第 13章 Spark Streaming和機器學習庫 483
13.1 引言 483
13.2 用於近實時機器學習的structured streaming 487
13.2.1 操作步驟 487
13.2.2 工作原理 490
13.2.3 更多 491
13.2.4 參考資料 491
13.3 用於實時機器學習的流式DataFrame 492
13.3.1 操作步驟 492
13.3.2 工作原理 494
13.3.3 更多 494
13.3.4 參考資料 494
13.4 用於實時機器學習的流式Dataset 494
13.4.1 操作步驟 495
13.4.2 工作原理 497
13.4.3 更多 497
13.4.4 參考資料 498
13.5 流式數據和用於調試的queueStream 498
13.5.1 操作步驟 498
13.5.2 工作原理 501
13.5.3 參考資料 502
13.6 下載並熟悉著名的Iris數據,用於無監督分類 502
13.6.1 操作步驟 502
13.6.2 工作原理 503
13.6.3 更多 503
13.6.4 參考資料 504
13.7 用於實時線上分類器的流式KMeans 504
13.7.1 操作步驟 504
13.7.2 工作原理 508
13.7.3 更多 508
13.7.4 參考資料 508
13.8 下載葡萄酒質量數據,用於流式回歸 509
13.8.1 操作步驟 509
13.8.2 工作原理 509
13.8.3 更多 510
13.9 用於實時回歸的流式線性回歸 510
13.9.1 操作步驟 510
13.9.2 參考資料 514
13.9.3 更多 514
13.9.4 參考資料 514
13.10 下載Pima糖尿病數據,用於監督分類 514
13.10.1 操作步驟 515
13.10.2 工作原理 515
13.10.3 更多 516
13.10.4 參考資料 516
13.11 用於線上分類器的流式邏輯回歸 516
13.11.1 操作步驟 516
13.11.2 工作原理 519
13.11.3 更多 520
13.11.4 參考資料 520
作者簡介
西亞瑪克·阿米爾霍吉(Siamak Amirghodsi)是世界級的高級技術執行主管,在大數據戰略、雲計算、定量風險管理、高級分析、大規模監管數據平台、企業架構、技術路線圖、多項目執行等領域具有豐富的企業管理經驗,而且入選了《財富》全球二十大人物。 明那什·拉傑德蘭(Meenakshi Rajendran)是一位大數據分析和數據管理經理,在大規模數據平台和機器學習方面非常專業,在全球技術人才圈中也非常出類拔萃。她為頂尖金融機構提供一整套全面的數據分析和數據科學服務,經驗非常豐富。Meenakshi擁有企業管理碩士學位,獲得PMP認證,在全球軟體交付行業擁有十幾年的經驗,不僅了解大數據和數據科學技術的基礎知識,而且對人性也有很深刻的理解。 布羅德里克·霍爾(Broderick Hall)是一位大數據分析專家,擁有計算機科學碩士學位,在設計和開發大規模的實時性和符合制度要求的複雜企業軟體應用程式方面擁有20多年的經驗。曾經為美國的一些頂級金融機構和交易所設計和構建實時金融應用程式,在這些方面擁有豐富的經驗。此外,他還是深度學習的早期開拓者,目前正在開發具有深度學習網路擴展功能的大規模基於雲的數據平台。 肖恩·梅(Shuen Mei)是一位大數據分析平台專家,在金融服務行業已經從業超過15年,在設計、構建和執行具有關鍵任務、低延遲要求的大型企業分散式財務系統方面具有豐富的經驗。目前已通過Apache Spark、Cloudera大數據平台(包括Developer、Admin和HBase)的認證。
編輯推薦
1.機器學習算法的學習能力已經催生了非常廣泛的套用,比如我們日常接觸到的產品推薦和垃圾郵件過濾,甚至還有自動駕駛和個性化醫療等套用。 2.Spark非常適合用於大規模的機器學習任務,它是一種彈性集群計算系統。 3.本書提供了Apache Spark機器學習API的全面解決方案,不僅介紹了用Spark完成機器學習任務所需的基礎知識,也涉及一些Spark機器學習的高級技能。 4.本書步驟清晰,講解細緻,適合讀者邊學邊做,快速掌握Spark編程技能。