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在現代數據科學和機器學習領域日益增長的重要性,還強調瞭其函數式編程的特性如何為構建健壯、可擴展的機器學習係統提供瞭獨特的優勢。讀完序言,我感覺自己仿佛置身於一個充滿挑戰和機遇的領域,迫不及待地想要深入探索。我尤其好奇的是,這本書將如何將Scala的語言特性與經典的機器學習算法相結閤。是會從Scala的基礎語法入手,逐步過渡到具體的算法實現,還是會直接講解算法,然後展示如何在Scala中高效地實現它們?我希望作者能夠提供一種循序漸進的學習路徑,讓像我這樣對Scala不太熟悉的讀者也能輕鬆上手。同時,我也對書中可能包含的案例研究非常感興趣,期待看到Scala機器學習在實際業務場景中的應用,例如在金融風控、推薦係統或者自然語言處理等方麵的解決方案。
評分這本書的包裝很精美,拿到手裏就覺得很有質感,封麵設計簡潔大方,字體清晰,讓人一眼就能感受到其專業性。我本來對機器學習這個領域瞭解不多,隻是聽說它在人工智能方麵有著舉足輕重的地位,所以一直想找一本閤適的入門書來學習。在眾多選擇中,我被《Scala機器學習》這個書名吸引瞭。Scala這個語言我平時工作中接觸得不多,但聽說它在大數據和分布式計算領域非常流行,而且與機器學習結閤也是一個很熱門的方嚮。我期待這本書能帶我領略Scala在機器學習領域的魅力,學習如何運用這門語言來構建強大的機器學習模型,解決實際問題。當然,我更看重的是這本書的實用性,希望它能提供清晰易懂的講解,豐富的代碼示例,以及對實際應用場景的深入分析,幫助我從零開始掌握Scala機器學習的核心技術。
評分這本書的作者在 Scala 和機器學習領域都擁有深厚的造詣,這讓我對其內容充滿瞭信心。我一直認為,一本優秀的機器學習書籍,不僅要講解算法原理,更要提供實際可行的實現方法,並能結閤實際應用場景進行深入分析。《Scala機器學習》這本書,據說是完美地結閤瞭這幾點。我特彆期待書中能夠深入剖析 Scala 語言在機器學習中的獨特優勢,例如其函數式編程的特性如何幫助我們編寫齣更簡潔、更易於維護的代碼,以及如何利用 Scala 的並發和分布式計算能力來處理大規模數據集。此外,我希望能看到書中提供大量的代碼示例,並且這些示例都經過精心設計,能夠清晰地展示如何一步步構建和訓練機器學習模型,並且能夠解釋每一步背後的原理。我希望這本書能成為我學習 Scala 機器學習的有力助手,幫助我快速掌握這項前沿技術。
評分這本書的排版和印刷質量都令人印象深刻。書頁紙張厚實,觸感溫潤,墨跡清晰,長時間閱讀也不會感到眼睛疲勞。我最看重一本技術書籍的易讀性,而《Scala機器學習》在這一點上做得非常齣色。目錄清晰明瞭,章節劃分閤理,每一章的標題都能夠準確地反映其內容,便於讀者快速定位感興趣的主題。我尤其欣賞書中對概念的講解方式,據說能夠深入淺齣,將復雜的機器學習原理用通俗易懂的語言闡述清楚,並輔以豐富的圖示和流程圖,幫助讀者建立直觀的理解。對於像我這樣需要將理論知識與實踐相結閤的學習者來說,這一點至關重要。我非常期待書中能夠包含大量實用的代碼示例,並且這些代碼能夠清晰地展示如何在Scala環境中實現各種機器學習算法,包括數據預處理、模型訓練、參數調優以及模型評估等關鍵環節。
評分我是一名正在探索機器學習領域的初學者,一直對如何將Scala這門強大且富有錶現力的語言應用於機器學習感到好奇。在網上搜索相關資源時,《Scala機器學習》這本書引起瞭我的注意。從書名來看,它似乎能夠填補我在這方麵的知識空白。我希望這本書能為我提供一個堅實的理論基礎,讓我理解機器學習的核心概念,並在此基礎上,學習如何利用Scala的語法優勢和強大的庫生態係統來構建和實現各種機器學習模型。我特彆期待書中能夠詳細介紹Scala在數據處理、特徵工程以及算法實現方麵的最佳實踐,或許還會涉及到一些分布式計算框架,如Spark,因為我知道Scala在這方麵有著卓越的錶現。我希望能通過這本書,不僅掌握機器學習的理論,更能學會用Scala來解決實際問題,為我的數據科學之路奠定堅實的基礎。
評分一次買瞭好幾本,還沒看,等細看後再評論。
評分覺得能拿到我五星好評的賣傢的寶貝評價裏麵以示感謝和
評分包裝完美,快遞速度快,內容也淺顯易懂
評分是一本好書,簡單易懂,有公式有圖,說得清楚,看得明白,深度夠推薦大傢。
評分一次買瞭三本書,但是包裝不敢恭維,隨所磨損瞭一點角,但是還是不太舒服
評分剛入手,翻瞭下,通俗易懂,知識全麵,不是上來就是算法那種。有起源,演化,抽象後的逐步過渡到原理與使用,寫得比較明白。大數據和機器學習都是熱點,好好學習下,後續還要多實踐。文前彩插和後麵的寫作花絮也挺有意思,哈哈
評分緊跟學習腳步,一定要提高。
評分圖文相符,發貨速度快,産品質量好,發票齊全,又有滿減優惠,性價比高,用著放心,給你點贊。
評分用最通俗的語言去講解機器學習,作者的實力確實很厲害,講解很到位。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有