本書旨在為有興趣更好地理解數學和統(tǒng)計的學生提供一個可訪問的、全面的教科書,這些數學和統(tǒng)計知識是數據科學和機器學習算法的基礎。
譯者序
學者貴知其當然與所以然,若偶能然,不得謂為學。 這是中國民主革命先驅孫中山警誡自己并勉勵后人的學問之道。
我們正處于數據科學和機器學習蓬勃發(fā)展的時代,快速增長的海量數據給我們提供了源源不斷的數字資源,日新月異的機器學習技術讓我們能從中提取有用的價值,似乎人人都能分享時代發(fā)展的成果,又似乎很少有人能說清楚這背后的技術奧秘。在教學實踐中,我們看到很多高校爭先恐后地開設數據科學與人工智能專業(yè),也發(fā)現很多學生自愿放棄傳統(tǒng)優(yōu)勢專業(yè),轉攻數據科學、機器學習和人工智能等新興學科。
了解機器學習的讀者,一定聽說過被無數人奉為經典,又很難啃的西瓜書《機器學習》。西瓜書的作者周志華曾經指出,研究的目的是發(fā)現新知識、發(fā)明新技術,而研發(fā)則是利用已有的知識和技術進行研制、開發(fā)。由于Python、ScikitLearn等相關軟件的易用性,簡單調用現成的機器學習算法確實能夠解決一些問題,此謂知其然;而要真正把研究做深做精,寫出有深度、有價值的好文章,一定要理解實際問題或機器學習算法背后的數學和統(tǒng)計知識,此謂知其所以然。
當你不滿足于簡單應用現成的工具和方法,當你在迷信機器學習方法是黑盒的假設,當你想真正理解數據科學和機器學習的算法思想時,本書就是為你精心準備,讓你知其然也知其所以然的理想選擇。本書系統(tǒng)地介紹了統(tǒng)計監(jiān)督學習、無監(jiān)督學習、回歸、分類、決策樹和集成學習以及當前最流行的深度學習等內容,其中交叉熵方法、蒙特卡羅方法等很多內容本身就是作者的原創(chuàng)成果,由作者自己介紹最合適。
本書的每一個定理都有嚴謹的證明,主要算法都通過偽代碼描述了輸入、輸出及詳細過程,全書配套簡潔實用的Python代碼,代碼可以通過本書的GitHub主頁下載使用。本書每一章都有豐富的配套習題,能夠滿足你進一步提升自我的需要,部分章節(jié)還給出了擴展閱讀資料。另外,本書附錄部分系統(tǒng)地介紹了線性代數、泛函分析、多元微分、優(yōu)化問題和概率統(tǒng)計等數學基礎知識。本書可以作為高等院校數據科學、機器學習和人工智能等學科高年級本科生或研究生的教材,也可以作為機器學習領域相關從業(yè)人員的參考書和工具書。
本書第3章和附錄C由解放軍信息工程大學劉楠副教授翻譯,其余章節(jié)由河南工業(yè)大學人工智能與大數據學院于俊偉副教授翻譯。本書翻譯工作得到2021年度河南省重點研發(fā)與推廣專項(科技攻關)(212102210152)、河南工業(yè)大學第二批青年骨干教師培育計劃項目的資助。感謝機械工業(yè)出版社讓我翻譯這本優(yōu)秀的作品。感恩為河南水災、全國疫情無私奉獻的所有人,是他們讓我在困境中仍能安靜地完成本書的翻譯工作。由于譯者水平有限,錯誤和疏漏在所難免,歡迎廣大專家和讀者提出寶貴意見。
于俊偉
2021年8月
前言
在當前自動化、云計算、算法、人工智能和大數據的世界中,很少有主題像數據科學和機器學習如此相關。它們的流行不僅在于它們對現實生活問題的適用性,還在于它們天然地融合了許多不同的學科,包括數學、統(tǒng)計、計算機科學與工程和金融。
對于開始學習這些主題的人來說,大量的計算方法和數學思想可能會讓你不知所措。有些人可能只滿足于學習如何將現成的算法應用于實際情況。但是,如果黑盒算法的假設被違背了,我們還能相信其結果嗎?該如何調整算法?要真正理解數據科學和機器學習,重要的是理解其背后的數學和統(tǒng)計知識,以及由此產生的算法。
本書的目的是提供易于理解,但內容全面的數據科學和機器學習清單。它面向任何有志于更好地理解數學和統(tǒng)計學知識的人,這些知識是數據科學中豐富多樣的思想和機器學習算法的基礎。我們認為,雖然計算機語言更迭不息,但潛在的關鍵思想和算法將永遠存在,并將成為未來發(fā)展的基礎。
在開始介紹本書主題之前,我們想說幾句撰寫本書的哲學。這本書源于澳大利亞昆士蘭大學和新南威爾士大學的數據科學和機器學習課程。教授這些課程時,我們注意到學生們不僅渴望學習如何應用算法,而且還渴望了解這些算法的工作原理。然而,許多現有的教科書要么背景知識(如測度論和泛函分析)太多,要么背景知識太少(大多都是黑箱算法),經常脫節(jié)和相互矛盾的網絡資源又會造成信息過載,這使學生們更難逐步建立自己的知識體系。因此,我們想寫一本關于數據科學和機器學習的書,將相關內容像故事一樣串起來,并在附錄中給出重要的故事背景。故事由淺入深,逐漸發(fā)展起來。附錄包含了所有必要的背景知識,例如線性代數與泛函分析(附錄A)、多元微分與優(yōu)化問題(附錄B)以及概率與統(tǒng)計(附錄C)。此外,為了讓抽象的思想變得生動,我們相信讓讀者看到理論直接轉化為算法的實際實現過程是很重要的。經過深思熟慮,我們選擇Python作為編程語言。Python是免費提供的,并已被許多數據科學和機器學習從業(yè)者選作編程語言。它有許多好用的數據操作包(通常從R語言移植而來),其設計讓編程更容易。附錄D對Python進行了詳細介紹。
為了使本書篇幅合理,我們必須對主題做出選擇。重要思想和各種概念之間的聯(lián)系通過加粗字體來突出顯示。關鍵定義和定理通過加框來突出顯示。我們盡可能地提供了定理的證明。最后,我們非常重視數學符號。通常情況下,一旦用一致和簡潔的符號系統(tǒng)表示,看似困難的想法會突然變得顯而易見。我們使用不同的字體來區(qū)分不同類型的對象。向量、矩陣用黑斜體字母表示,如x和X,并通過大寫和小寫字母來區(qū)分隨機向量和它們的值,例如X表示隨機向量,x表示隨機向量的值或結果。集合通常用書法體字母G、H來表示。概率和期望的符號分別是P和E。概率分布由無襯線字體表示,如Bin和Gamma,普遍使用的正態(tài)分布和均勻分布符號和除外。數學符號中匯總了最重要的符號和縮寫。
數據科學為理解和處理數據提供了必要的語言和技術。它涉及數字數據的設計、收集、分析和解釋,目的是提取模式和其他有用信息。機器學習與數據科學密切相關,它研究從數據中學習的算法和計算機資源的設計。本書內容的組織大致遵循數據科學項目研究的典型步驟:收集數據以獲得要研究問題的相關信息;數據清洗、匯總和可視化;數據建模和分析;將模型的決策轉化為關于研究問題的決策和預測。由于本書面向數學和統(tǒng)計學,因此重點將放在建模和分析上。
第1章首先介紹如何使用Python中的數據操作包pandas來讀取、構造、匯總和可視化數據。雖然本章涵蓋的內容不涉及數學知識,但它是數據科學的一個明顯的切入點:更好地理解可用數據的性質。第2章介紹統(tǒng)計學習的主要內容。我們區(qū)分了監(jiān)督學習和無監(jiān)督學習技術,討論了如何評估(無)監(jiān)督學習方法的預測性能。統(tǒng)計學習的重要部分是數據建模,我們介紹了數據科學中各種有用的模型,包括正態(tài)線性模型、多元正態(tài)模型和貝葉斯模型。機器學習和數據科學中的許多算法都使用了蒙特卡羅方法,因此第3章介紹蒙特卡羅方法。蒙特卡羅方法可用于模擬、估計和優(yōu)化。第4章介紹無監(jiān)督學習,討論諸如密度估計、聚類和主成分分析等方法。第5章介紹監(jiān)督學習,解釋許多回歸模型背后的思想。在這一章,我們還描述了如何使用Python的statsmodels包來定義和分析線性模型。第6章在第5章的基礎上提出了核方法和正則化的強大概念,利用再生核希爾伯特空間理論,使得第5章的基本思想得以巧妙地展開。第7章介紹分類任務,這種任務也屬于監(jiān)督學習框架,因此這章考慮各種分類方法,包括貝葉斯分類、線性判別分析和二次判別分析、K近鄰和支持向量機。第8章探討利用樹結構進行回歸和分類的通用方法。第9章探索神經網絡和深度學習的工作原理,證明這些學習算法具有簡單的數學解釋。每章的結尾都提供了大量的練習。
每一章的Python代碼和數據集可以從GitHub網站https://githubcom/DSMLbook下載。
致謝
第1章和第5章的一些Python代碼改編自文獻\[73\]。感謝Benoit Liquet提供這些代碼,也感謝Lauren Jones將R代碼轉換成Python代碼。
感謝所有通過評論、反饋和建議為本書做出貢獻的人,他們是Qibin Duan、Luke Taylor、Rémi Mouzayek、Harry Goodman、Bryce Stansfield、Ryan Tongs、Dillon Steyl、Bill Rudd、Nan Ye、Christian Hirsch、Chris van der Heide、Sarat Moka、Aapeli Vuorinen、Joshua Ross、Giang Nguyen以及匿名的評論者。David Grubbs作為本書的編輯,他的專業(yè)精神和對細節(jié)的關注值得特別稱贊。
本書在澳大利亞數學科學研究所2019年暑期班進行了測試,80多名優(yōu)秀的高年級本科生(優(yōu)等生)在Zdravko IBotev講授的機器學習的數學方法課程中使用了本書。感謝他們提供寶貴的反饋意見。
特別感謝Robert Salomone、Liam Berry、Robin Carrick和Sam Daley,他們針對全書內容給出了非常詳細的評論意見,并編寫、改進了我們的Python代碼。他們的熱情、洞察力和善意的幫助是無價的。
當然,如果沒有家人的愛心支持、耐心陪伴和鼓勵,這些工作是不可能完成的,我們由衷地感謝他們。
本書得到了澳大利亞研究委員會數學與統(tǒng)計前沿卓越中心的資助,資助編號為CE140100049。
Dirk PKroese、Zdravko IBotev、
Thomas Taimre和Radislav Vaisman
布里斯班、悉尼
譯者序
前言
數學符號
第1章導入、匯總和可視化
數據
11簡介
12類型結構特征
13匯總表
14匯總統(tǒng)計量
15數據可視化
151定性變量繪圖
152定量變量繪圖
153雙變量的數據可視化
16擴展閱讀
17習題
第2章統(tǒng)計學習
21簡介
22監(jiān)督學習和無監(jiān)督學習
23訓練損失和測試損失
24統(tǒng)計學習中的權衡處理
25估計風險
251樣本內風險
252交叉驗證
26數據建模
27多元正態(tài)模型
28正態(tài)線性模型
29貝葉斯學習
210擴展閱讀
211習題
第3章蒙特卡羅方法
31簡介
32蒙特卡羅抽樣
321生成隨機數
322模擬隨機變量
323模擬隨機向量和隨機
過程
324重采樣
325馬爾可夫鏈蒙特卡羅
33蒙特卡羅估計
331樸素蒙特卡羅
332自舉法
333方差縮減
34蒙特卡羅優(yōu)化
341模擬退火
342交叉熵方法
343分裂優(yōu)化
344噪聲優(yōu)化
35擴展閱讀
36習題
第4章無監(jiān)督學習
41簡介
42無監(jiān)督學習的風險和損失
43期望大化算法
44經驗分布和密度估計
45通過混合模型聚類
451混合模型
452混合模型的EM
算法
46向量量化聚類
461K均值
462通過連續(xù)多極值優(yōu)化
進行聚類
47層次聚類
48主成分分析
481動機:橢球體的
主軸
482PCA和奇異值分解
49擴展閱讀
410習題
第5章回歸
51簡介
52線性回歸
53線性模型分析
531參數估計
532模型選擇和預測
533交叉驗證與預測殘差
平方和
534樣本內風險和赤池信
息準則
535分類特征
536嵌套模型
537決定系數
54正態(tài)線性模型的推理
541比較兩個正態(tài)線性
模型
542置信區(qū)間和預測
區(qū)間
55非線性回歸模型
56用Python實現線性模型
561建模
562分析
563方差分析
564置信區(qū)間和預測區(qū)間
565模型驗證
566變量選擇
57廣義線性模型
58擴展閱讀
59習題
第6章正則化和核方法
61簡介
62正則化
63再生核希爾伯特空間
64再生核的構造
641通過特征映射構造
再生核
642根據特征函數構造
再生核
643利用正交特征構造
再生核
644通過核構造再生核
65表示定理
66平滑三次樣條
67高斯過程回歸
68核PCA
69擴展閱讀
610習題
第7章分類
71簡介
72分類評價指標
73基于貝葉斯規(guī)則的分類
74線性判別分析和二次判別
分析
75邏輯回歸和softmax分類
76K近鄰分類
77支持向量機
78使用ScikitLearn進行分類
79擴展閱讀
710習題
第8章決策樹和集成方法
81簡介
82自頂向下的決策樹構建方法
821區(qū)域預測函數
822分裂規(guī)則
823終止條件
824基本實現
83其他考慮因素
831二叉樹與非二叉樹
832數據預處理
833替代分裂規(guī)則
834類別變量
835缺失值
84控制樹形
841代價復雜度剪枝
842決策樹的優(yōu)點和
局限性
85自舉聚合
86隨機森林
87提升法
88擴展閱讀
89習題
第9章深度學習
91簡介
92前饋神經網絡
93反向傳播
94訓練方法
941速下降法
942LevenbergMarquardt
方法
943受限內存BFGS
方法
944自適應梯度法
95Python示例
951簡單多項式回歸
952圖像分類
96擴展閱讀
97習題
附錄A線性代數與泛函分析
附錄B多元微分與優(yōu)化問題
附錄C概率與統(tǒng)計
附錄DPython入門
參考文獻