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