Spark機器學習實戰 Apache Spark 2.x Machine Learning Cookbook

Siamak Amirghodsi, Meenakshi Rajendran, Broderick Hall, Shuen Mei

  • Spark機器學習實戰-preview-1
  • Spark機器學習實戰-preview-2
Spark機器學習實戰-preview-1

買這商品的人也買了...

商品描述

機器學習是一門多領域交叉學科,可以通過模擬來讓電腦獲取新的知識或技能。
Apache Spark是一種通用大數據框架,也是一種近實時彈性分佈式計算和數據虛擬化技術,
Spark使人們可以大規模使用機器學習技術,而無須在專用數據中心或硬件上進行大量投資。

本書提供了Apache Spark機器學習API的全面解決方案,
不僅介紹了用Spark完成機器學習任務所需的基礎知識,也涉及一些Spark機器學習的高級技能。
全書共有13章,從環境配置講起,陸續介紹了線性代數庫、數據處理機制、
構建機器學習系統的常見攻略、回歸和分類、用Spark實現推薦引擎、無監督學習、
梯度下降算法、決策樹和集成模型、數據降維、文本分析和Spark Steaming的使用。

本書是為那些掌握了機器學習技術的Scala開發人員準備的,尤其適合缺乏Spark實踐經驗的讀者。
本書假定讀者已經掌握機器學習算法的基礎知識,並且具有使用Scala實現機器學習算法的一些實踐經驗。
但不要求讀者提前瞭解Spark ML庫及其生態系統。

作者簡介

Siamak Amirghodsi

是世界級的高級技術執行主管,在大數據戰略、雲計算、定量風險管理、
高級分析、大規模監管數據平台、企業架構、技術路線圖、
多項目執行等領域具有豐富的企業管理經驗,而且入選了《財富》全球二十大人物。

Meenakshi Rajendran

是一位大數據分析和數據管理經理,在大規模數據平台和機器學習方面非常專業,
在全球技術人才圈中也非常出類拔萃。
她為頂尖金融機構提供一整套全面的數據分析和數據科學服務,經驗非常豐富。
Meenakshi擁有企業管理碩士學位,獲得PMP認證,在全球軟件交付行業擁有十幾年的經驗,
不僅了解大數據和數據科學技術的基礎知識,而且對人性也有很深刻的理解。


Broderick Hall

是一位大數據分析專家,擁有計算機科學碩士學位,在設計和開發大規模的實時性和符合製度要求的複雜企業軟件應用程序方面擁有20多年的經驗。
曾經為美國的一些頂級金融機構和交易所設計和構建實時金融應用程序,在這些方面擁有豐富的經驗。
此外,他還是深度學習的早期開拓者,目前正在開發具有深度學習網絡擴展功能的大規模基於雲的數據平台。

Shuen Mei

是一位大數據分析平台專家,在金融服務行業已經從業超過15年,
在設計、構建和執行具有關鍵任務、低延遲要求的大型企業分佈式財務系統方面具有豐富的經驗。
目前已通過Apache Spark、Cloudera大數據平台(包括Developer、Admin和HBase)的認證。

目錄大綱

目錄:  
第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