目 錄
前言
致謝
關(guān)于作者
關(guān)于技術(shù)審校人員
第1章 機(jī)器學(xué)習(xí)介紹 1
1.1 人工智能和機(jī)器學(xué)習(xí)用例 2
1.1.1 零售業(yè) 2
1.1.2 交通運(yùn)輸 3
1.1.3 金融服務(wù) 3
1.1.4 醫(yī)療保健和生物技術(shù) 3
1.1.5 制造業(yè) 3
1.1.6 政府部門(mén) 4
1.2 機(jī)器學(xué)習(xí)與數(shù)據(jù) 4
1.3 機(jī)器學(xué)習(xí)方法 6
1.3.1 有監(jiān)督學(xué)習(xí) 6
1.3.2 無(wú)監(jiān)督學(xué)習(xí) 6
1.3.3 半監(jiān)督學(xué)習(xí) 6
1.3.4 強(qiáng)化學(xué)習(xí) 6
1.4 深度學(xué)習(xí) 7
1.5 神經(jīng)網(wǎng)絡(luò) 7
1.6 卷積神經(jīng)網(wǎng)絡(luò) 7
1.7 特征工程 7
1.7.1 特征選擇 8
1.7.2 特征重要性 9
1.7.3 特征提取 9
1.7.4 特征構(gòu)建 9
1.8 模型評(píng)估 10
1.8.1 準(zhǔn)確率 10
1.8.2 精度 10
1.8.3 召回率 11
1.8.4 F1度量 11
1.8.5 AUROC 11
1.9 過(guò)擬合與欠擬合 12
1.10 模型選擇 12
1.11 總結(jié) 12
1.12 參考資料 13
第2章 Spark和Spark MLlib
介紹 16
2.1 概述 16
2.2 架構(gòu) 17
2.3 執(zhí)行Spark應(yīng)用程序 19
2.3.1 集群模式 19
2.3.2 客戶端模式 19
2.4 spark-shell介紹 19
2.4.1 SparkSession 20
2.4.2 彈性分布式數(shù)據(jù)集 21
2.5 Spark SQL、DataSet和DataFrame的 API 29
2.6 Spark數(shù)據(jù)源 31
2.6.1 CSV 31
2.6.2 XML 31
2.6.3 JSON 32
2.6.4 關(guān)系數(shù)據(jù)庫(kù)和MPP數(shù)據(jù)庫(kù) 33
2.6.5 Parquet 36
2.6.6 HBase 36
2.6.7 Amazon S3 41
2.6.8 Solr 42
2.6.9 Microsoft Excel 43
2.6.10 SFTP 44
2.7 Spark MLlib介紹 44
2.8 ML管道 46
2.8.1 管道 47
2.8.2 轉(zhuǎn)換器 47
2.8.3 估計(jì)器 47
2.8.4 ParamGridBuilder 47
2.8.5 CrossValidator 47
2.8.6 評(píng)估器 47
2.9 特征提取、轉(zhuǎn)換和選擇 48
2.9.1 StringIndexer 48
2.9.2 Tokenizer 49
2.9.3 VectorAssembler 50
2.9.4 StandardScaler 51
2.9.5 StopWordsRemover 52
2.9.6 n-gram 52
2.9.7 OneHotEncoderEstimator 53
2.9.8 SQLTransformer 54
2.9.9 詞頻–逆文檔頻率 55
2.9.10 主成分分析 57
2.9.11 ChiSqSelector 57
2.9.12 Correlation 58
2.10 評(píng)估指標(biāo) 60
2.10.1 AUROC 60
2.10.2 F1度量 61
2.10.3 均方根誤差 61
2.11 模型持久化 62
2.12 Spark MLlib示例 62
2.13 圖處理 66
2.14 超越Spark MLlib:第三方機(jī)器學(xué)習(xí)集成 66
2.15 利用Alluxio優(yōu)化Spark和Spark MLlib 66
2.16 為什么使用Alluxio 68
2.16.1 顯著提高大數(shù)據(jù)處理性能和可擴(kuò)展性 68
2.16.2 多個(gè)框架和應(yīng)用程序可以以讀寫(xiě)內(nèi)存的速度共享數(shù)據(jù) 69
2.17 在應(yīng)用程序終止或失敗時(shí)提供高可用性和持久性 71
2.18 優(yōu)化總體內(nèi)存使用并最小化垃圾收集 74
2.19 降低硬件要求 74
2.20 Apache Spark和Alluxio 75
2.21 總結(jié) 75
2.22 參考資料 76
第3章 有監(jiān)督學(xué)習(xí) 79
3.1 分類(lèi) 79
3.1.1 分類(lèi)類(lèi)型 79
3.1.2 Spark MLlib分類(lèi)算法 80
3.1.3 第三方分類(lèi)和回歸算法 85
3.1.4 使用邏輯回歸算法的多類(lèi)別分類(lèi) 86
3.1.5 使用隨機(jī)森林算法進(jìn)行流失預(yù)測(cè) 95
3.1.6 使用XGBoost4J-Spark的極端梯度提升算法 108
3.1.7 LightGBM:來(lái)自微軟的快速梯度提升算法 118
3.1.8 使用樸素貝葉斯進(jìn)行情感分析 127
3.2 回歸 133
3.2.1 簡(jiǎn)單線性回歸 134
3.2.2 使用XGBoost4J-Spark進(jìn)行多元回歸分析 137
3.2.3 使用LightGBM進(jìn)行多元回歸分析 143
3.3 總結(jié) 148
3.4 參考資料 149
第4章 無(wú)監(jiān)督學(xué)習(xí) 154
4.1 k-means聚類(lèi)算法 154
4.2 使用隱含狄利克雷分布進(jìn)行主題建模 162
4.2.1 Stanford CoreNLP 163
4.2.2 John Snow實(shí)驗(yàn)室的Spark NLP 164
4.2.3 示例 170
4.3 使用孤立森林進(jìn)行異常檢測(cè) 182
4.3.1 參數(shù) 185
4.3.2 示例 186
4.4 使用主成分分析進(jìn)行降維 188
4.5 總結(jié) 197
4.6 參考資料 197
第5章 推薦 200
5.1 推薦引擎的種類(lèi) 201
5.1.1 使用交替最小二乘法的協(xié)同過(guò)濾 201
5.1.2 參數(shù) 203
5.1.3 示例 203
5.2 使用FP增長(zhǎng)進(jìn)行購(gòu)物籃分析 209
5.2.1 示例 210
5.2.2 基于內(nèi)容的過(guò)濾 217
5.3 總結(jié) 218
5.4 參考資料 218
第6章 圖分析 221
6.1 圖介紹 221
6.1.1 無(wú)向圖 221
6.1.2 有向圖 222
6.1.3 有向多重圖 222
6.1.4 屬性圖 223
6.2 圖分析用例 223
6.2.1 欺詐檢測(cè)和反洗錢(qián) 224
6.2.2 數(shù)據(jù)治理和法規(guī)遵從性 224
6.2.3 風(fēng)險(xiǎn)管理 224
6.2.4 運(yùn)輸 225
6.2.5 社交網(wǎng)絡(luò) 225
6.2.6 網(wǎng)絡(luò)基礎(chǔ)設(shè)施管理 225
6.3 GraphX簡(jiǎn)介 225
6.3.1 Graph 225
6.3.2 VertexRDD 226
6.3.3 Edge 226
6.3.4 EdgeRDD 226
6.3.5 EdgeTriplet 226
6.3.6 EdgeContext 226
6.3.7 GraphX 示例 226
6.3.8 圖算法 229
6.3.9 GraphFrames 232
6.4 總結(jié) 235
6.5 參考資料 236
第7章 深度學(xué)習(xí) 238
7.1 神經(jīng)網(wǎng)絡(luò) 239
7.2 神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)短歷史 240
7.3 卷積神經(jīng)網(wǎng)絡(luò) 242
7.4 深度學(xué)習(xí)框架 247
7.4.1 TensorFlow 247
7.4.2 Theano 247
7.4.3 PyTorch 247
7.4.4 DeepLearning4J 247
7.4.5 CNTK 248
7.4.6 Keras 248
7.4.7 使用Keras進(jìn)行深度學(xué)習(xí) 248
7.5 Spark分布式深度學(xué)習(xí) 258
7.5.1 模型并行與數(shù)據(jù)并行 258
7.5.2 Spark分布式深度學(xué)習(xí)框架 259
7.6 Elephas:使用Keras和Spark進(jìn)行分布式深度學(xué)習(xí) 261
7.7 Dist-Keras 270
7.7.1 使用基于Keras和Spark的Dist-Keras來(lái)識(shí)別MNIST中的手寫(xiě)數(shù)字 271
7.7.2 貓和狗的圖像分類(lèi) 276
7.8 總結(jié) 283
7.9 參考資料 283