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