機器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實現(xiàn)
定 價:89 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:莫凡
- 出版時間:2019/12/1
- ISBN:9787111642602
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP181
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書由工程師撰寫,系統(tǒng)介紹機器學(xué)習(xí)中需要的主要數(shù)學(xué)知識,以及機器學(xué)習(xí)算法的實現(xiàn)和應(yīng)用場景,為機器學(xué)習(xí)初學(xué)者制定了如何夯實基礎(chǔ)的方案。本書以機器學(xué)習(xí)的算法為主線,深入剖析算法的概念和數(shù)學(xué)原理,以通俗形象的語言進(jìn)行介紹,讓讀者無需了解太多前置數(shù)學(xué)知識,就能看懂?dāng)?shù)學(xué)公式的表達(dá)意思,從而深度掌握機器學(xué)習(xí)的思想和原理。主要內(nèi)容包括:首先介紹機器學(xué)習(xí)基本概念及工具,然后從概念、原理、Python實現(xiàn)、應(yīng)用場景幾個方面,詳細(xì)剖析機器學(xué)習(xí)中*主要的算法,如線性回歸算法、邏輯回歸算法、KNN、樸素貝葉斯、決策分類、支持向量機分類、K-means聚類、神經(jīng)網(wǎng)絡(luò)分類、集成學(xué)習(xí)等。
這是一本講解算法的書籍,從生活中的常見例子來講解,使讀者發(fā)現(xiàn)算法的樂趣,能快速把算法應(yīng)用到機器學(xué)習(xí)中。
這是一本介紹機器學(xué)習(xí)的書,按常理來說,我應(yīng)該首先介紹學(xué)習(xí)機器學(xué)習(xí)的重要性?墒牵斜匾獑?我記得約五年前,機器學(xué)習(xí)還是一個很有科幻色彩的術(shù)語,而現(xiàn)在技術(shù)學(xué)習(xí)圈幾乎整版都換成了機器學(xué)習(xí)的各種模型,國內(nèi)很多大學(xué)已經(jīng)開始設(shè)立人工智能專業(yè),機器學(xué)習(xí)當(dāng)仁不讓地成為核心課程。據(jù)說相關(guān)學(xué)者已經(jīng)將該知識編制成課本,即將走入中學(xué)課堂。機器學(xué)習(xí)的火熱,連帶著讓長年不溫不火的Python語言也借機異軍突起,甚至掀起一陣Python語言的學(xué)習(xí)熱潮。機器學(xué)習(xí)已經(jīng)成為“技術(shù)宅”的一種必備技能,因此,實在沒必要再占篇幅介紹它的重要性。
但是,學(xué)習(xí)機器學(xué)習(xí)的路途是坎坷和顛簸的,唯一不缺的就是讓你半途而廢的借口。機器學(xué)習(xí)今日的成就是站在巨人的肩膀上取得的,因此,當(dāng)你終于下定決心學(xué)習(xí)機器學(xué)習(xí)時,很多人會給你開出一串長長的學(xué)習(xí)清單:機器學(xué)習(xí)涉及大量向量和矩陣運算,所以線性代數(shù)是肯定要學(xué)的;機器學(xué)習(xí)的很多模型算法都以統(tǒng)計知識作為背景,所以統(tǒng)計學(xué)和概率論也是必修的;許多重要環(huán)節(jié)依賴微分運算,那本好久不看的《高等數(shù)學(xué)》是不是到了重出江湖的時候了?
想想看,如果告訴你學(xué)習(xí)機器學(xué)習(xí),首先得把《線性代數(shù)》《概率統(tǒng)計》《高等數(shù)學(xué)》統(tǒng)統(tǒng)翻一遍,然后你才只是剛剛摸到學(xué)習(xí)機器學(xué)習(xí)的起跑線,如果不擅長數(shù)學(xué),你得需要多大的毅力才能堅持下來,把機器學(xué)習(xí)學(xué)明白?
真的很難,如果開始學(xué)習(xí)機器學(xué)習(xí)時我就知道后面會承受這么多“痛苦”,也許我根本就不會開始。特別是如果你也是利用業(yè)余時間來自學(xué)機器學(xué)習(xí),那么真的稱得上煎熬:當(dāng)你已經(jīng)為別的事情絞盡腦汁,好不容易有了那么一點屬于自己的時間,想要學(xué)習(xí)充電時,結(jié)果鼓起勇氣翻開書本,撲面而來的全是各種難以理解的數(shù)學(xué)公式和聞所未聞的專業(yè)術(shù)語,你就能立即體會到什么是無力感。
那時我總是在想,能不能有一本教機器學(xué)習(xí)的書對讀者友好一點。首先不要假設(shè)讀者擅長數(shù)學(xué),認(rèn)為讀者一上來就可以看懂各種高深的數(shù)學(xué)公式,在介紹機器學(xué)習(xí)具體模型算法時要能按照從宏觀到微觀的順序介紹。剛接觸新的知識領(lǐng)域,先把模型算法的主要原理和基本結(jié)構(gòu)講清楚,讓讀者在腦海里勾勒出基本的輪廓,明確各種概念之間的關(guān)系,然后才深入各個細(xì)枝末節(jié)展開介紹,這樣讀者才不至于覺得自己一直在各種陌生的公式里轉(zhuǎn)來轉(zhuǎn)去,最后看得暈頭轉(zhuǎn)向。最后我還想再貪心一點,希望這本書的文字能夠稍微有趣一點,最好能像彈幕評論那樣在不經(jīng)意間引人會心一笑,畢竟我是利用睡前的時間來學(xué)習(xí)機器學(xué)習(xí),辛苦了一天,身體和精神都很疲憊,文字太生硬的話恐怕是啃不動的。
我找了很久,可惜直到最后也未能找到這樣的一本書。現(xiàn)在,我決定自己動手來寫一本。不過,這本書也并不能讓你在短期內(nèi)就全面掌握機器學(xué)習(xí)的各種知識。機器學(xué)習(xí)不但自成體系,自身就擁有枝繁葉茂的知識結(jié)構(gòu),而且也從多門大學(xué)科里汲取養(yǎng)分,又帶有交叉學(xué)科的一些特點,可能將一個子問題深入研究下去就能發(fā)展成一門新學(xué)科—從神經(jīng)網(wǎng)絡(luò)發(fā)展到深度學(xué)習(xí)就是一個很好的例子。弱水三千,一本書哪怕寫得再凝練透徹,也只能取一瓢飲。學(xué)習(xí)機器學(xué)習(xí)猶如建造大廈,總是需要從最基礎(chǔ)的開始學(xué),筑牢根基,然后一本一本地往上堆疊各有側(cè)重的書本,才可能最終構(gòu)建出完整的知識體系。
每一本書都有自己的使命。初學(xué)機器學(xué)習(xí)時,遇到的最大問題是迷茫,我深有體會。面對機器學(xué)習(xí)領(lǐng)域數(shù)量繁多又互有交叉的知識點,就像身處一大片繁茂的森林,沒有指南設(shè)備很難不迷失方向,而大量好不容易擠出來的寶貴時間就浪費在辨別方向上了。在本書中,我負(fù)責(zé)為你踹開機器學(xué)習(xí)世界的大門,繪制出這個龐大而陌生的世界中的“山河湖!,總體是怎樣的,哪里是重點,哪里是難點,哪些點用到了哪些學(xué)科知識,點和點之間的關(guān)系又是怎樣的,我都迫不及待想要一一清楚地告訴你。為了完成這個使命,我會竭盡全力,但也請原諒我無法“送佛到西”,正如前面所述,每個知識點深入下去,可能又是一片茂密的森林,機器學(xué)習(xí)涉及的知識點眾多,我希望通過本書能讓你清楚地看到興趣所在,不過知識點背后仍然有很長很長的路,還請加倍努力。
最后,我想談一談“要不要親手實現(xiàn)一遍機器學(xué)習(xí)算法”這個爭議很大的問題。我推崇學(xué)以致用,用機器學(xué)習(xí)算法解決實際問題才是本書的最終目的,所以本書將會涉及如何在實際中使用書中提及的機器學(xué)習(xí)算法的問題。對于這個問題,一般會有兩種選擇,一種是讓讀者親手從頭實現(xiàn)一遍算法,另一種則是直接使用現(xiàn)成的算法庫。對于這個問題,如何選擇爭議很大,本書中選擇的是后者。
學(xué)習(xí)機器學(xué)習(xí)的動機很多,可能是實際工作需要,可能是興趣愛好,也可能是學(xué)業(yè)要求,從每種動機的角度看,這個問題都可能有不同的答案。我認(rèn)同許多人所說的求知不能太功利這一觀點,不過大家的時間和精力畢竟有限,就算不去追求投入產(chǎn)出比,至少也應(yīng)該有一個學(xué)這門知識想要達(dá)到的目的。機器學(xué)習(xí)是更偏重于應(yīng)用的學(xué)問,在當(dāng)下的發(fā)展也確實使得機器學(xué)習(xí)越來越像一門技能,而不僅僅是技術(shù)。初學(xué)算法時我最想學(xué)的是里面的“最強算法”,不過在第1章我將介紹,機器學(xué)習(xí)算法沒有最強的,只有最合適的,對于不同的問題,對應(yīng)會有不同
前言
第1章 機器學(xué)習(xí)概述 1
1.1 什么是機器學(xué)習(xí) 1
1.2 機器學(xué)習(xí)的幾個需求層次 3
1.3 機器學(xué)習(xí)的基本原理 5
1.4 機器學(xué)習(xí)的基本概念 7
1.4.1 書中用到的術(shù)語介紹 7
1.4.2 機器學(xué)習(xí)的基本模式 11
1.4.3 優(yōu)化方法 12
1.5 機器學(xué)習(xí)問題分類 14
1.6 常用的機器學(xué)習(xí)算法 15
1.7 機器學(xué)習(xí)算法的性能衡量指標(biāo) 16
1.8 數(shù)據(jù)對算法結(jié)果的影響 18
第2章 機器學(xué)習(xí)所需的環(huán)境 20
2.1 常用環(huán)境 20
2.2 Python簡介 21
2.2.1 Python的安裝 23
2.2.2 Python的基本用法 24
2.3 Numpy簡介 25
2.3.1 Numpy的安裝 26
2.3.2 Numpy的基本用法 26
2.4 Scikit-Learn簡介 27
2.4.1 Scikit-Learn的安裝 28
2.4.2 Scikit-Learn的基本用法 28
2.5 Pandas簡介 29
2.5.1 Pandas的安裝 30
2.5.2 Pandas的基本用法 31
第3章 線性回歸算法 33
3.1 線性回歸:“鋼鐵直男”解決回歸問題的正確方法 33
3.1.1 用于預(yù)測未來的回歸問題 35
3.1.2 怎樣預(yù)測未來 38
3.1.3 線性方程的“直男”本性 40
3.1.4 最簡單的回歸問題—線性回歸問題 44
3.2 線性回歸的算法原理 46
3.2.1 線性回歸算法的基本思路 46
3.2.2 線性回歸算法的數(shù)學(xué)解析 48
3.2.3 線性回歸算法的具體步驟 53
3.3 在Python中使用線性回歸算法 54
3.4 線性回歸算法的使用場景 60
第4章 Logistic回歸分類算法 61
4.1 Logistic回歸:換上“S型曲線馬甲”的線性回歸 61
4.1.1 分類問題:選擇困難癥患者的自我救贖 63
4.1.2 Logistic函數(shù)介紹 66
4.1.3 此回歸非彼回歸:“LR”辨析 70
4.2 Logistic回歸的算法原理 71
4.2.1 Logistic回歸算法的基本思路 71
4.2.2 Logistic回歸算法的數(shù)學(xué)解析 74
4.2.3 Logistic回歸算法的具體步驟 78
4.3 在Python中使用Logistic回歸算法 78
4.4 Logistic回歸算法的使用場景 81
第5章 KNN分類算法 82
5.1 KNN分類算法:用多數(shù)表決進(jìn)行分類 82
5.1.1 用“同類相吸”的辦法解決分類問題 84
5.1.2 KNN分類算法的基本方法:多數(shù)表決 86
5.1.3 表決權(quán)問題 89
5.1.4 KNN的具體含義 89
5.2 KNN分類的算法原理 90
5.2.1 KNN分類算法的基本思路 90
5.2.2 KNN分類算法的數(shù)學(xué)解析 93
5.2.3 KNN分類算法的具體步驟 94
5.3 在Python中使用KNN分類算法 95
5.4 KNN分類算法的使用場景 96
第6章 樸素貝葉斯分類算法 98
6.1 樸素貝葉斯:用骰子選擇 98
6.1.1 從統(tǒng)計角度看分類問題 99
6.1.2 貝葉斯公式的基本思想 102
6.1.3 用貝葉斯公式進(jìn)行選擇 104
6.2 樸素貝葉斯分類的算法原理 106
6.2.1 樸素貝葉斯分類算法的基本思路 106
6.2.2 樸素貝葉斯分類算法的數(shù)學(xué)解析 108
6.2.3 樸素貝葉斯分類算法的具體步驟 111
6.3 在Python中使用樸素貝葉斯分類算法 111
6.4 樸素貝葉斯分類算法的使用場景 112
第7章 決策樹分類算法 114
7.1 決策樹分類:用“老朋友”if-else進(jìn)行選擇 114
7.1.1 程序員的選擇觀:if-else 116
7.1.2 如何種植一棵有靈魂的“樹” 118
7.1.3 決策條件的選擇藝術(shù) 119
7.1.4 決策樹的剪枝問題 122
7.2 決策樹分類的算法原理 125
7.2.1 決策樹分類算法的基本思路 125
7.2.2 決策樹分類算法的數(shù)學(xué)解析 127
7.2.3 決策樹分類算法的具體步驟 133
7.3 在Python中使用決策樹分類算法 134
7.4 決策樹分類算法的使用場景 135
第8章 支持向量機分類算法 137
8.1 支持向量機:線性分類器的“王者” 137
8.1.1 距離是不同類別的天然間隔 139
8.1.2 何為“支持向量” 140
8.1.3 從更高維度看“線性不可分” 142
8.2 支持向量機分類的算法原理 146
8.2.1 支持向量機分類算法的基本思路 146
8.2.2 支持向量機分類算法的數(shù)學(xué)解析 150
8.2.3 支持向量機分類算法的具體步驟 153
8.3 在Python中使用支持向量機分類算法 154
8.4 支持向量機分類算法的使用場景 156
第9章 K-means聚類算法 157
9.1 用投票表決實現(xiàn)“物以類聚” 157
9.1.1 聚類問題就是“物以類聚”的實施問題 159
9.1.2 用“K”來決定歸屬類別 162
9.1.3 度量“相似”的距離 164
9.1.4 聚類問題中的多數(shù)表決 165
9.2 K-means聚類的算法原理 168
9.2.1 K-means聚類算法的基本思路 168
9.2.2 K-means聚類算法的數(shù)學(xué)解析 169
9.2.3 K-means聚類算法的具體步驟 170
9.3 在Python中使用K-means聚類算法 171
9.4 K-means聚類算法的使用場景 172
第10章 神經(jīng)網(wǎng)絡(luò)分類算法 174
10.1 用神經(jīng)網(wǎng)絡(luò)解決分類問題 174
10.1.1 神經(jīng)元的“內(nèi)心世界” 177
10.1.2 從神經(jīng)元看分類問題 180
10.1.3 神經(jīng)網(wǎng)絡(luò)的“細(xì)胞”:人工神經(jīng)元 181
10.1.4 構(gòu)成網(wǎng)絡(luò)的魔力 184
10.1.5 神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí) 188
10.2 神經(jīng)網(wǎng)絡(luò)分類的算法原理 188
10.2.1 神經(jīng)網(wǎng)絡(luò)分類算法的基本思路 188
10.2.2 神經(jīng)網(wǎng)絡(luò)分類算法的數(shù)學(xué)解析 190
10.2.3 神經(jīng)網(wǎng)絡(luò)分類算法的具體步驟 193
10.