Python大規(guī)模機器學(xué)習(xí)
定 價:89 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[荷]巴斯蒂安·賈。˙astiaan Sjardin) 等
- 出版時間:2019/5/1
- ISBN:9787111623144
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
擁有大腦的好處在于:一個人可以學(xué)習(xí),無知可以變成有知,點滴知識可以逐漸匯聚成江海
Douglas Hofstadter
機器學(xué)習(xí)屬于人工智能范疇,其目的是基于現(xiàn)有數(shù)據(jù)集(訓(xùn)練集)來尋找函數(shù),以便以盡可能高的正確性預(yù)測先前未見過的數(shù)據(jù)集(測試集)的結(jié)果,這通常以標(biāo)簽和類別的形式(分類問題)或以連續(xù)值的形式(回歸問題)出現(xiàn)。在實際應(yīng)用中,機器學(xué)習(xí)的具體實例包括預(yù)測未來股票價格,或從一組文件中對作者性別進行分類,等等。本書介紹最重要的機器學(xué)習(xí)概念和適合更大數(shù)據(jù)集的方法,并通過Python的實際示例向讀者進行講解。主要討論監(jiān)督學(xué)習(xí)(分類和回歸),以及適用于更大數(shù)據(jù)集的無監(jiān)督學(xué)習(xí),比如主成分分析(PCA)、聚類和主題建模。
谷歌、Facebook和優(yōu)步等大型IT公司都聲稱它們成功地大規(guī)模應(yīng)用了這樣的機器學(xué)習(xí)方法,從而引起世界轟動。隨著大數(shù)據(jù)的出現(xiàn)和適用性提高,對可擴展機器學(xué)習(xí)解決方案的需求呈指數(shù)增長,導(dǎo)致許多其他公司甚至個人也已經(jīng)開始渴望在大數(shù)據(jù)集中挖掘隱藏的相關(guān)性成果。不幸的是,大多數(shù)學(xué)習(xí)算法都不能很好擴展,會在臺式計算機或較大的計算集群上導(dǎo)致CPU和內(nèi)存過載。因此,即使大數(shù)據(jù)的炒作高峰已經(jīng)過去,但可擴展機器學(xué)習(xí)解決方案并不充裕。
坦率地說,仍然需要解決許多瓶頸問題,即便是很難歸類為大數(shù)據(jù)的數(shù)據(jù)集也如此(有的數(shù)據(jù)集高達2GB甚至更大)。本書的任務(wù)是提供合適的方法(有時甚至是非常規(guī)方法),以便大規(guī)模應(yīng)用最強大的開源機器學(xué)習(xí)方法,而無須昂貴的企業(yè)解決方案或大型計算集群。通過本書,讀者可以學(xué)習(xí)使用Python和其他一些可用的解決方案(這些方案與可擴展的機器學(xué)習(xí)流水線能很好地集成)。閱讀這本書是一次旅程,它將讓你對機器學(xué)習(xí)有一個全新的了解,從而為你開始真正的大數(shù)據(jù)分析奠定基礎(chǔ)。
本書涵蓋的內(nèi)容
第1章以正確視角提出可擴展機器學(xué)習(xí)的問題,以便你熟悉本書中將要使用的工具。
第2章討論采用隨機梯度下降(SGD)策略減少內(nèi)存消耗,它基于非核心學(xué)習(xí)的主題。另外演示各種數(shù)據(jù)的不同處理技術(shù),例如散列技巧。
第3章介紹流算法,它能夠以支持向量機的形式發(fā)現(xiàn)非線性。我們將介紹目前Scikit-learn的替代方法,如LIBLINEAR和Vowpal Wabbit,雖然它們以外部shell命令運行,但很容易用Python腳本封裝和定向。
第4章為在Theano框架中應(yīng)用深度神經(jīng)網(wǎng)絡(luò)以及使用H2O進行大規(guī)模處理提供有用策略。盡管這是個熱門話題,但成功應(yīng)用它會相當(dāng)困難,更別說提供可擴展的解決方案。另外,還將學(xué)習(xí)使用theanets包中的自動編碼器實現(xiàn)無監(jiān)督的預(yù)訓(xùn)練。
第5章介紹有趣的深度學(xué)習(xí)技術(shù)與在線神經(jīng)網(wǎng)絡(luò)方法。雖然TensorFlow還處于起步階段,但該框架提供了非常不錯的機器學(xué)習(xí)解決方案。此外,還將詳解如何在TensorFlow環(huán)境中使用Keras卷積神經(jīng)網(wǎng)絡(luò)功能。
第6章詳解隨機森林、梯度增強和XGboost的可擴展解決方案。CART是分類和回歸樹的縮寫,它是一種通常應(yīng)用于集成方法框架的機器學(xué)習(xí)方法。我們還將演示使用H2O的大規(guī)模應(yīng)用實例。
第7章深入介紹無監(jiān)督學(xué)習(xí)、PCA、聚類分析和主題建模方法,并使用正確方法對它們進行擴展。
第8章學(xué)習(xí)如何在虛擬機環(huán)境中設(shè)置Spark,以便從單臺機器轉(zhuǎn)移到網(wǎng)絡(luò)計算范例。Python很容易在機器集群上集成并能增強我們的工作效率,因此很容易利用Hadoop集群的能力。
第9章演示使用Spark處理數(shù)據(jù)和在大數(shù)據(jù)集上構(gòu)建預(yù)測模型的所有重要環(huán)節(jié)。
附錄介紹GPU和Theano,包括Theano和GPU計算的基礎(chǔ)知識。如果你的系統(tǒng)允許,還將幫助讀者學(xué)習(xí)相關(guān)安裝和環(huán)境配置,以便在GPU上使用Theano。
本書要求
運行書中代碼示例需要在macOS、Linux或Microsoft Windows上安裝Python 27或更高版本。
書中示例經(jīng)常使用Python的基本功能庫,例如SciPy、NumPy、Scikitlearn和StatsModels,并且在某種程度上使用matplotlib和pandas進行科學(xué)和統(tǒng)計計算。也會使用稱為H2O的非核心云計算應(yīng)用程序。
本書需要Jupyter及其Python內(nèi)核驅(qū)動的Notebooks,本書使用最新版本41。
第1章將為設(shè)置Python環(huán)境、核心庫以及全部必需工具提供所有分步說明和某些技巧。
本書讀者
本書適合數(shù)據(jù)科學(xué)從業(yè)者、開發(fā)人員以及計劃使用大型復(fù)雜數(shù)據(jù)集的讀者。 我們努力讓本書擁有盡可能好的可讀性,以便適合更多讀者。 考慮到本書主題非常先進,我們建議讀者先熟悉基本的機器學(xué)習(xí)概念,如分類和回歸、誤差最小化函數(shù)和交叉驗證等,但不嚴(yán)格要求讀者必須這樣做。本書假設(shè)讀者了解Python、Jupyter Notebooks和命令行運行,并有一定的數(shù)學(xué)基礎(chǔ),能夠掌握書中的各種大型解決方案背后的概念。本書寫作風(fēng)格也適合使用其他語言(R、Java和MATLAB)的程序員。 理想情況下,非常適合(但不限于)熟悉機器學(xué)習(xí)并有興趣使用Python的數(shù)據(jù)科學(xué)家,因為相比于R或MATLAB而言,Python在計算、內(nèi)存和I/O方面有優(yōu)勢。
排版約定
書中代碼塊設(shè)置如下:
大多數(shù)示例中使用Jupyter Notebooks,所以希望在包含代碼塊的單元中始終帶有輸入(標(biāo)記為In:),并通常帶有輸出(標(biāo)記為Out:)。在你的計算機上,只需輸入In:后面的代碼,并檢查結(jié)果是否與Out:后面的內(nèi)容相對應(yīng):
在終端命令行中給出命令時,會帶有前綴$>,否則,如果是Python REPL,則以>>>開頭:
表示警告或重要說明。
表示提示和技巧。
下載示例代碼及彩色圖像
本書的示例代碼及所有截圖和樣圖,可以從http://wwwpacktpubcom通過個人賬號下載,也可以訪問華章圖書官網(wǎng)http://wwwhzbookcom,通過注冊并登錄個人賬號下載。
還可以從GitHub獲取本書代碼:
https://githubcom/PacktPublishing/LargeScaleMachineLearningWithPython。
Bastiaan Sjardin是一位具有人工智能和數(shù)學(xué)背景的數(shù)據(jù)科學(xué)家和公司創(chuàng)始人。他獲得萊頓大學(xué)和麻省理工學(xué)院(MIT)校園課程聯(lián)合培養(yǎng)的認(rèn)知科學(xué)碩士學(xué)位。在過去五年中,他從事過廣泛的數(shù)據(jù)科學(xué)和人工智能項目。他是密歇根大學(xué)社會網(wǎng)絡(luò)分析課程Coursera和約翰斯·霍普金斯大學(xué)機器學(xué)習(xí)實踐課程的?。他擅長Python和R編程語言。目前,他是Quandbee(http://wwwquandbeecom)的聯(lián)合創(chuàng)始人,該公司主要提供大規(guī)模機器學(xué)習(xí)和人工智能應(yīng)用。
Luca Massaron是一位數(shù)據(jù)科學(xué)家和市場研究總監(jiān),擅長多元統(tǒng)計分析、機器學(xué)習(xí)和客戶洞察力研究,在解決實際問題和應(yīng)用推理、統(tǒng)計、數(shù)據(jù)挖掘和算法來為用戶創(chuàng)造價值方面有十多年經(jīng)驗。從成為意大利網(wǎng)絡(luò)觀眾分析的先驅(qū),到躋身前十名的Kaggler,他一直對數(shù)據(jù)分析充滿熱情,還向?qū)I(yè)人士和普通大眾展示數(shù)據(jù)驅(qū)動知識發(fā)現(xiàn)的潛力,相比不必要的復(fù)雜性,他更喜歡簡潔。他相信僅僅通過基本操作就可以在數(shù)據(jù)科學(xué)中收獲很多東西。
Alberto Boschetti是一位具有信號處理和統(tǒng)計專業(yè)知識的數(shù)據(jù)科學(xué)家。他獲得電信工程博士學(xué)位,目前在倫敦生活和工作。在其工作項目中,他面臨過從自然語言處理(NLP)和機器學(xué)習(xí)到分布式處理的挑戰(zhàn)。 他在工作中充滿熱情,始終努力了解數(shù)據(jù)科學(xué)的*新發(fā)展,他喜歡參加聚會、會議和其他活動。
譯者序
前言
作者簡介
審校者簡介
第1章邁向可擴展性的第一步1
11詳細(xì)解釋可擴展性1
111大規(guī)模實例3
112介紹Python4
113使用Python進行向上擴展4
114使用Python進行向外擴展5
12Python用于大規(guī)模機器學(xué)習(xí)6
121選擇Python 2還是Python 36
122安裝Python7
123逐步安裝7
124安裝軟件包8
125軟件包升級9
126科學(xué)計算發(fā)行版10
127Jupyter/IPython介紹11
13Python包13
131NumPy14
132SciPy14
133pandas14
134Scikitlearn15
135小結(jié)21
第2章Scikitlearn中的可擴展學(xué)習(xí)22
21非核心學(xué)習(xí)22
211選擇子采樣23
212一次優(yōu)化一個實例24
213構(gòu)建非核心學(xué)習(xí)系統(tǒng)25
22流化源數(shù)據(jù)25
221處理真實數(shù)據(jù)集26
222第一個示例流化共享單車數(shù)據(jù)集28
223使用pandas I/O工具30
224使用數(shù)據(jù)庫31
225關(guān)注實例排序35
23隨機學(xué)習(xí)37
231批處理梯度下降37
232隨機梯度下降40
233Scikitlearn的SGD實現(xiàn)40
234定義SGD學(xué)習(xí)參數(shù)42
24數(shù)據(jù)流的特征管理43
241描述目標(biāo)46
242哈希技巧49
243其他基本變換51
244流測試和驗證52
245使用SGD52
25小結(jié)56
第3章實現(xiàn)快速SVM57
31測試數(shù)據(jù)集58
311共享單車數(shù)據(jù)集58
312森林覆蓋類型數(shù)據(jù)集58
32支持向量機59
321hinge loss及其變形64
322Scikitlearn的SVM實現(xiàn)65
323探究通過子采樣改善非線性SVM68
324使用SGD實現(xiàn)大規(guī)模SVM70
33正則化特征選擇77
34SGD中的非線性78
35超參數(shù)調(diào)整82
36小結(jié)96
第4章神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)97
41神經(jīng)網(wǎng)絡(luò)架構(gòu)98
411神經(jīng)網(wǎng)絡(luò)如何學(xué)習(xí)106
412選擇正確的架構(gòu)110
413使用神經(jīng)網(wǎng)絡(luò)111
414sknn并行化111
42神經(jīng)網(wǎng)絡(luò)和正則化113
43神經(jīng)網(wǎng)絡(luò)和超參數(shù)優(yōu)化115
44神經(jīng)網(wǎng)絡(luò)和決策邊界117
45用H2O進行規(guī);疃葘W(xué)習(xí)120
451用H2O進行大規(guī)模深度學(xué)習(xí)121
452H2O上的網(wǎng)格搜索124
46深度學(xué)習(xí)和無監(jiān)督預(yù)訓(xùn)練126
47使用theanets進行深度學(xué)習(xí)126
48自動編碼器和無監(jiān)督學(xué)習(xí)128
49小結(jié)131
第5章用TensorFlow進行深度學(xué)習(xí)132
51TensorFlow安裝134
52在TensorFlow上使用SkFlow進行機器學(xué)習(xí)140
53安裝Keras和TensorFlow148
54在TensorFlow中通過Keras實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)152
541卷積層153
542池化層153
543全連接層154
55增量CNN方法156
56GPU計算156
57小結(jié)159
第6章大規(guī)模分類和回歸樹160
61bootstrap聚合162
62隨機森林和極端隨機森林163
63隨機搜索實現(xiàn)快速參數(shù)優(yōu)化167
64CART和boosting172
65XGBoost179
651XGBoost回歸181
652XGBoost流化大型數(shù)據(jù)集184
653XGBoost模型存儲185
66用H2O實現(xiàn)非核心CART185
661H2O上的隨機森林和網(wǎng)格搜索186
662H2O上的隨機梯度增強和網(wǎng)格搜索188
67小結(jié)191
第7章大規(guī)模無監(jiān)督學(xué)習(xí)192
71無監(jiān)督方法192
72特征分解:PCA193
721隨機化PCA199
722增量PCA200
723稀疏PCA201
73使用H2O的PCA202
74K-均值聚類算法203
741初始化方法206
742K-均值假設(shè)206
743選擇最佳K209
744擴展K-均值算法:小批量212
75用H2O實現(xiàn)K-均值216
76LDA218
77小結(jié)226
第8章分布式環(huán)境Hadoop和Spark227
81從單機到集群227
82設(shè)置VM230
821VirtualBox230
822Vagrant232
823使用VM232
83Hadoop生態(tài)系統(tǒng)234
831架構(gòu)234
832HDFS235
833MapReduce242
834YARN250
84Spark250
85小結(jié)260
第9章Spark機器學(xué)習(xí)實踐261
91為本章設(shè)置虛擬機261
92跨集群節(jié)點共享變量262
921廣播只讀變量262
922累加器只寫變量264
923廣播和累加器的示例265
93Spark的數(shù)據(jù)預(yù)處理267
931JSON文件和Spark DataFrame268
932處理缺失數(shù)據(jù)270
933在內(nèi)存中分組和創(chuàng)建表271
934將預(yù)處理的DataFrame或RDD寫入磁盤273
935使用Spark DataFrame274
94Spark機器學(xué)習(xí)276
941Spark處理KDD99數(shù)據(jù)集277
942讀取數(shù)據(jù)集277
943特征工程280
944訓(xùn)練學(xué)習(xí)器284
945評估學(xué)習(xí)器的表現(xiàn)286
946機器學(xué)習(xí)管道的威力286
947手動優(yōu)化288
948交叉驗證291
95小結(jié)293
附錄介紹GPU和Theano294