本書以案例驅(qū)動(dòng)的方式講解機(jī)器學(xué)習(xí)算法的知識(shí)點(diǎn),并以Python語(yǔ)言作為基礎(chǔ)開發(fā)語(yǔ)言實(shí)現(xiàn)算法,包括目前機(jī)器學(xué)習(xí)主流算法的原理、算法流程圖、算法的詳細(xì)設(shè)計(jì)步驟、算法實(shí)例、算法應(yīng)用、算法的改進(jìn)與優(yōu)化等環(huán)節(jié)。
全書共分 17 章,前兩章介紹機(jī)器學(xué)習(xí)與 Python 語(yǔ)言的相關(guān)基礎(chǔ)知識(shí),后面各章以案例的方式分別介紹線性回歸算法、邏輯回歸算法、K *近鄰算法、PCA 降維算法、k-means算法、支持向量機(jī)算法、AdaBoost算法、決策樹算法、高斯混合模型算法、隨機(jī)森林算法、樸素貝葉斯算法、隱馬爾可夫模型算法、BP 神經(jīng)網(wǎng)絡(luò)算法、卷積神經(jīng)網(wǎng)絡(luò)算法、遞歸神經(jīng)網(wǎng)絡(luò)算法。
本書適合作為高等院校人工智能、大數(shù)據(jù)、計(jì)算機(jī)科學(xué)、軟件工程等相關(guān)專業(yè)本科生和研究生有關(guān)課程的教材,也適用于各種計(jì)算機(jī)編程、人工智能學(xué)習(xí)認(rèn)證體系,還可供廣大人工智能領(lǐng)域技術(shù)人員參考。
前 言
2018年12月,DeepMind設(shè)計(jì)的基于Transformer神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的人工智能程序 AlphaStar,在《星際爭(zhēng)霸2》游戲中以5﹕0的成績(jī)分別戰(zhàn)勝兩位職業(yè)選手,這是繼AlphaGo 打敗世界圍棋冠軍李世石以來(lái),機(jī)器學(xué)習(xí)領(lǐng)域又一次震驚世界的壯舉,為機(jī)器學(xué)習(xí)的發(fā)展歷程又增添了一抹濃厚的色彩。
機(jī)器學(xué)習(xí)(Machine Learning,ML)是一門多領(lǐng)域交叉學(xué)科,涉及概率論、統(tǒng)計(jì)學(xué)、逼近論、凸分析、算法復(fù)雜度理論等多學(xué)科。它專門研究計(jì)算機(jī)怎樣模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新的知識(shí)或技能,或者重新組織已有的知識(shí)結(jié)構(gòu)使之不斷改善自身的性能。它是人工智能的核心,是使計(jì)算機(jī)具有智能的根本途徑,其應(yīng)用遍及人工智能的各個(gè)領(lǐng)域。
Python語(yǔ)言憑借語(yǔ)法簡(jiǎn)單、優(yōu)雅、面向?qū)ο蟆⒖蓴U(kuò)展性等優(yōu)點(diǎn),一經(jīng)面世就受到廣大開發(fā)者的追捧,這使得 Python 語(yǔ)言不僅提供了豐富的數(shù)據(jù)結(jié)構(gòu),還具有諸如 NumPy、SciPy、Matplotlib 等豐富的數(shù)據(jù)科學(xué)計(jì)算庫(kù),為機(jī)器學(xué)習(xí)的開發(fā)帶來(lái)了極大的便利。因此,本書用 Python語(yǔ)言來(lái)編寫機(jī)器學(xué)習(xí)算法。
書中對(duì)每一種機(jī)器學(xué)習(xí)算法都按照下列幾個(gè)方面進(jìn)行總結(jié)和描述。第一,簡(jiǎn)要介紹算法的原理,通過通俗易懂的語(yǔ)言描述和示例使讀者對(duì)算法有一個(gè)大致的了解;第二,給出標(biāo)準(zhǔn)的算法流程圖;第三,具體介紹算法的詳細(xì)設(shè)計(jì)步驟,使讀者對(duì)算法的理解更為深入;第四,為了加深讀者對(duì)算法的熟練程度,針對(duì)每個(gè)算法舉出示例;第五,將每個(gè)算法回歸到日常生活的應(yīng)用中,以提高讀者對(duì)算法的靈活掌握程度;第六,結(jié)合當(dāng)前的最新研究成果,對(duì)經(jīng)典的機(jī)器學(xué)習(xí)算法提出改進(jìn)與優(yōu)化建議,為讀者進(jìn)一步研究算法提供新思路;第七,每一章的最后都對(duì)全章的內(nèi)容進(jìn)行總結(jié),幫讀者梳理整章知識(shí);第八,課后習(xí)題的設(shè)置旨在幫助讀者鞏固算法的學(xué)習(xí)。
全書共分17章,第1和2章介紹機(jī)器學(xué)習(xí)與 Python 語(yǔ)言的相關(guān)概念與基礎(chǔ)知識(shí),第3~17章分別介紹了線性回歸算法、邏輯回歸算法、K最近鄰算法、PCA 降維算法、k-means算法、支持向量機(jī)算法、AdaBoost算法、決策樹算法、高斯混合模型算法、隨機(jī)森林算法、樸素貝葉斯算法、隱馬爾可夫模型算法、BP 神經(jīng)網(wǎng)絡(luò)算法、卷積神經(jīng)網(wǎng)絡(luò)算法、遞歸神經(jīng)網(wǎng)絡(luò)算法。
本書由多人合作完成,其中第1~4章由太原理工大學(xué)趙涓涓編寫,第5~7章由太原理工大學(xué)強(qiáng)彥編寫,第8和9章由太原理工大學(xué)王華編寫,第10和11章由太原科技大學(xué)蔡星娟編寫,第12和13章由太原理工大學(xué)降愛蓮編寫,第14和15章由太原理工大學(xué)田玉玲編寫,第16和17章由太原理工大學(xué)馬建芬編寫。全書由趙涓涓審閱。
在本書撰寫過程中,車征、王磐、王佳文、史國(guó)華、魏淳武、周凱、王夢(mèng)南、王艷飛、吳俊霞、武儀佳、張振慶等項(xiàng)目組成員做了大量的資料準(zhǔn)備、文檔整理和代碼調(diào)試工作,在此一并表示衷心的感謝!
由于作者水平有限,不當(dāng)之處在所難免,懇請(qǐng)讀者及同仁賜教指正。
編 者
2019年5月
前言
第1章 機(jī)器學(xué)習(xí)基礎(chǔ) 1
1.1 引論 1
1.2 何謂機(jī)器學(xué)習(xí) 2
1.2.1 概述 2
1.2.2 引例 2
1.3 機(jī)器學(xué)習(xí)中的常用算法 4
1.3.1 按照學(xué)習(xí)方式劃分 4
1.3.2 按照算法相似性劃分 7
1.4 本章小結(jié) 14
1.5 本章習(xí)題 14
第2章 Python與數(shù)據(jù)科學(xué) 15
2.1 Python概述 15
2.2 Python與數(shù)據(jù)科學(xué)的關(guān)系 16
2.3 Python中常用的第三方庫(kù) 16
2.3.1 NumPy 16
2.3.2 SciPy 17
2.3.3 Pandas 17
2.3.4 Matplotlib 18
2.3.5 Scikit-learn 18
2.4 編譯環(huán)境 18
2.4.1 Anaconda 19
2.4.2 Jupyter Notebook 21
2.5 本章小結(jié) 23
2.6 本章習(xí)題 24
第3章 線性回歸算法 25
3.1 算法概述 25
3.2 算法流程 25
3.3 算法步驟 26
3.4 算法實(shí)例 30
3.5 算法應(yīng)用 32
3.6 算法的改進(jìn)與優(yōu)化 34
3.7 本章小結(jié) 34
3.8 本章習(xí)題 34
第4章 邏輯回歸算法 37
4.1 算法概述 37
4.2 算法流程 38
4.3 算法步驟 38
4.4 算法實(shí)例 40
4.5 算法應(yīng)用 45
4.6 算法的改進(jìn)與優(yōu)化 49
4.7 本章小結(jié) 49
4.8 本章習(xí)題 49
第5章 K最近鄰算法 51
5.1 算法概述 51
5.2 算法流程 52
5.3 算法步驟 52
5.4 算法實(shí)例 53
5.5 算法應(yīng)用 54
5.6 算法的改進(jìn)與優(yōu)化 57
5.7 本章小結(jié) 58
5.8 本章習(xí)題 58
第6章 PCA降維算法 59
6.1 算法概述 59
6.2 算法流程 60
6.3 算法步驟 60
6.3.1 內(nèi)積與投影 60
6.3.2 方差 62
6.3.3 協(xié)方差 62
6.3.4 協(xié)方差矩陣 63
6.3.5 協(xié)方差矩陣對(duì)角化 63
6.4 算法實(shí)例 65
6.5 算法應(yīng)用 67
6.6 算法的改進(jìn)與優(yōu)化 68
6.7 本章小結(jié) 68
6.8 本章習(xí)題 69
第7章 k-means算法 70
7.1 算法概述 70
7.2 算法流程 70
7.3 算法步驟 71
7.3.1 距離度量 71
7.3.2 算法核心思想 72
7.3.3 初始聚類中心的選擇 73
7.3.4 簇類個(gè)數(shù)k的調(diào)整 73
7.3.5 算法特點(diǎn) 74
7.4 算法實(shí)例 75
7.5 算法應(yīng)用 77
7.6 算法的改進(jìn)與優(yōu)化 81
7.7 本章小結(jié) 81
7.8 本章習(xí)題 82
第8章 支持向量機(jī)算法 84
8.1 算法概述 84
8.2 算法流程 85
8.2.1 線性可分支持向量機(jī) 85
8.2.2 非線性支持向量機(jī) 85
8.3 算法步驟 85
8.3.1 線性分類 85
8.3.2 函數(shù)間隔與幾何間隔 87
8.3.3 對(duì)偶方法求解 88
8.3.4 非線性支持向量機(jī)與核函數(shù) 90
8.4 算法實(shí)例 93
8.5 算法應(yīng)用 95
8.6 算法的改進(jìn)與優(yōu)化 100
8.7 本章小結(jié) 101
8.8 本章習(xí)題 101
第9章 AdaBoost算法 102
9.1 算法概述 102
9.2 算法流程 102
9.3 算法步驟 103
9.4 算法實(shí)例 105
9.5 算法應(yīng)用 106
9.6 算法的改進(jìn)與優(yōu)化 109
9.7 本章小結(jié) 110
9.8 本章習(xí)題 110
第10章 決策樹算法 112
10.1 算法概述 112
10.2 算法流程 113
10.3 算法步驟 113
10.3.1 兩個(gè)重要概念 113
10.3.2 實(shí)現(xiàn)步驟 115
10.4 算法實(shí)例 115
10.5 算法應(yīng)用 118
10.6 算法的改進(jìn)與優(yōu)化 119
10.7 本章小結(jié) 120
10.8 本章習(xí)題 120
第11章 高斯混合模型算法 121
11.1 算法概述 121
11.2 算法流程 121
11.3 算法步驟 122
11.3.1 構(gòu)建高斯混合模型 122
11.3.2 EM算法估計(jì)模型參數(shù) 123
11.4 算法實(shí)例 125
11.5 算法應(yīng)用 127
11.6 算法的改進(jìn)與優(yōu)化 129
11.7 本章小結(jié) 130
11.8 本章習(xí)題 130
第12章 隨機(jī)森林算法 132
12.1 算法概述 132
12.2 算法流程 133
12.3 算法步驟 134
12.3.1 構(gòu)建數(shù)據(jù)集 134
12.3.2 基于數(shù)據(jù)集構(gòu)建分類器 134
12.3.3 投票組合得到最終結(jié)果并分析 135
12.4 算法實(shí)例 136
12.5 算法應(yīng)用 140
12.6 算法的改進(jìn)與優(yōu)化 142
12.7 本章小結(jié) 143
12.8 本章習(xí)題 143
第13章 樸素貝葉斯算法 145
13.1 算法概述 145
13.2 算法流程 145
13.3 算法步驟 146
13.4 算法實(shí)例 148
13.5 算法應(yīng)用 149
13.6 算法的改進(jìn)與優(yōu)化 151
13.7 本章小結(jié) 152
13.8 本章習(xí)題 152
第14章 隱馬爾可夫模型算法 154
14.1 算法概述 154
14.2 算法流程 154
14.3 算法步驟 155
14.4 算法實(shí)例 156
14.5 算法應(yīng)用 159
14.6 算法的改進(jìn)與優(yōu)化 165
14.7 本章小結(jié) 166
14.8 本章習(xí)題 166
第15章 BP神經(jīng)網(wǎng)絡(luò)算法 167
15.1 算法概述 167
15.2 算法流程 167
15.3 算法步驟 168
15.4 算法實(shí)例 170
15.5 算法應(yīng)用 174
15.6 算法的改進(jìn)與優(yōu)化 176
15.7 本章小結(jié) 177
15.8 本章習(xí)題 177
第16章 卷積神經(jīng)網(wǎng)絡(luò)算法 179
16.1 算法概述 179
16.2 算法流程 179
16.3 算法步驟 180
16.3.1 向前傳播階段 181
16.3.2 向后傳播階段 183
16.4 算法實(shí)例 184
16.5 算法應(yīng)用 188
16.6 算法的改進(jìn)與優(yōu)化 193
16.7 本章小結(jié) 194
16.8 本章習(xí)題 194
第17章 遞歸神經(jīng)網(wǎng)絡(luò)算法 196
17.1 算法概述 196
17.2 算法流程 197
17.3 算法步驟 198
17.4 算法實(shí)例 200
17.5 算法應(yīng)用 204
17.6 算法的改進(jìn)與優(yōu)化 207
17.7 本章小結(jié) 208
17.8 本章習(xí)題 208
課后習(xí)題答案 210
參考文獻(xiàn) 231