發表於2024-11-13
Copyright ?2016 Packt Publishing. First published in the English language under the title “Mastering Scala Machine Learning”.All rights reserved.Chinese simplified language edition published by China Machine Press.Copyright ?2017 by China Machine Press.本書中文簡體字版由Packt Publishing授權機械工業齣版社齣版。未經齣版者書麵許可,不得以任何方式復製或抄襲本書內容。
目錄Contents
譯者序
前言
第1章探索數據分析1
1.1Scala入門2
1.2去除分類字段的重復值2
1.3數值字段概述4
1.4基本抽樣、分層抽樣和一緻抽樣5
1.5使用Scala和Spark的Notebook工作8
1.6相關性的基礎12
1.7總結14
第2章數據管道和建模15
2.1影響圖16
2.2序貫試驗和風險處理17
2.3探索與利用問題21
2.4不知之不知23
2.5數據驅動係統的基本組件23
2.5.1數據收集24
2.5.2數據轉換層25
2.5.3數據分析與機器學習26
2.5.4UI組件26
2.5.5動作引擎28
2.5.6關聯引擎28
2.5.7監控28
2.6優化和交互28
2.7總結29
第3章使用Spark和MLlib30
3.1安裝Spark31
3.2理解Spark的架構32
3.2.1任務調度32
3.2.2Spark的組件35
3.2.3MQTT、ZeroMQ、Flume和Kafka36
3.2.4HDFS、Cassandra、S3和Tachyon37
3.2.5Mesos、YARN和Standalone38
3.3應用38
3.3.1單詞計數38
3.3.2基於流的單詞計數41
3.3.3SparkSQL和數據框45
3.4機器學習庫46
3.4.1SparkR47
3.4.2圖算法:Graphx和GraphFrames48
3.5Spark的性能調整48
3.6運行Hadoop的HDFS49
3.7總結54
第4章監督學習和無監督學習55
4.1記錄和監督學習55
4.1.1Iirs數據集56
4.1.2類標簽點57
4.1.3SVMWithSGD58
4.1.4logistic迴歸60
4.1.5決策樹62
4.1.6bagging和boosting:集成學習方法66
4.2無監督學習66
4.3數據維度71
4.4總結73
第5章迴歸和分類74
5.1迴歸是什麼74
5.2連續空間和度量75
5.3綫性迴歸77
5.4logistic迴歸81
5.5正則化83
5.6多元迴歸84
5.7異方差84
5.8迴歸樹85
5.9分類的度量87
5.10多分類問題87
5.11感知機87
5.12泛化誤差和過擬閤90
5.13總結90
第6章使用非結構化數據91
6.1嵌套數據92
6.2其他序列化格式100
6.3Hive和Impala102
6.4會話化104
6.5使用特質109
6.6使用模式匹配110
6.7非結構化數據的其他用途113
6.8概率結構113
6.9投影113
6.10總結113
第7章使用圖算法115
7.1圖簡介115
7.2SBT116
7.3Scala的圖項目119
7.3.1增加節點和邊121
7.3.2圖約束123
7.3.3JSON124
7.4GraphX126
7.4.1誰收到電子郵件130
7.4.2連通分量131
7.4.3三角形計數132
7.4.4強連通分量132
7.4.5PageRank133
7.4.6SVD++134
7.5總結138
第8章Scala與R和Python的集成139
8.1R的集成140
8.1.1R和SparkR的相關配置140
8.1.2數據框144
8.1.3綫性模型150
8.1.4廣義綫性模型152
8.1.5在SparkR中讀取JSON文件156
8.1.6在SparkR中寫入Parquet文件157
8.1.7從R調用Scala158
8.2Python的集成161
8.2.1安裝Python161
8.2.2PySpark162
8.2.3從Java/Scala調用Python163
8.3總結167
第9章Scala中的NLP169
9.1文本分析流程170
9.2Spark的MLlib庫177
9.2.1TFIDF177
9.2.2LDA178
9.3分詞、標注和分塊185
9.4POS標記186
9.5使用word2vec尋找詞關係189
9.6總結192
第10章高級模型監控193
10.1係統監控194
10.2進程監控195
10.3模型監控201
10.3.1隨時間變化的性能202
10.3.2模型停用標準202
10.3.3A/B測試202
10.4總結202
Preface前言這是一本關於機器學習的書,它以Scala為重點,介紹瞭函數式編程方法以及如何在Spark上處理大數據。九個月前,當我受邀寫作本書時,我的第一反應是:Scala、大數據、機器學習,每一個主題我都曾徹底調研過,也參加瞭很多的討論,結閤任何兩個話題來寫都具有挑戰性,更不用說在一本書中結閤這三個主題。這個挑戰激發瞭我的興趣,於是就有瞭這本書。並不是每一章的內容都像我所希望的那樣圓滿,但技術每天都在快速發展。我有一份具體的工作,寫作隻是錶達我想法的一種方式。
下麵先介紹機器學習。機器學習經曆瞭翻天覆地的變換;它是由人工智能和統計學發展起來的,於20世紀90年代興起。後來在2010年或稍晚些時候誕生瞭數據科學。數據科學傢有許多定義,但JoshWills的定義可能最通俗,我有幸在Cloudera工作時和他共事過。這個定義在圖1中有具體的描述。雖然細節內容可能會有爭議,但數據科學確實是幾個學科的交叉,數據科學傢不一定是任何一個領域的專傢。據JeffHammerbacher(Cloudera的創始人,Facebook的早期員工)介紹,第一位數據科學傢工作於Facebook。Facebook需要跨學科的技能,以便從當時大量的社交數據中提取有價值的信息。雖然我自稱是一個大數據科學傢,但我已經關注這個交叉領域很久瞭,以至於有太多知識齣現混淆。寫這本書就是想使用機器學習的術語來保持對這些領域的關注度。
圖1數據科學傢的一種可能定義最近,在機器學習領域齣現瞭另一個被廣泛討論的話題,即數據量擊敗模型的復雜度。在本書中可以看到一些SparkMLlib實現的例子,特彆是NLP的word2vec。機器學習模型可以更快地遷移到新環境,也經常擊敗需要數小時纔能構建的更復雜的模型。因此,機器學習和大數據能夠很好地結閤在一起。
最後也很重要的一點是微服務的齣現。作者在本書中花瞭大量的篇幅介紹機器和應用程序通信,所以會很自然地提及Scala與Akkaactor模型。
對於大多數程序員而言,函數式編程更多是關於編程風格的變化,而不是編程語言本身。雖然Java8開始有來自函數式編程的lambda錶達式和流,但是人們仍然可以在沒有這些機製的情況下編寫函數式代碼,甚至可以用Scala編寫Java風格的代碼。使得Scala在大數據世界中名聲鵲起的兩個重要思想是惰性求值和不可變性,其中惰性求值可大大簡化多綫程或分布式領域中的數據處理。Scala有一個可變集閤庫和一個不可變集閤庫。雖然從用戶的角度來看它們的區彆很小,但從編譯器的角度來看,不變性大大增加瞭靈活性,並且惰性求值能更好地與大數據相結閤,因為REPL將大多數信息推遲到管道的後期處理,從而增加瞭交互性。
大數據一直備受關注,其主要原因是機器産生的數據量大大超越瞭人類在沒有使用計算機以前的數量。Facebook、Google、Twitter等社交網絡公司已經證明專門用於處理大數據的工具(如Hadoop、MapReduce和Spark)可以從這些數據塊中提取豐富的信息。
本書後麵將介紹關於Hadoop的內容。最初它能在廉價硬件上處理大量的信息,因為當時傳統的關係數據庫不能處理這樣的信息(或能處理,但是代價過高)。大數據這個話題太大瞭,而Spark纔是本書的重點,它是HadoopMapReduce的另一個實現,Spark提高瞭磁盤上持久化保存數據的效率。通常認為使用Spark有點貴,因為它消耗更多的內存,要求硬件必須更可靠,但它也更具交互性。此外,Spark使用Scala工作(也可以使用Java和Python等),但Scala是主要的API語言。因此Spark用Scala在數據管道的錶達方麵有一定的協同性。
本書主要內容第1章介紹數據分析師如何開始數據分析。除瞭允許用戶使用新工具查看更大的數據集以外,該章並沒有什麼新東西。這些數據集可能分布在多颱計算機上,但查看它們就像在本地機器上一樣簡單。當然,不會阻止用戶在單個機器上順序執行程序。但即使如此,作者寫作的這個筆記本電腦也有四個核,可同時運行1377個綫程。Spark和Scala(並行集閤)允許用戶透明地使用整個設備,有時並沒有顯式指定需要並行運行。現代服務器可對OS服務使用多達128個超綫程。該章將展示如何使用新工具來進行數據分析,並用它來研究以前的數據集。
第2章介紹在Scala/Spark之前一直存在的數據驅動過程,也會介紹完全數據驅動的企業,這類企業通過多颱數據生成機器的反饋來優化業務。大數據需要新的技術和架構來適應新的決策過程。該章藉鑒瞭一些學術資料來闡述數據驅動型業務的通用架構。在這種架構下,大多數工人的任務是監控和調整數據管道。
第3章重點介紹Spark的體係結構,它是前麵提及的HadoopMapReduce的替代者(或補充)。該章還將特彆介紹MLlib所支持的幾個算法。雖然這是一個嶄新的話題,但許多算法都對應著各種實現。該章將給齣一些例子,比如怎樣運行org.apache.spark.mllib包中標準的機器學習算法。最後介紹Spark的運行模式及性能調整。
第4章介紹機器學習的原理,雖然SparkMLlib的內容可能會不斷變化,但這些原理是不會變的。監督學習和無監
TheTranslator'sWords譯者序大數據是當前熱門的話題,其特點為數據量巨大,增長速度快,擁有各種類型。分布式機器學習是一種高效處理大數據的方法,其目的是從大數據中找到有價值的信息。目前各大互聯網公司都投入巨資研究分布式機器學習。
在實現分布式機器學習算法時,函數式編程有天生的優勢。這是因為函數式編程不會共享狀態,也不會造成資源競爭。Scala是一種優秀的函數式編程語言,同時它也是基於Java虛擬機的麵嚮對象的編程語言。使用Scala編程非常方便快捷。
Spark是2009年齣現的一種基於內存的分布式計算框架,它的處理速度比經典的分布式計算框架Hadoop快得多。Spark的核心部分是由Scala實現的。Spark對於處理迭代運算非常有效,而分布式機器學習算法經常需要迭代運算,因此Spark能很好地與機器學習結閤在一起。
本書共10章,介紹瞭如何使用Scala在Spark平颱上實現機器學習算法,其中Scala的版本為2.11.7,Spark采用基於Hadoop2.6的版本,這些都是比較新的版本。本書從數據分析師怎麼開始數據分析入手,介紹瞭數據驅動過程和Spark的體係結構;通過操作SparkMLlib庫,介紹瞭機器學習的基本原理及MLlib所支持的幾個算法;接著介紹瞭Scala如何錶示和使用非結構化數據,以及與圖相關的話題;再接著介紹瞭Scala與R和Python的集成;最後介紹瞭一些特彆適閤Scala編程的NLP常用算法及現有的Scala監控解決方案。總之,本書非常適閤從事分布式機器學習的數據工作者,使用書中提供的大量針對性編程例子,可提高工程實戰能力。
本書的第1~3章和第7章由重慶工商大學計算機科學與信息工程學院劉波博士翻譯;第4~6章和第8~10章由重慶工商大學計算機科學與信息工程學院羅棻翻譯。同時,劉波博士負責全書的技術審校工作。
翻譯本書的過程也是譯者不斷學習的過程。為瞭保證專業詞匯翻譯的準確性,我們在翻譯過程中查閱瞭大量相關資料。但由於時間和能力有限,書中內容難免齣現差錯。若有問題,讀者可通過電子郵件(liubo7971@163.com;luofcn@163.com)與我們聯係,歡迎一起探討,共同進步。並且,我們也會將最終的勘誤信息公布在http://www.cnblogs.com/mlcv/上。
本書的順利齣版還要特彆感謝機械工業齣版社華章公司的編輯在翻譯過程中給予的幫助!
本書的翻譯也得到如下項目資助:(1)國傢自然科學基金一般項目,非同步脈衝神經膜係統研究,項目號:61502063;(2)重慶市檢測控製集成係統工程實驗室新技術新産品開放課題,基於圖像內容的目標檢測算法及應用研究,項目號:KFJJ2016042。
Scala機器學習 下載 mobi pdf epub txt 電子書 格式 2024
Scala機器學習 下載 mobi epub pdf 電子書上11點前動動手指,購買的商品,第二天上午就送到單位或
評分趁著活動屯瞭一大一大波書,仿佛不要錢一樣呀趁著活動屯瞭一大一大波書,仿佛不要錢一樣呀
評分書非常不錯,值得推薦!!
評分便寫寫!但是,我又總是覺得好像有點對不住那些辛苦工作
評分深度學習和機器視覺相結閤,內容較完整,但是不是很深入
評分不錯,類似的書還可以再買
評分物流及時,包裝完好,物美價廉。
評分默默噠一直看著它一年一年發展的越來越好,心裏也在為京
評分一次買瞭三本書,但是包裝不敢恭維,隨所磨損瞭一點角,但是還是不太舒服
Scala機器學習 mobi epub pdf txt 電子書 格式下載 2024