本書是“達(dá)人迷”經(jīng)典系列中關(guān)于機器學(xué)習(xí)的一本。本書內(nèi)容分為6 個部分, 共計 23 章, 由淺入深地講解機器學(xué)習(xí)的基礎(chǔ)知識, 本書使用的語言--Python和R, 必備數(shù)學(xué)知識, 處理數(shù)據(jù)的常用工具, 機器學(xué)習(xí)的應(yīng)用以及常見的學(xué)習(xí)包、模型等6個方面, 以幫助讀者了解并掌握機器學(xué)習(xí)的相關(guān)知識、并能將其應(yīng)用于自己的工作中。
第 1 部分 關(guān)于機器如何學(xué)習(xí)的介紹 1
第 1 章 有關(guān) AI 的真實故事 3
1.1 超越炒作 4
1.2 夢到電子羊 5
1.2.1 了解 AI 和機器學(xué)習(xí)的歷史 5
1.2.2 機器學(xué)習(xí)能為 AI 做什么 6
1.2.3 機器學(xué)習(xí)的目標(biāo) 7
1.2.4 硬件決定了機器學(xué)習(xí)的極限 7
1.3 克服 AI 幻想 8
1.3.1 AI 和機器學(xué)習(xí)的時髦用途 9
1.3.2 AI 和機器學(xué)習(xí)的真正用途 9
1.3.3 講究實用性,講究普通性 11
1.4 AI 和機器學(xué)習(xí)之間的關(guān)系 11
1.5 AI 和機器學(xué)習(xí)的規(guī)范 12
1.6 定義藝術(shù)與工程之間的界限 13
第 2 章 大數(shù)據(jù)時代的學(xué)習(xí) 14
2.1 定義大數(shù)據(jù) 15
2.2 考慮大數(shù)據(jù)源 16
2.2.1 構(gòu)建一個新的數(shù)據(jù)源 16
2.2.2 使用現(xiàn)有的數(shù)據(jù)源 18
2.2.3 尋找用于測試的數(shù)據(jù)源 18
2.3 確立統(tǒng)計學(xué)在機器學(xué)習(xí)中的角色 19
2.4 理解算法的角色 20
2.4.1 定義算法要做什么 20
2.4.2 考慮五大主流技術(shù) 20
2.5 定義訓(xùn)練的含義 22
第 3 章 對未來的設(shè)想 24
3.1 為將來創(chuàng)造有用的技術(shù) 25
3.1.1 考慮機器人領(lǐng)域中機器學(xué)習(xí)的角色 25
3.1.2 在醫(yī)療領(lǐng)域使用機器學(xué)習(xí) 26
3.1.3 為各種需求創(chuàng)建智能的系統(tǒng) 26
3.1.4 在工業(yè)界使用機器學(xué)習(xí) 27
3.1.5 理解更新的處理器和其他硬件的角色 28
3.2 通過機器學(xué)習(xí)發(fā)現(xiàn)新的工作機會 28
3.2.1 為機器工作 28
3.2.2 和機器一起工作 29
3.2.3 修復(fù)機器 30
3.2.4 創(chuàng)建新的機器學(xué)習(xí)任務(wù) 30
3.2.5 設(shè)計新的機器學(xué)習(xí)環(huán)境 30
3.3 避免未來技術(shù)中潛在的陷阱 31
第 2 部分 準(zhǔn)備你的學(xué)習(xí)工具 33
第 4 章 安裝 R 35
4.1 為機器學(xué)習(xí)選擇 R 的版本 36
4.2 在 Windows 系統(tǒng)上安裝 R 37
4.3 在 Linux 系統(tǒng)上安裝 R 43
4.4 在 Mac OS X 系統(tǒng)上安裝 R 45
4.5 下載數(shù)據(jù)集和示例代碼 46
4.5.1 了解本書使用的數(shù)據(jù)集 47
4.5.2 定義代碼庫 48
第 5 章 使用 RStudio 在 R 中編碼 50
5.1 理解基本的數(shù)據(jù)類型 51
5.2 使用向量 52
5.3 使用列表組織數(shù)據(jù) 53
5.4 使用矩陣 54
5.4.1 創(chuàng)建基本矩陣 54
5.4.2 修改向量的排列 55
5.4.3 訪問單個元素 56
5.4.4 對行和列進(jìn)行命名 56
5.5 使用數(shù)組處理多維 57
5.5.1 創(chuàng)建一個基本的數(shù)組 58
5.5.2 命名行和列 59
5.6 創(chuàng)建一個數(shù)據(jù)框 60
5.6.1 理解因子 60
5.6.2 創(chuàng)建一個基本的數(shù)據(jù)框 62
5.6.3 和數(shù)據(jù)框的交互 63
5.6.4 擴(kuò)展一個數(shù)據(jù)框 64
5.7 執(zhí)行基本的統(tǒng)計任務(wù) 66
5.7.1 進(jìn)行決策 66
5.7.2 使用循環(huán) 68
5.7.3 不使用循環(huán)語句來執(zhí)行循環(huán)的任務(wù) 69
5.7.4 使用函數(shù) 70
5.7.5 查找平均值和中位數(shù) 70
5.7.6 通過圖表來表示你的數(shù)據(jù) 71
第 6 章 安裝 Python 73
6.1 為機器學(xué)習(xí)選擇 Python 的版本 74
6.1.1 獲取 Continuum Analytics Anaconda 75
6.1.2 獲取 Enthought Canopy Express 76
6.1.3 獲取 pythonxy 76
6.1.4 獲取 WinPython 77
6.2 在 Linux 系統(tǒng)上安裝 Python 77
6.3 在 Mac OS X 上安裝 Python 78
6.4 在 Windows 系統(tǒng)上安裝Python 79
6.5 下載數(shù)據(jù)集和示例代碼 83
6.5.1 使用 Jupyter Notebook 83
6.5.2 定義代碼庫 85
6.5.3 了解本書所使用的數(shù)據(jù)集 90
第 7 章 使用 Anaconda 進(jìn)行 Python編程 92
7.1 使用數(shù)字和邏輯 93
7.1.1 執(zhí)行變量賦值 95
7.1.2 做算術(shù) 95
7.1.3 使用布爾表達(dá)式來比較數(shù)據(jù) 97
7.2 創(chuàng)建并使用字符串 99
7.3 和日期打交道 100
7.4 創(chuàng)建并使用函數(shù) 101
7.4.1 創(chuàng)建可重用的函數(shù) 101
7.4.2 調(diào)用函數(shù) 102
7.4.3 使用全局變量和局部變量 104
7.5 使用條件和循環(huán)語句 105
7.5.1 使用 if 語句進(jìn)行決策 105
7.5.2 使用嵌套的決策,在多個選項中進(jìn)行選擇 106
7.5.3 使用 for 執(zhí)行重復(fù)的任務(wù) 107
7.5.4 使用 while 語句 108
7.6 使用集合、列表和元組來存儲數(shù)據(jù) 109
7.6.1 創(chuàng)建集合 109
7.6.2 在集合上進(jìn)行運算 109
7.6.3 創(chuàng)建列表 110
7.6.4 創(chuàng)建并使用元組 111
7.7 定義有用的迭代器 113
7.8 使用字典來索引數(shù)據(jù) 114
7.9 將代碼存儲在模塊中 114
第 8 章 探索其他的機器學(xué)習(xí)工具 116
8.1 SAS、Stata 和 SPSS 117
8.2 用 Weka 做學(xué)術(shù) 119
8.3 使用 LIBSVM 輕松訪問復(fù)雜的算法 120
8.4 使用 Vowpal Wabbit,運行起來像閃電那么快 120
8.5 使用 KNIME 和 RapidMiner進(jìn)行可視化 121
8.6 使用 Spark 處理海量數(shù)據(jù) 122
第 3 部分 從數(shù)學(xué)的基礎(chǔ)知識開始 123
第 9 章 揭秘機器學(xué)習(xí)背后的數(shù)學(xué) 125
9.1 處理數(shù)據(jù) 126
9.1.1 創(chuàng)建矩陣 127
9.1.2 理解基本的運算 129
9.1.3 進(jìn)行矩陣的乘法 130
9.1.4 了解高級的矩陣運算 132
9.1.5 有效地使用向量 132
9.2 探索概率的世界 135
9.2.1 概率的運算 136
9.2.2 貝葉斯理論的條件概率 137
9.3 介紹統(tǒng)計的使用 139
第 10 章 降低合適的曲線 142
10.1 將學(xué)習(xí)解釋為優(yōu)化 143
10.1.1 監(jiān)督式學(xué)習(xí) 143
10.1.2 無監(jiān)督式學(xué)習(xí) 143
10.1.3 增強學(xué)習(xí) 144
10.1.4 學(xué)習(xí)的過程 144
10.2 探索成本函數(shù) 147
10.3 降低誤差曲線 148
10.4 小批量和在線的更新 150
第 11 章 驗證機器學(xué)習(xí) 154
11.1 檢查樣本之外的誤差 155
11.2 理解偏差的局限 157
11.3 記住模型的復(fù)雜性 159
11.4 讓解決方案保持均衡性 160
11.5 訓(xùn)練、驗證和測試 163
11.6 借助于交叉驗證 163
11.7 尋求驗證的替代方案 165
11.8 優(yōu)化交叉驗證的選擇 166
11.9 避免樣本偏差和泄露陷阱 168
第 12 章 從簡單的學(xué)習(xí)器開始 171
12.1 發(fā)現(xiàn)令人驚嘆的感知器 172
12.1.1 還談不上奇跡 172
12.1.2 觸碰不可分的極限 174
12.2 生成貪婪的分類樹 175
12.2.1 通過劃分?jǐn)?shù)據(jù)來預(yù)測結(jié)果 176
12.2.2 修剪過于茂盛的樹 179
12.3 概率 180
12.3.1 理解樸素貝葉斯 180
12.3.2 使用樸素貝葉斯來預(yù)估響應(yīng) 183
第 4 部分 從聰明且大量的數(shù)據(jù)中學(xué)習(xí) 187
第 13 章 預(yù)處理數(shù)據(jù) 189
13.1 收集并清洗數(shù)據(jù) 190
13.2 修復(fù)缺失的數(shù)據(jù) 191
13.2.1 識別缺失的數(shù)據(jù) 191
13.2.2 選擇正確的替代策略 192
13.3 變換數(shù)據(jù)的分布 195
13.4 創(chuàng)建你自己的特征 197
13.4.1 理解為什么要創(chuàng)建特征 197
13.4.2 自動地創(chuàng)建特征 197
13.5 壓縮數(shù)據(jù) 199
13.6 劃分出異常數(shù)據(jù) 201
第 14 章 利用相似度 205
14.1 測量向量之間的相似度 206
14.1.1 理解相似度 206
14.1.2 計算用于學(xué)習(xí)的距離 207
14.2 使用距離來確定聚類 208
14.2.1 檢查假設(shè)和期望 209
14.2.2 檢視算法的細(xì)節(jié) 210
14.3 調(diào)優(yōu) K 均值算法 212
14.3.1 試驗 K 均值的可靠性 213
14.3.2 試驗質(zhì)心如何收斂 215
14.4 使用 K 最近鄰的搜索進(jìn)行分類 218
14.5 利用正確的 k 參數(shù) 218
14.5.1 理解參數(shù) k 219
14.5.2 試驗一個靈活的算法 220
第 15 章 使用線性模型的簡單方式 223
15.1 開始合并變量 224
15.2 混合不同類型的變量 229
15.3 切換到概率 232
15.3.1 指定二元的響應(yīng) 232
15.3.2 處理多個類 234
15.4 猜測正確的特征 235
15.4.1 定義不能協(xié)同工作的特征的結(jié)果 235
15.4.2 使用特征選擇來解決過擬合問題 236
15.5 每次學(xué)習(xí)一個樣例 238
15.5.1 使用梯度下降 238
15.5.2 理解隨機梯度下降的不同之處 239
第 16 章 用神經(jīng)網(wǎng)絡(luò)解決復(fù)雜性問題 243
16.1 學(xué)習(xí)并模仿大自然 244
16.1.1 使用前饋 245
16.1.2 深入兔子洞 247
16.1.3 使用反向傳播 249
16.2 和過擬合做斗爭 251
16.2.1 理解問題 252
16.2.2 打開黑匣子 252
16.3 介紹深度學(xué)習(xí) 255
第 17 章 更進(jìn)一步,使用支持向量機 258
17.1 重溫分隔問題:一種新的方法 259
17.2 算法的解釋 260
17.2.1 深入支持向量機的數(shù)學(xué)基礎(chǔ) 262
17.2.2 避免不可分隔的陷阱 263
17.3 使用非線性 264
17.3.1 使用例子展示核函數(shù)的技巧 265
17.3.2 發(fā)現(xiàn)不同的核函數(shù) 266
17.4 闡述超參數(shù) 268
17.5 使用支持向量機進(jìn)行分類和預(yù)估 269
第 18 章 借助于學(xué)習(xí)器的組合 274
18.1 利用決策樹 275
18.1.1 種植一片森林 276
18.1.2 理解重要性度量 279
18.2 使用幾乎隨機的猜測 281
18.3 增強聰明的預(yù)測器 285
18.4 平均不同的預(yù)測器 287
第 5 部分 將學(xué)習(xí)應(yīng)用到實際問題 289
第 19 章 圖像的分類 291
19.1 處理一組圖像 292
19.2 提取視覺特征 296
19.3 使用 Eigenfaces 識別人臉 297
第 20 章 為觀點和情感打分 301
20.1 介紹自然語言處理 301
20.2 理解機器是如何閱讀的 302
20.2.1 處理并增強文本 304
20.2.2 從 Web 上抓取文本數(shù)據(jù)集 308
20.2.3 處理原始文本中的問題 311
20.3 使用打分和分類 312
20.3.1 執(zhí)行分類任務(wù) 312
20.3.2 分析來自電子商務(wù)平臺的評論 315
第 21 章 推薦商品和電影 319
21.1 實現(xiàn)變革 320
21.2 下載評分?jǐn)?shù)據(jù) 321
21.2.1 了解 MovieLens數(shù)據(jù)集 321
21.2.2 瀏覽匿名的 Web 數(shù)據(jù) 323
21.2.3 面對評分?jǐn)?shù)據(jù)的局限 323
21.3 利用奇異值分解 325
21.3.1 考慮 SVD 的起源 325
21.3.2 理解 SVD 的內(nèi)在關(guān)聯(lián) 326
21.3.3 SVD 的實踐 327
第 6 部分 十條區(qū) 333
第 22 章 10 個需要掌握的機器學(xué)習(xí)包 335
22.1 Cloudera Oryx 336
22.2 CUDA-Convnet 336
22.3 ConvNetJS 336
22.4 e1071 337
22.5 gbm 337
22.6 Gensim 338
22.7 glmnet 338
22.8 randomForest 338
22.9 SciPy 339
22.10 XGBoost 339
第 23 章 提升機器學(xué)習(xí)模型的 10 種方式 340
23.1 研究學(xué)習(xí)的曲線 341
23.2 正確地使用交叉驗證 341
23.3 選擇正確的錯誤或分?jǐn)?shù)度量標(biāo)準(zhǔn) 342
23.4 搜尋最佳的超參數(shù) 343
23.5 測試多個模型 343
23.6 平均多個模型 344
23.7 堆疊多個模型 344
23.8 運用特征工程 345
23.9 選擇特征和樣本 345
23.10 尋求更多的數(shù)據(jù) 346