內容介紹
機器學習是人工智慧研究領域中一個極其重要的研究方向,在現今的大數據時代背景下,捕獲數據並從中萃取有價值的信息或模式,成為各行業求生存、謀發展的決定性手段,這使得這一過去為分析師和數學家所專屬的研究領域越來越為人們所矚目。本書第一部分主要介紹機器學習基礎,以及如何利用算法進行分類,並逐步介紹了多種經典的監督學習算法,如k近鄰算法、樸素貝葉斯算法、Logistic回歸算法、支持向量機、AdaBoost集成方法、基於樹的回歸算法和分類回歸樹(CART)算法等。第三部分則重點介紹無監督學習及其一些主要算法:k均值聚類算法、Apriori算法、FP-Growth算法。第四部分介紹了機器學習算法的一些附屬工具。
全書通過精心編排的實例,切入日常工作任務,摒棄學術化語言,利用高效的可復用Python代碼來闡釋如何處理統計數據,進行數據分析及可視化。通過各種實例,讀者可從中學會機器學習的核心算法,並能將其運用於一些策略性任務中,如分類、預測、推薦。另外,還可用它們來實現一些更高級的功能,如匯總和簡化等。
作者介紹
Peter Harrington擁有電氣工程學士和碩士學位,他曾經在美國加州和中國的英特爾公司工作7年。Peter擁有5項美國專利,在三種學術期刊上發表過文章。他現在是Zillabyte公司的首席科學家,在加入該公司之前,他曾擔任2年的機器學習軟體顧問。Peter在業餘時間還參加編程競賽和建造3D印表機。
作品目錄
目 錄第一部分 分類
第1章 機器學習基礎2
1.1 何謂機器學習3
1.1.1 感測器和海量數據4
1.1.2 機器學習非常重要5
1.2 關鍵術語5
1.3 機器學習的主要任務7
1.4 如何選擇合適的算法8
1.5 開發機器學習應用程式的步驟9
1.6 Python語言的優勢10
1.6.1 可執行偽代碼10
1.6.2 Python比較流行10
1.6.3 Python語言的特色11
1.6.4 Python語言的缺點11
1.7 NumPy函式館基礎12
1.8 本章小結13
第2章 k-近鄰算法 15
2.1 k-近鄰算法概述15
2.1.1 準備:使用Python導入數據17
2.1.2 從文本檔案中解析數據19
2.1.3 如何測試分類器20
2.2 示例:使用k-近鄰算法改進約會網站的配對效果20
2.2.1 準備數據:從文本檔案中解析數據21
2.2.2 分析數據:使用Matplotlib創建散點圖23
2.2.3 準備數據:歸一化數值25
2.2.4 測試算法:作為完整程式驗證分類器26
2.2.5 使用算法:構建完整可用系統27
2.3 示例:手寫識別系統28
2.3.1 準備數據:將圖像轉換為測試向量29
2.3.2 測試算法:使用k-近鄰算法識別手寫數字30
2.4 本章小結31
第3章 決策樹 32
3.1 決策樹的構造33
3.1.1 信息增益35
3.1.2 劃分數據集37
3.1.3 遞歸構建決策樹39
3.2 在Python中使用Matplotlib註解繪製樹形圖42
3.2.1 Matplotlib註解43
3.2.2 構造註解樹44
3.3 測試和存儲分類器48
3.3.1 測試算法:使用決策樹執行分類49
3.3.2 使用算法:決策樹的存儲50
3.4 示例:使用決策樹預測隱形眼鏡類型50
3.5 本章小結52
第4章 基於機率論的分類方法:樸素貝葉斯 53
4.1 基於貝葉斯決策理論的分類方法53
4.2 條件機率55
4.3 使用條件機率來分類56
4.4 使用樸素貝葉斯進行文檔分類57
4.5 使用Python進行文本分類58
4.5.1 準備數據:從文本中構建詞向量58
4.5.2 訓練算法:從詞向量計算機率60
4.5.3 測試算法:根據現實情況修改分類器62
4.5.4 準備數據:文檔詞袋模型64
4.6 示例:使用樸素貝葉斯過濾垃圾郵件64
4.6.1 準備數據:切分文本65
4.6.2 測試算法:使用樸素貝葉斯進行交叉驗證66
4.7 示例:使用樸素貝葉斯分類器從個人廣告中獲取區域傾向68
4.7.1 收集數據:導入RSS源68
4.7.2 分析數據:顯示地域相關的用詞71
4.8 本章小結72
第5章 Logistic回歸 73
5.1 基於Logistic回歸和Sigmoid函式的分類74
5.2 基於最最佳化方法的最佳回歸係數確定75
5.2.1 梯度上升法75
5.2.2 訓練算法:使用梯度上升找到最佳參數77
5.2.3 分析數據:畫出決策邊界79
5.2.4 訓練算法:隨機梯度上升80
5.3 示例:從疝氣病症預測病馬的死亡率85
5.3.1 準備數據:處理數據中的缺失值85
5.3.2 測試算法:用Logistic回歸進行分類86
5.4 本章小結88
第6章 支持向量機89
6.1 基於最大間隔分隔數據89
6.2 尋找最大間隔91
6.2.1 分類器求解的最佳化問題92
6.2.2 SVM套用的一般框架93
6.3 SMO高效最佳化算法94
6.3.1 Platt的SMO算法94
6.3.2 套用簡化版SMO算法處理小規模數據集94
6.4 利用完整Platt SMO算法加速最佳化99
6.5 在複雜數據上套用核函式105
6.5.1 利用核函式將數據映射到高維空間106
6.5.2 徑向基核函式106
6.5.3 在測試中使用核函式108
6.6 示例:手寫識別問題回顧111
6.7 本章小結113
第7章 利用AdaBoost元算法提高分類
性能 115
7.1 基於數據集多重抽樣的分類器115
7.1.1 bagging:基於數據隨機重抽樣的分類器構建方法116
7.1.2 boosting116
7.2 訓練算法:基於錯誤提升分類器的性能117
7.3 基於單層決策樹構建弱分類器118
7.4 完整AdaBoost算法的實現122
7.5 測試算法:基於AdaBoost的分類124
7.6 示例:在一個難數據集上套用AdaBoost125
7.7 非均衡分類問題127
7.7.1 其他分類性能度量指標:正確率、召回率及ROC曲線128
7.7.2 基於代價函式的分類器決策控制131
7.7.3 處理非均衡問題的數據抽樣方法132
7.8 本章小結132
第二部分 利用回歸預測數值型數據
第8章 預測數值型數據:回歸 136
8.1 用線性回歸找到最佳擬合直線136
8.2 局部加權線性回歸141
8.3 示例:預測鮑魚的年齡145
8.4 縮減係數來“理解”數據146
8.4.1 嶺回歸146
8.4.2 lasso148
8.4.3 前向逐步回歸149
8.5 權衡偏差與方差152
8.6 示例:預測樂高玩具套裝的價格153
8.6.1 收集數據:使用Google購物的API153
8.6.2 訓練算法:建立模型155
8.7 本章小結158
第9章 樹回歸159
9.1 複雜數據的局部性建模159
9.2 連續和離散型特徵的樹的構建160
9.3 將CART算法用於回歸163
9.3.1 構建樹163
9.3.2 運行代碼165
9.4 樹剪枝167
9.4.1 預剪枝167
9.4.2 後剪枝168
9.5 模型樹170
9.6 示例:樹回歸與標準回歸的比較173
9.7 使用Python的Tkinter庫創建GUI176
9.7.1 用Tkinter創建GUI177
9.7.2 集成Matplotlib和Tkinter179
9.8 本章小結182
第三部分 無監督學習
第10章 利用K-均值聚類算法對未標註數據分組184
10.1 K-均值聚類算法185
10.2 使用後處理來提高聚類性能189
10.3 二分K-均值算法190
10.4 示例:對地圖上的點進行聚類193
10.4.1 Yahoo! PlaceFinder API194
10.4.2 對地理坐標進行聚類196
10.5 本章小結198
第11章 使用Apriori算法進行關聯分析200
11.1 關聯分析201
11.2 Apriori原理202
11.3 使用Apriori算法來發現頻繁集204
11.3.1 生成候選項集204
11.3.2 組織完整的Apriori算法207
11.4 從頻繁項集中挖掘關聯規則209
11.5 示例:發現國會投票中的模式212
11.5.1 收集數據:構建美國國會投票記錄的事務數據集213
11.5.2 測試算法:基於美國國會投票記錄挖掘關聯規則219
11.6 示例:發現毒蘑菇的相似特徵220
11.7 本章小結221
第12章 使用FP-growth算法來高效發現頻繁項集223
12.1 FP樹:用於編碼數據集的有效方式224
12.2 構建FP樹225
12.2.1 創建FP樹的數據結構226
12.2.2 構建FP樹227
12.3 從一棵FP樹中挖掘頻繁項集231
12.3.1 抽取條件模式基231
12.3.2 創建條件FP樹232
12.4 示例:在Twitter源中發現一些共現詞235
12.5 示例:從新聞網站點擊流中挖掘238
12.6 本章小結239
第四部分 其他工具
第13章 利用PCA來簡化數據242
13.1 降維技術242
13.2 PCA243
13.2.1 移動坐標軸243
13.2.2 在NumPy中實現PCA246
13.3 示例:利用PCA對半導體製造數據降維248
13.4 本章小結251
第14章 利用SVD簡化數據252
14.1 SVD的套用252
14.1.1 隱性語義索引253
14.1.2 推薦系統253
14.2 矩陣分解254
14.3 利用Python實現SVD255
14.4 基於協同過濾的推薦引擎257
14.4.1 相似度計算257
14.4.2 基於物品的相似度還是基於用戶的相似度?260
14.4.3 推薦引擎的評價260
14.5 示例:餐館菜餚推薦引擎260
14.5.1 推薦未嘗過的菜餚261
14.5.2 利用SVD提高推薦的效果263
14.5.3 構建推薦引擎面臨的挑戰265
14.6 基於SVD的圖像壓縮266
14.7 本章小結268
第15章 大數據與MapReduce270
15.1 MapReduce:分散式計算的框架271
15.2 Hadoop流273
15.2.1 分散式計算均值和方差的mapper273
15.2.2 分散式計算均值和方差的reducer274
15.3 在Amazon網路服務上運行Hadoop程式275
15.3.1 AWS上的可用服務276
15.3.2 開啟Amazon網路服務之旅276
15.3.3 在EMR上運行Hadoop作業278
15.4 MapReduce上的機器學習282
15.5 在Python中使用mrjob來自動化MapReduce283
15.5.1 mrjob與EMR的無縫集成283
15.5.2 mrjob的一個MapReduce腳本剖析284
15.6 示例:分散式SVM的Pegasos算法286
15.6.1 Pegasos算法287
15.6.2 訓練算法:用mrjob實現MapReduce版本的SVM288
15.7 你真的需要MapReduce嗎?292
15.8 本章小結292
附錄A Python入門294
附錄B 線性代數303
附錄C 機率論複習309
附錄D 資源312
索引313
著作權聲明316