Python大規模機器學習

      網友投稿 635 2025-04-01

      智能系統與技術叢書

      Python大規模機器學習

      Large Scale Machine Learning with Python

      [荷]巴斯蒂安·賈丁(Bastiaan Sjardin)

      [意]盧卡·馬薩羅(Luca Massaron)

      [意]阿爾貝托·博斯凱蒂(Alberto Boschetti)著

      王貴財劉春明譯

      譯者序

      機器學習屬于人工智能范疇。隨著大數據的出現和適用性提高,盡管計算機硬件條件發生改善,但對機器學習算法效率的要求并未降低,對可擴展機器學習解決方案的需求呈指數增長,這使得人們仍然需要解決大多數學習算法擴展性較差、CPU和內存過載等問題。然而擴展機器學習解決方案并不多,因此大數據既給大規模機器學習帶來機遇,也帶來挑戰。

      Python是一種通用的編程語言,廣泛用于科學計算、數據分析與人工智能領域。Python具有高效、靈活、開源、功能豐富、可擴展性強、表達力強和較高的可移植性等特點,利用Python進行大規模機器學習不失為明智之舉。

      為此,本書不僅介紹大規模機器學習的基本概念,還包含豐富的案例研究。書中所選皆為最實用的技術和工具,而對理論細節未進行深入討論,以便提供大規模機器學習方法(甚至非常規方法)。不管是初學者、普通用戶還是專家級用戶,通過本書都能理解并掌握如何利用Python進行大規模機器學習。為了讓讀者快速掌握核心技術,本書由淺入深講解大量實例,圖文并茂呈現每一步的操作結果,幫助讀者更好地掌握大規模機器學習的Python工具。例如,基于Scikit-learn可擴展學習、 Liblinear和Vowpal Wabbit快速支持向量機、基于Theano與H2O的大規模深度學習方法、TensorFlow深度學習技術與在線神經網絡方法、大規模分類和回歸樹的可擴展解決方案、大規模無監督學習(PCA、聚類分析和主題建模等)擴展方法、Hadoop和Spark分布式環境、Spark機器學習實踐以及Theano和GPU計算的基礎知識。

      本書的翻譯工作得到湖南省自然科學基金資助項目(2015JJ2151)、河南省高校科技創新團隊支持計劃“面向領域大數據的分布式計算技術”(17IRTSTHN011)、河南省高等學校重點科研項目資助計劃(18A4300111)和河南工業大學校科研基金“青年支持計劃”(2016QNH29)的資助。感謝參與本書資料整理的河南工業大學信息科學與工程學院郭浩、李欣欣、胡志明與李美玲等同學。特別感謝機械工業出版社編輯老師的幫助,他們的辛勤工作提高了本譯著的質量。感謝家人對我的支持與鼓勵,感謝兒子禾禾給予我的精神支持,讓我對從事科技工作更加堅定和執著。

      王貴財

      2019年1月

      前言

      “擁有大腦的好處在于:一個人可以學習,無知可以變成有知,點滴知識可以逐漸匯聚成江海”

      ——Douglas Hofstadter

      谷歌、Facebook和優步等大型IT公司都聲稱它們成功地大規模應用了這樣的機器學習方法,從而引起世界轟動。隨著大數據的出現和適用性提高,對可擴展機器學習解決方案的需求呈指數增長,導致許多其他公司甚至個人也已經開始渴望在大數據集中挖掘隱藏的相關性成果。不幸的是,大多數學習算法都不能很好擴展,會在臺式計算機或較大的計算集群上導致CPU和內存過載。因此,即使大數據的炒作高峰已經過去,但可擴展機器學習解決方案并不充裕。

      坦率地說,仍然需要解決許多瓶頸問題,即便是很難歸類為大數據的數據集也如此(有的數據集高達2GB甚至更大)。本書的任務是提供合適的方法(有時甚至是非常規方法),以便大規模應用最強大的開源機器學習方法,而無須昂貴的企業解決方案或大型計算集群。通過本書,讀者可以學習使用Python和其他一些可用的解決方案(這些方案與可擴展的機器學習流水線能很好地集成)。閱讀這本書是一次旅程,它將讓你對機器學習有一個全新的了解,從而為你開始真正的大數據分析奠定基礎。

      本書涵蓋的內容

      第1章以正確視角提出可擴展機器學習的問題,以便你熟悉本書中將要使用的工具。

      第2章討論采用隨機梯度下降(SGD)策略減少內存消耗,它基于非核心學習的主題。另外演示各種數據的不同處理技術,例如散列技巧。

      第3章介紹流算法,它能夠以支持向量機的形式發現非線性。我們將介紹目前Scikit-learn的替代方法,如LIBLINEAR和Vowpal Wabbit,雖然它們以外部shell命令運行,但很容易用Python腳本封裝和定向。

      第4章為在Theano框架中應用深度神經網絡以及使用H2O進行大規模處理提供有用策略。盡管這是個熱門話題,但成功應用它會相當困難,更別說提供可擴展的解決方案。另外,還將學習使用theanets包中的自動編碼器實現無監督的預訓練。

      第5章介紹有趣的深度學習技術與在線神經網絡方法。雖然TensorFlow還處于起步階段,但該框架提供了非常不錯的機器學習解決方案。此外,還將詳解如何在TensorFlow環境中使用Keras卷積神經網絡功能。

      第6章詳解隨機森林、梯度增強和XGboost的可擴展解決方案。CART是分類和回歸樹的縮寫,它是一種通常應用于集成方法框架的機器學習方法。我們還將演示使用H2O的大規模應用實例。

      第7章深入介紹無監督學習、PCA、聚類分析和主題建模方法,并使用正確方法對它們進行擴展。

      第8章學習如何在虛擬機環境中設置Spark,以便從單臺機器轉移到網絡計算范例。Python很容易在機器集群上集成并能增強我們的工作效率,因此很容易利用Hadoop集群的能力。

      第9章演示使用Spark處理數據和在大數據集上構建預測模型的所有重要環節。

      附錄介紹GPU和Theano,包括Theano和GPU計算的基礎知識。如果你的系統允許,還將幫助讀者學習相關安裝和環境配置,以便在GPU上使用Theano。

      本書要求

      運行書中代碼示例需要在macOS、Linux或Microsoft Windows上安裝Python 2.7或更高版本。

      書中示例經常使用Python的基本功能庫,例如SciPy、NumPy、Scikitlearn和StatsModels,并且在某種程度上使用matplotlib和pandas進行科學和統計計算。也會使用稱為H2O的非核心云計算應用程序。

      本書需要Jupyter及其Python內核驅動的Notebooks,本書使用最新版本4.1。

      第1章將為設置Python環境、核心庫以及全部必需工具提供所有分步說明和某些技巧。

      本書讀者

      本書適合數據科學從業者、開發人員以及計劃使用大型復雜數據集的讀者。 我們努力讓本書擁有盡可能好的可讀性,以便適合更多讀者。 考慮到本書主題非常先進,我們建議讀者先熟悉基本的機器學習概念,如分類和回歸、誤差最小化函數和交叉驗證等,但不嚴格要求讀者必須這樣做。本書假設讀者了解Python、Jupyter Notebooks和命令行運行,并有一定的數學基礎,能夠掌握書中的各種大型解決方案背后的概念。本書寫作風格也適合使用其他語言(R、Java和MATLAB)的程序員。 理想情況下,非常適合(但不限于)熟悉機器學習并有興趣使用Python的數據科學家,因為相比于R或MATLAB而言,Python在計算、內存和I/O方面有優勢。

      排版約定

      書中代碼塊設置如下:

      大多數示例中使用Jupyter Notebooks,所以希望在包含代碼塊的單元中始終帶有輸入(標記為In:),并通常帶有輸出(標記為Out:)。在你的計算機上,只需輸入In:后面的代碼,并檢查結果是否與Out:后面的內容相對應:

      在終端命令行中給出命令時,會帶有前綴$>,否則,如果是Python REPL,則以>>>開頭:

      表示警告或重要說明。

      表示提示和技巧。

      下載示例代碼及彩***像

      本書的示例代碼及所有截圖和樣圖,可以從http://www.packtpub.com通過個人賬號下載,也可以訪問華章圖書官網http://www.hzbook.com,通過注冊并登錄個人賬號下載。

      還可以從GitHub獲取本書代碼:

      https://github.com/PacktPublishing/LargeScaleMachineLearningWithPython。

      作 者 簡 介

      Bastiaan Sjardin是一位具有人工智能和數學背景的數據科學家和公司創始人。他獲得萊頓大學和麻省理工學院(MIT)校園課程聯合培養的認知科學碩士學位。在過去五年中,他從事過廣泛的數據科學和人工智能項目。他是密歇根大學社會網絡分析課程Coursera和約翰斯·霍普金斯大學機器學習實踐課程的常客。他擅長Python和R編程語言。目前,他是Quandbee(http://www.quandbee.com)的聯合創始人,該公司主要提供大規模機器學習和人工智能應用。

      Luca Massaron是一位數據科學家和市場研究總監,擅長多元統計分析、機器學習和客戶洞察力研究,在解決實際問題和應用推理、統計、數據挖掘和算法來為用戶創造價值方面有十多年經驗。從成為意大利網絡觀眾分析的先驅,到躋身前十名的Kaggler,他一直對數據分析充滿熱情,還向專業人士和普通大眾展示數據驅動知識發現的潛力,相比不必要的復雜性,他更喜歡簡潔。他相信僅僅通過基本操作就可以在數據科學中收獲很多東西。

      Alberto Boschetti是一位具有信號處理和統計專業知識的數據科學家。他獲得電信工程博士學位,目前在倫敦生活和工作。在其工作項目中,他面臨過從自然語言處理(NLP)和機器學習到分布式處理的挑戰。 他在工作中充滿熱情,始終努力了解數據科學的最新發展,他喜歡參加聚會、會議和其他活動。

      審校者簡介

      Oleg Okun是一位機器學習專家,曾編輯出版四部著作、多篇期刊論文和會議論文。Oleg有25年工作經歷,其間,他曾在其祖國白俄羅斯和國外(芬蘭、瑞典和德國)的學術界和工業界工作過。其工作經驗包括文檔圖像分析、指紋生物識別、生物信息學、在線/離線營銷分析和信用評分分析。他對分布式機器學習和物聯網的各個方面都感興趣。目前Oleg在德國漢堡生活和工作,即將擔任智能系統的首席架構師。他擅長的編程語言是Python、R和Scala。

      Kai Londenberg是一位擁有多年專業經驗的數據科學家和大數據專家。 目前在大眾汽車實驗室擔任數據科學家。在此之前,他有幸成為Searchmetrics公司的首席數據科學家,Luca Massaron 曾是他的團隊成員。Kai喜歡使用尖端技術,雖然他是一名務實的機器學習從業者和軟件開發人員,但他總是樂于學習機器學習、人工智能和相關領域的最新技術和研究成果。https://www.linkedin.com/in/kailondenberg是其LinkedIn個人網址。

      目錄

      譯者序

      前言

      審校者簡介

      第1章邁向可擴展性的第一步1

      1.1詳細解釋可擴展性1

      1.1.1大規模實例3

      1.1.2介紹Python4

      1.1.3使用Python進行向上擴展4

      1.1.4使用Python進行向外擴展5

      1.2Python用于大規模機器學習6

      1.2.1選擇Python 2還是Python 36

      1.2.2安裝Python7

      1.2.3逐步安裝7

      1.2.4安裝軟件包8

      1.2.5軟件包升級9

      1.2.6科學計算發行版10

      1.2.7Jupyter/IPython介紹11

      1.3Python包13

      1.3.1NumPy14

      1.3.2SciPy14

      1.3.3pandas14

      1.3.4Scikit-learn15

      1.3.5小結21

      第2章Scikit-learn中的可擴展學習22

      2.1非核心學習22

      2.1.1選擇子采樣23

      2.1.2一次優化一個實例24

      2.1.3構建非核心學習系統25

      2.2流化源數據25

      2.2.1處理真實數據集26

      2.2.2第一個示例——流化共享單車數據集28

      2.2.3使用pandas I/O工具30

      2.2.4使用數據庫31

      2.2.5關注實例排序35

      2.3隨機學習37

      2.3.1批處理梯度下降37

      2.3.2隨機梯度下降40

      2.3.3Scikit-learn的SGD實現40

      2.3.4定義SGD學習參數42

      2.4數據流的特征管理43

      2.4.1描述目標46

      2.4.2哈希技巧49

      2.4.3其他基本變換51

      2.4.4流測試和驗證52

      2.4.5使用SGD52

      2.5小結56

      第3章實現快速SVM57

      3.1測試數據集58

      3.1.1共享單車數據集58

      3.1.2森林覆蓋類型數據集58

      3.2支持向量機59

      3.2.1hinge loss及其變形64

      3.2.2Scikit-learn的SVM實現65

      3.2.3探究通過子采樣改善非線性SVM68

      3.2.4使用SGD實現大規模SVM70

      3.3正則化特征選擇77

      3.4SGD中的非線性78

      3.5超參數調整82

      3.6小結96

      第4章神經網絡與深度學習97

      4.1神經網絡架構98

      4.1.1神經網絡如何學習106

      4.1.2選擇正確的架構110

      4.1.3使用神經網絡111

      4.1.4sknn并行化111

      4.2神經網絡和正則化113

      4.3神經網絡和超參數優化115

      4.4神經網絡和決策邊界117

      4.5用H2O進行規模化深度學習120

      4.5.1用H2O進行大規模深度學習121

      4.5.2H2O上的網格搜索124

      4.6深度學習和無監督預訓練126

      4.7使用theanets進行深度學習126

      4.8自動編碼器和無監督學習128

      4.9小結131

      第5章用TensorFlow進行深度學習132

      5.1TensorFlow安裝134

      5.2在TensorFlow上使用SkFlow進行機器學習140

      5.3安裝Keras和TensorFlow148

      5.4在TensorFlow中通過Keras實現卷積神經網絡152

      5.4.1卷積層153

      5.4.2池化層153

      5.4.3全連接層154

      5.5增量CNN方法156

      5.6GPU計算156

      5.7小結159

      第6章大規模分類和回歸樹160

      6.1bootstrap聚合162

      6.2隨機森林和極端隨機森林163

      6.3隨機搜索實現快速參數優化167

      6.4CART和boosting172

      6.5XGBoost179

      6.5.1XGBoost回歸181

      6.5.2XGBoost流化大型數據集184

      6.5.3XGBoost模型存儲185

      6.6用H2O實現非核心CART185

      6.6.1H2O上的隨機森林和網格搜索186

      6.6.2H2O上的隨機梯度增強和網格搜索188

      6.7小結191

      第7章大規模無監督學習192

      7.1無監督方法192

      7.2特征分解:PCA193

      7.2.1隨機化PCA199

      7.2.2增量PCA200

      7.2.3稀疏PCA201

      7.3使用H2O的PCA202

      7.4K-均值聚類算法203

      7.4.1初始化方法206

      7.4.2K-均值假設206

      7.4.3選擇最佳K209

      7.4.4擴展K-均值算法:小批量212

      7.5用H2O實現K-均值216

      7.6LDA218

      7.7小結226

      第8章分布式環境——Hadoop和Spark227

      8.1從單機到集群227

      8.2設置VM230

      8.2.1VirtualBox230

      8.2.2Vagrant232

      8.2.3使用VM232

      8.3Hadoop生態系統234

      8.3.1架構234

      8.3.2HDFS235

      8.3.3MapReduce242

      8.3.4YARN250

      8.4Spark250

      8.5小結260

      第9章Spark機器學習實踐261

      9.1為本章設置虛擬機261

      9.2跨集群節點共享變量262

      9.2.1廣播只讀變量262

      9.2.2累加器只寫變量264

      9.2.3廣播和累加器的示例265

      9.3Spark的數據預處理267

      9.3.1JSON文件和Spark DataFrame268

      《Python大規模機器學習》

      9.3.2處理缺失數據270

      9.3.3在內存中分組和創建表271

      9.3.4將預處理的DataFrame或RDD寫入磁盤273

      9.3.5使用Spark DataFrame274

      9.4Spark機器學習276

      9.4.1Spark處理KDD99數據集277

      9.4.2讀取數據集277

      9.4.3特征工程280

      9.4.4訓練學習器284

      9.4.5評估學習器的表現286

      9.4.6機器學習管道的威力286

      9.4.7手動優化288

      9.4.8交叉驗證291

      9.5小結293

      附錄介紹GPU和Theano294

      Python 深度學習 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:WPS如何制作具有動態效果的藝術字體
      下一篇:Excel中表格下拉線的操作方法(表格下劃線怎么弄短)
      相關文章
      亚洲一区二区三区无码中文字幕 | 久久精品国产亚洲| 亚洲AV女人18毛片水真多| 亚洲一级黄色大片| 亚洲一区在线观看视频| 亚洲av永久无码精品天堂久久 | 国产日产亚洲系列最新| 亚洲精品无码日韩国产不卡?V| 国产亚洲人成在线影院| 亚洲高清免费视频| 亚洲精品国产精品乱码不卞| 亚洲精品国产V片在线观看 | 亚洲另类古典武侠| 亚洲六月丁香婷婷综合| 成人区精品一区二区不卡亚洲| 亚洲欧洲校园自拍都市| 亚洲人成网站日本片| 33333在线亚洲| 亚洲精品精华液一区二区| 狠狠入ady亚洲精品| 亚洲伊人成无码综合网| 怡红院亚洲怡红院首页| 亚洲国产综合无码一区| 亚洲AV日韩精品久久久久| 久久精品国产亚洲av影院| 亚洲激情黄色小说| 亚洲精品二三区伊人久久| 亚洲av永久无码精品网址| 亚洲电影日韩精品| 亚洲乱码无码永久不卡在线| 亚洲精品免费视频| 亚洲伊人久久大香线蕉在观| 亚洲午夜理论片在线观看| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲午夜久久久影院伊人| 久久夜色精品国产嚕嚕亚洲av| 久久久无码精品亚洲日韩蜜臀浪潮 | 国产a v无码专区亚洲av | 亚洲人成电影网站色| 国产精品亚洲一区二区三区在线观看 | 国产亚洲精品久久久久秋霞|