前言
第1章 認知機器學(xué)習(xí) 1
1.1 什么是機器學(xué)習(xí) 2
1.1.1 理解機器學(xué)習(xí)的定義 2
1.1.2 機器學(xué)習(xí)有哪些模型 3
1.2 怎么學(xué)習(xí)機器學(xué)習(xí) 4
1.2.1 學(xué)習(xí)的總體步驟 4
1.2.2 理清工具與原理的關(guān)系 4
1.3 搭建開發(fā)環(huán)境 5
1.3.1 下載和安裝Anaconda 5
1.3.2 Anaconda的5個工具軟件 5
1.4 小結(jié) 6
第2章 打下開發(fā)基礎(chǔ) 7
2.1 學(xué)會使用常用的數(shù)據(jù)結(jié)構(gòu) 8
2.1.1 列表 8
2.1.2 字典 10
2.1.3 numpy 11
2.2 能用matplotlib繪圖 15
2.2.1 畫點 15
2.2.2 畫線 16
2.2.3 畫面 16
2.2.4 畫多個子圖 16
2.3 能編程保存和加載機器學(xué)習(xí)模型 18
2.3.1 保存模型 18
2.3.2 加載模型 18
2.4 小結(jié) 18
第3章 入門先學(xué)會使用線性回歸 19
3.1 初步理解線性回歸 20
3.1.1 涉及的主要術(shù)語 20
3.1.2 線性方程的表達 21
3.1.3 擬合出的線的樣子 24
3.2 了解線性回歸的過程 26
3.2.1 做線性回歸的過程 26
3.2.2 模型的評價指標 27
3.2.3 數(shù)據(jù)集的劃分 29
3.3 做線性回歸的實例 30
3.3.1 用圖觀察數(shù)據(jù)項之間的關(guān)系 31
3.3.2 對數(shù)據(jù)集進行劃分 33
3.3.3 用數(shù)據(jù)訓(xùn)練模型 34
3.3.4 用模型做預(yù)測 35
3.3.5 對模型做評價 38
3.4 使用更復(fù)雜的線性回歸模型 46
3.4.1 以一元高次方程為模型 46
3.4.2 以多元一次方程為模型 51
3.4.3 以多元高次方程為模型 54
3.5 小結(jié) 58
第4章 學(xué)習(xí)線性回歸背后的數(shù)學(xué)原理 60
4.1 補充學(xué)習(xí)高等數(shù)學(xué)知識 62
4.1.1 導(dǎo)數(shù)的意義 62
4.1.2 常用的求導(dǎo)法則 62
4.1.3 求某點的導(dǎo)數(shù)值 65
4.1.4 復(fù)合函數(shù)的導(dǎo)數(shù) 68
4.1.5 偏導(dǎo)數(shù) 70
4.1.6 行列式及其計算方法 72
4.1.7 矩陣及其計算方法 76
4.1.8 線性方程組的解法 81
4.2 理解和使用最小二乘法 85
4.2.1 為什么叫最小二乘法 85
4.2.2 求解一元一次方程模型的參數(shù) 87
4.2.3 求解多元一次方程模型的參數(shù) 94
4.2.4 求解一元高次方程和多元高次方程模型的參數(shù) 101
4.2.5 多種模型之間的比較 101
4.3 學(xué)習(xí)和使用梯度下降法 102
4.3.1 什么是梯度和梯度下降法 102
4.3.2 多元函數(shù)的梯度下降法 104
4.3.3 設(shè)置迭代的出口和學(xué)習(xí)率 110
4.3.4 線性回歸的梯度下降法 113
4.3.5 由誤差函數(shù)的圖形引發(fā)對極小值的討論 119
4.3.6 遍歷訓(xùn)練數(shù)據(jù)做線性回歸的三種梯度下降法 122
4.4 小結(jié) 126
第5章 深入淺出線性回歸的高級知識 128
5.1 模型優(yōu)化要解決什么問題 129
5.1.1 欠擬合、過擬合和恰當擬合 129
5.1.2 怎么解決過擬合的問題 130
5.2 用嶺回歸對線性回歸模型做懲罰 130
5.2.1 做嶺回歸用最小二乘法時的數(shù)學(xué)原理 131
5.2.2 用嶺跡法找到合適的λ值 132
5.2.3 做嶺回歸用梯度下降法時的數(shù)學(xué)原理 135
5.2.4 用交叉驗證法找到合適的λ值 136
5.3 用Lasso回歸對線性回歸模型做懲罰 146
5.3.1 Lasso回歸的數(shù)學(xué)原理 146
5.3.2 從圖形上理解Lasso回歸 150
5.3.3 用坐標軸下降法做Lasso回歸 152
5.4 化繁為簡使用scikit-learn庫 164
5.4.1 用最小二乘法做線性回歸 164
5.4.2 做嶺回歸 166
5.4.3 做Lasso回歸 172
5.4.4 使用彈性網(wǎng)絡(luò)做線性回歸 174
5.5 小結(jié) 177
第6章 學(xué)會使用邏輯回歸 179
6.1 初步理解邏輯回歸 180
6.1.1 涉及的主要術(shù)語 180
6.1.2 線性分類的圖形表達 180
6.1.3 邏輯回歸的圖形表達 183
6.2 用scikit-learn庫做邏輯回歸 185
6.2.1 引入乳腺癌數(shù)據(jù)集 186
6.2.2 用邏輯回歸預(yù)測乳腺癌 187
6.2.3 評估邏輯回歸模型 190
6.2.4 得到模型參數(shù) 192
6.2.5 得到分類的可能性值 193
6.3 解決多分類的問題 194
6.3.1 引入鳶尾花數(shù)據(jù)集 194
6.3.2 用One-Vs-All解決多分類問題 195
6.3.3 用One-Vs-One解決多分類問題 203
6.4 小結(jié) 205
第7章 學(xué)習(xí)邏輯回歸背后的數(shù)學(xué)原理 207
7.1 補充學(xué)習(xí)高等數(shù)學(xué)知識 208
7.1.1 凸函數(shù)和Hessian矩陣 208
7.1.2 大數(shù)定律和中心極限定理 210
7.1.3 正態(tài)分布和伯努利分布 211
7.1.4 條件概率和似然函數(shù) 212
7.2 理解邏輯回歸的數(shù)學(xué)原理 213
7.2.1 找到合適的用于優(yōu)化的函數(shù) 213
7.2.2 在邏輯回歸中使用梯度下降法的數(shù)學(xué)原理 215
7.3 用梯度下降法求解邏輯回歸模型 216
7.3.1 將鳶尾花分成兩類 216
7.3.2 預(yù)測乳腺癌 220
7.4 小結(jié) 222
第8章 深入淺出邏輯回歸的高級知識 224
8.1 對邏輯回歸做正則化 226
8.1.1 理解L2正則化的數(shù)學(xué)原理 226
8.1.2 用L2正則化預(yù)測乳腺癌 226
8.1.3 用其他懲罰方式做邏輯回歸 228
8.2 化繁為簡使用scikit-learn庫 228
8.2.1 熟悉并使用LogisticRegression類 228
8.2.2 熟悉并使用SGDClassifier類 230
8.2.3 熟悉并使用LogisticRegressionCV
類 232
8.2.4 用LogisticRegression類做多分類 233
8.3 補充學(xué)習(xí)一些更高級的數(shù)學(xué)知識 234
8.3.1 泰勒公式 235
8.3.2 牛頓法和擬牛頓法的優(yōu)化原理 239
8.3.3 lbfgs優(yōu)化方法 247
8.3.4 newton-cg優(yōu)化方法 248
8.3.5 liblinear優(yōu)化方法 255
8.3.6 sag和saga優(yōu)化方法 257
8.4 用softmax解決多分類問題 262
8.4.1 多分類的原理 262
8.4.2 畫出多分類的界線 266
8.5 小結(jié) 269
第9章 學(xué)會使用樸素貝葉斯 271
9.1 初步理解樸素貝葉斯 272
9.1.1 樸素貝葉斯定理的一些基本術(shù)語 272
9.1.2 樸素貝葉斯怎么得出屬于某一類的概率 274
9.2 用scikit-learn做樸素貝葉斯分類 276
9.2.1 使用GuassianNB類做鳶尾花分類 276
9.2.2 使用MultinomialNB類和BernoulliNB類 278
9.3 小結(jié) 279
第10章 學(xué)習(xí)樸素貝葉斯背后的數(shù)學(xué)原理 281
10.1 理解樸素貝葉斯分類的數(shù)學(xué)原理 282
10.1.1 理解全概率公式并推導(dǎo)樸素貝葉斯公式 282
10.1.2 利用樸素的內(nèi)涵再推演樸素貝葉斯公式 284
10.2 進一步說明scikit-learn中做樸素貝葉斯分類的類 285
10.2.1 再看GuassianNB類 285
10.2.2 再看MultinomialNB類和BernoulliNB類 287
10.3 做區(qū)分垃圾郵件和非垃圾郵件的項目實戰(zhàn) 288
10.3.1 理解spambase數(shù)據(jù)集 288
10.3.2 使用3種樸素貝葉斯模型區(qū)分垃圾郵件和非垃圾郵件 289
10.4 小結(jié) 291
第11章 深入淺出貝葉斯的高級知識 292
11.1 會用有向圖表達貝葉斯網(wǎng)絡(luò) 293
11.1.1 深刻理解獨立和互斥的概念 293
11.1.2 用有向無環(huán)圖表達貝葉斯網(wǎng)絡(luò) 294
11.1.3 理解貝葉斯網(wǎng)絡(luò)的3種基本結(jié)構(gòu) 296
11.1.4 打貝葉斯球來分析兩個事件是否關(guān)聯(lián) 299
11.2 使用pgmpy建模貝葉斯網(wǎng)絡(luò) 301
11.2.1 安裝pgmpy 301
11.2.2 構(gòu)建某女士結(jié)交男友決策的貝葉斯網(wǎng)絡(luò) 301
11.2.3 用貝葉斯網(wǎng)絡(luò)做預(yù)測 308
11.2.4 讓貝葉斯網(wǎng)絡(luò)自動學(xué)習(xí)到條件概率表 310
11.3 小結(jié) 311
第12章 學(xué)會使用決策樹 313
12.1 初步理解決策樹 314
12.1.1 決策樹中的一些專業(yè)術(shù)語 314
12.1.2 常見的3種決策樹算法 315
12.2 用scikit-learn做決策樹分類 315
12.2.1 用信息增益做分類 316
12.2.2 用基尼指數(shù)做分類 317
12.2.3 畫出決策樹 319
12.3 小結(jié) 321
第13章 學(xué)習(xí)決策樹背后的數(shù)學(xué)原理 322
13.1 學(xué)會計算決策樹的專業(yè)術(shù)語表示的量 323
13.1.1 計算信息熵 323
13.1.2 計算信息增益 326
13.1.3 計算信息增益比 328
13.1.4 計算基尼指數(shù) 328
13.1.5 計算基尼指數(shù)增加值 330
13.2 理解3種決策樹算法 330
13.2.1 理解ID3決策樹算法 330
13.2.2 scikit-learn庫用信息增益生成決策樹的算法 335
13.2.3 理解CART算法 339
13.2.4 用CART算法做分類 341
13.2.5 用CART算法做回歸 342
13.3 深入學(xué)習(xí)用scikit-learn做決策樹分類和回歸 343
13.3.1 DecisionTreeClassifier類的方法和屬性 343
13.3.2 DecisionTreeRegressor類的方法和屬性 345
13.3.3 用決策樹做鳶尾花分類 346
13.3.4 用決策樹做房價回歸分析 351
13.4 小結(jié) 355
第14章 深入淺出決策樹的高級知識 357
14.1 學(xué)會選擇和調(diào)節(jié)決策樹模型的參數(shù) 358
14.1.1 用交叉驗證法選擇更好的參數(shù) 358
14.1.2 用GridSearchCV類調(diào)節(jié)參數(shù)模型 363
14.2 理解后剪枝的原理并做實現(xiàn) 367
14.2.1 后剪枝有哪些策略 367
14.2.2 后剪枝之MEP策略 368
14.2.3 后剪枝之REP策略 377
14.2.4 后剪枝之PEP策略 378
14.2.5 后剪枝之CCP策略 382
14.3 小結(jié) 386
第15章 學(xué)會使用支持向量機 388
15.1 初步理解支持向量機 389
15.1.1 線性支持向量機 389
15.1.2 非線性支持向量機 389
15.2 用scikit-learn做支持向量機分類 390
15.2.1 做線性分類 390
15.2.2 做非線性分類 392
15.3 小結(jié) 394
第16章 學(xué)習(xí)支持向量機背后的數(shù)學(xué)原理 395
16.1 學(xué)會計算距離 396
16.1.1 兩點之間的距離 396
16.1.2 點到超平面的距離 398
16.1.3 函數(shù)距離和幾何距離 402
16.2 學(xué)懂拉格朗日乘數(shù)法 402
16.2.1 用拉格朗日乘數(shù)法求等式約束下的極值 403
16.2.2 再次深刻理解梯度 406
16.2.3 用拉格朗日乘數(shù)法求不等式約束下的極值 408
16.2.4 用拉格朗日乘數(shù)法和KKT應(yīng)對更復(fù)雜的情況 411
16.3 理解支持向量機的數(shù)學(xué)原理 413
16.3.1 從感知機談起 414
16.3.2 感知機模型的感知策略 416
16.3.3 用感知機模型做鳶尾花的二分類 419
16.4 硬間隔支持向量機 424
16.4.1 構(gòu)建出目標函數(shù)及約束不等式 425
16.4.2 用拉格朗日乘數(shù)法求解目標函數(shù)和約束不等式 427
16.5 小結(jié) 432
第17章 深入淺出支持向量機的高級知識 434
17.1 用SMO算法求解硬間隔支持向量機的λ 435
17.1.1 轉(zhuǎn)化優(yōu)化問題 436
17.1.2 迭代更新的辦法 438
17.2 軟間隔支持向量機 441
17.2.1 軟間隔支持向量機的優(yōu)化問題 441
17.2.2 迭代時對參數(shù)值的剪輯 443
17.2.3 求解其他參數(shù)值 445
17.2.4 求解軟間隔支持向量機模型的步驟總結(jié) 446
17.2.5 合頁損失函數(shù) 447
17.3 自己編程實現(xiàn)支持向量機 448
17.3.1 實現(xiàn)SMO算法 448
17.3.2 實現(xiàn)二分類應(yīng)用 453
17.4 非線性支持向量機 455
17.4.1 理解非線性支持向量機的原理 455
17.4.2 學(xué)懂Mercer定理 458
17.4.3 最簡單的線性核函數(shù) 458
17.4.4 多項式核函數(shù) 460
17.4.5 高斯核函數(shù) 461
17.4.6 Sigmoid核函數(shù) 464
17.5 用支持向量機做回歸分析 465
17.5.1 理解支持向量回歸的原理 465
17.5.2 用拉格朗日乘數(shù)法做推導(dǎo) 466
17.6 深入淺出用scikit-learn做分類和回歸 467
17.6.1 熟悉線性支持向量機(LinearSVC) 467
17.6.2 熟悉非線性支持向量機(SVC) 468
17.6.3 熟悉線性向量回歸(LinearSVR)和非線性回歸(SVR) 469
17.6.4 調(diào)節(jié)非線性支持向量機的參數(shù) 469
17.6.5 調(diào)節(jié)非線性支持向量回歸模型的參數(shù) 472
17.7 小結(jié) 474
第18章 學(xué)會使用KNN 476
18.1 理解KNN的基本原理 477
18.1.1 不用數(shù)學(xué)公式講解KNN的原理 477
18.1.2 擴展到多分類和回歸應(yīng)用 477
18.1.3 怎么確定KNN模型的k值 478
18.2 用KNN做分類和回歸 478
18.2.1 用KNN模型做鳶尾花分類 478
18.2.2 用KNN模型做房屋價格回歸 480
18.3 小結(jié) 482
第19章 學(xué)習(xí)KNN背后的數(shù)學(xué)原理 483
19.1 理解KNN的數(shù)學(xué)原理 484
19.1.1 用KNN做分類的數(shù)學(xué)原理 484
19.1.2 有多個備選分類及樣本數(shù)量不均衡問題的解決辦法 485
19.1.3 用KNN做回歸的數(shù)學(xué)原理 487
19.2 再次討論距離的度量 487
19.2.1 歐幾里得距離 488
19.2.2 曼哈頓距離和閔可夫斯基距離 488
19.2.3 夾角的余弦 489
19.2.4 杰卡德相似系數(shù)和杰卡德相似距離 489
19.3 利用搜索樹加速查找 489
19.3.1 構(gòu)建KD樹 489
19.3.2 運用KD樹找到k個近鄰點 491
19.3.3 構(gòu)建Ball樹 496
19.3.4 運用Ball樹找到k個近鄰點 499
19.4 調(diào)節(jié)KNN模型的參數(shù) 501
19.4.1 熟悉KNeighborsClassifier類 501
19.4.2 調(diào)節(jié)KNeighborsClassifier模型的參數(shù) 502
19.4.3 熟悉KNeighborsRegressor類并學(xué)會調(diào)節(jié)參數(shù) 504
19.5 小結(jié) 506
后續(xù)學(xué)習(xí)建議 508
參考文獻 509