Python機(jī)器學(xué)習(xí)實(shí)踐
定 價(jià):89 元
叢書名:人工智能開發(fā)與實(shí)戰(zhàn)叢書
- 作者:[意]安德烈·朱薩尼(AndreaGiussani)
- 出版時(shí)間:2023/6/1
- ISBN:9787111729860
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312PY
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書提供了使用Python開發(fā)機(jī)器學(xué)習(xí)應(yīng)用程序的基本原理。主要內(nèi)容包括:機(jī)器學(xué)習(xí)概念及其應(yīng)用;數(shù)據(jù)預(yù)處理、降維;各種線性模型、集成學(xué)習(xí)方法、隨機(jī)森林、提升方法;自然語(yǔ)言處理、深度學(xué)習(xí)等。本書跟進(jìn)了機(jī)器學(xué)習(xí)的研究成果,比如近幾年提出的著名算法XGBoost和CatBoost,以及SHAP值。這些方法是機(jī)器學(xué)習(xí)領(lǐng)域中新穎且先進(jìn)的模型。
本書目的是向讀者介紹從業(yè)人員采用的解決機(jī)器學(xué)習(xí)問(wèn)題的主要現(xiàn)代算法,跟蹤機(jī)器學(xué)習(xí)領(lǐng)域研究前沿,并為初學(xué)者提供使用機(jī)器學(xué)習(xí)的方法。本書覆蓋面廣,對(duì)所有希望在數(shù)據(jù)科學(xué)和分析任務(wù)中使用機(jī)器學(xué)習(xí)的人來(lái)說(shuō),本書既是一本很好的學(xué)習(xí)資料,同時(shí)也是一本實(shí)戰(zhàn)教程,其中介紹了多種統(tǒng)計(jì)模型,并提供了大量的相應(yīng)代碼,以將這些概念一致地應(yīng)用于實(shí)際問(wèn)題。
原 書 前 言
統(tǒng)計(jì)方法的目標(biāo)是減少數(shù)據(jù)。 一定數(shù)量的數(shù)據(jù)將被相對(duì)較少數(shù)量的數(shù)據(jù)替換,這些數(shù)量的數(shù)據(jù)應(yīng)充分表示出原始數(shù)據(jù)中包含的相關(guān)信息。由于數(shù)據(jù)提供的獨(dú)立事實(shí)的數(shù)量通常遠(yuǎn)大于所尋求的事實(shí)的數(shù)量,因此實(shí)際樣本提供的大部分信息是無(wú)關(guān)緊要的。用于減少數(shù)據(jù)的統(tǒng)計(jì)過(guò)程的目標(biāo)是排除這些不相關(guān)的信息,并分離出數(shù)據(jù)中包含的所有相關(guān)信息。
——R.A.Fisher (1922)
這段話出自偉大的統(tǒng)計(jì)學(xué)家之一 R.A. Fisher。我想說(shuō),這句話包含了機(jī)器學(xué)習(xí)的精髓,盡管與20世紀(jì)相比,很多事情都發(fā)生了變化。例如,現(xiàn)在我們通常面對(duì)的數(shù)據(jù)集的觀察數(shù)量遠(yuǎn)遠(yuǎn)大于不同特征的集合。那時(shí),F(xiàn)isher 研究的數(shù)據(jù)集可能是 Iris 數(shù)據(jù)集,但現(xiàn)在我們可以處理數(shù)百萬(wàn)個(gè)樣本的數(shù)據(jù)集,因此所有經(jīng)典理論結(jié)果都可以輕松滿足(如中心極限定理)。另外,在許多現(xiàn)代應(yīng)用中,維度問(wèn)題仍然存在,因此這些詞在機(jī)器學(xué)習(xí)社區(qū)中仍然非常重要。換個(gè)說(shuō)法,斯坦福大學(xué)的計(jì)算機(jī)科學(xué)家吳恩達(dá)近表示:特征提取既困難又耗時(shí),需要專業(yè)知識(shí)。
以我而言,特征工程是降維的現(xiàn)代概念,因?yàn)樗鼈冎荚谶M(jìn)行特征提取以提高模型的性能。實(shí)質(zhì)上,將“機(jī)器學(xué)習(xí)”一詞包含在“降維”中會(huì)非常易于理解。
機(jī)器學(xué)習(xí)在過(guò)去十年中獲得了極大的普及,這不僅是因?yàn)槿藗冊(cè)谌粘:?jiǎn)單操作中產(chǎn)生了大量可用數(shù)據(jù),還因?yàn)槿藗兤毡檎J(rèn)為從數(shù)據(jù)中學(xué)習(xí)可以做出更好的決策及更好地了解正在研究的現(xiàn)象。
在非;\統(tǒng)的術(shù)語(yǔ)中,機(jī)器學(xué)習(xí) (Machine Learning, ML) 可以理解為允許系統(tǒng)自主執(zhí)行特定任務(wù)的一組算法和數(shù)學(xué)模型,提供與模型相關(guān)的分?jǐn)?shù)和度量來(lái)評(píng)估其性能。 它有時(shí)會(huì)與預(yù)測(cè)(數(shù)值)分析相混淆,后者確實(shí)是機(jī)器學(xué)習(xí)的一部分,但與統(tǒng)計(jì)學(xué)習(xí)更加相關(guān)。 機(jī)器學(xué)習(xí)方法的應(yīng)用范圍廣泛,如從圖像識(shí)別到文本分析中的主題檢測(cè),從預(yù)測(cè)患者是否會(huì)患乳腺癌到預(yù)測(cè)3個(gè)月后的股票價(jià)格。
機(jī)器學(xué)習(xí)的主要目標(biāo)是基于一組特征來(lái)預(yù)測(cè)結(jié)果。 該模型在一組數(shù)據(jù)上進(jìn)行訓(xùn)練,其中目標(biāo)變量可用,并獲得預(yù)測(cè)器(或?qū)W習(xí)器)。 然后,該預(yù)測(cè)器用于預(yù)測(cè)新數(shù)據(jù)的結(jié)果,這些數(shù)據(jù)在訓(xùn)練時(shí)不可用。通常,一個(gè)好的預(yù)測(cè)器是能夠準(zhǔn)確預(yù)測(cè)目標(biāo)變量的。
管道(Pipeline)描述了一種判別式監(jiān)督學(xué)習(xí)方法,人們的目標(biāo)是根據(jù)某些特征X預(yù)測(cè)目標(biāo)變量y。在本書中,我們將重點(diǎn)關(guān)注收縮估計(jì)器、支持向量機(jī)算法、集成方法及其在結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)上的應(yīng)用。 然而,在許多應(yīng)用中,我們可能只想找到目標(biāo)和特征之間的某種關(guān)系:這就需要無(wú)監(jiān)督學(xué)習(xí)方法。 盡管我們將更多地關(guān)注有監(jiān)督的技術(shù),但也會(huì)關(guān)注降維技術(shù),如主成分分析(PCA)。本質(zhì)上,PCA是一種旋轉(zhuǎn)數(shù)據(jù)集的方法,旋轉(zhuǎn)后的特征在統(tǒng)計(jì)的意義下是不相關(guān)的。
編寫本書的目的是向讀者介紹從業(yè)者用來(lái)解決機(jī)器學(xué)習(xí)問(wèn)題的主要現(xiàn)代算法,以及從線性模型到易于處理非線性關(guān)系的現(xiàn)代方法。
本書是為廣大的技術(shù)讀者而設(shè)計(jì)的:一方面,本書是為博科尼大學(xué)的學(xué)生編寫的,他們所學(xué)的專業(yè)為應(yīng)用科學(xué),但很可能想學(xué)習(xí)現(xiàn)代機(jī)器學(xué)習(xí)技術(shù),以將現(xiàn)代應(yīng)用程序擴(kuò)展到經(jīng)濟(jì)學(xué)、金融、社會(huì)和政治科學(xué)中; 另一方面,我堅(jiān)信對(duì)于所有想要在數(shù)據(jù)科學(xué)和分析任務(wù)中使用機(jī)器學(xué)習(xí)的人來(lái)說(shuō),本書是一個(gè)非常好的袖珍伙伴(pocket-friend)。 實(shí)際上,本書作為一種cookbook類書籍,其中介紹了統(tǒng)計(jì)模型,并提供了相應(yīng)的代碼部分,以將這些概念始終如一地應(yīng)用于實(shí)際問(wèn)題。
我在大多數(shù)地方都故意避免使用數(shù)學(xué),因?yàn)槲蚁嘈潘ㄓ袝r(shí))會(huì)分散本書的主要目標(biāo),即賦予初學(xué)者學(xué)習(xí)機(jī)器學(xué)習(xí)方法的能力。 同樣,在本書的許多部分,我們?cè)谇逦U述和簡(jiǎn)潔之間選擇了前者。 我知道本書提供的大多數(shù)代碼都可以省略,但這里進(jìn)行了合理選擇,以便向廣泛的目標(biāo)受眾說(shuō)明方法。
本書的主要目標(biāo)讀者是從業(yè)者,他們不需要研究算法背后的數(shù)學(xué)知識(shí)。如果讀者有需要,那么強(qiáng)烈建議通過(guò)閱讀技術(shù)書籍和特定論文來(lái)加深這些概念。如果讀者對(duì)所提出算法背后的數(shù)學(xué)感興趣,那么有很多關(guān)于技術(shù)方面的書籍,這在本書中會(huì)提到。
本書的關(guān)鍵是引導(dǎo)讀者使用不同的方法,從 Bagging 到現(xiàn)代 XGBoost,這可能是機(jī)器學(xué)習(xí)從業(yè)者的。 這實(shí)際上是本書的一個(gè)亮點(diǎn):據(jù)我所知,還沒(méi)有一本書特別關(guān)注近的集成方法,如 XGBoost 或 CatBoost。
Python 是進(jìn)行分析的高級(jí)語(yǔ)言。這是應(yīng)用機(jī)器學(xué)習(xí)的現(xiàn)代語(yǔ)言,現(xiàn)代軟件和技術(shù)很多都是用這種語(yǔ)言開發(fā)的。 請(qǐng)注意,Python 是一個(gè)開源軟件,可以從以下鏈接下載:https://www.python.org。它允許任何人輕松高效地生產(chǎn)、推廣和維護(hù)軟件。 此外,我相信一旦學(xué)習(xí)Python,就會(huì)很容易跟隨機(jī)器學(xué)習(xí)社區(qū)的發(fā)展和改進(jìn)。
本書結(jié)構(gòu)如下:
第1章描述了機(jī)器學(xué)習(xí)算法遵循的標(biāo)準(zhǔn)流程,包括標(biāo)準(zhǔn)預(yù)處理和更高級(jí)的技術(shù),如用于降維的主成分分析(PCA),并介紹了偏差之間的基本關(guān)系和機(jī)器學(xué)習(xí)的方差。所有的技術(shù)都附有實(shí)際例子。
第2章介紹了機(jī)器學(xué)習(xí)中的一個(gè)關(guān)鍵概念,即收縮。當(dāng)人們必須處理許多特征時(shí)(如在遺傳學(xué)中),這非常有用,并且介紹了Ridge 和 Lasso 等技術(shù)。此外,本章還區(qū)分了分類和回歸技術(shù),首先介紹邏輯回歸模型,然后介紹支持向量機(jī),這是當(dāng)數(shù)據(jù)線性可分時(shí)使用的兩個(gè)分類器。非線性支持向量機(jī)也將受到極大的關(guān)注。
第3章介紹了流行的機(jī)器學(xué)習(xí)技術(shù)之一,即集成方法,包括隨機(jī)森林、梯度提升及相應(yīng)的應(yīng)用。本章介紹的XGBoost 算法是任何機(jī)器學(xué)習(xí)者的得力工具,并對(duì) SHAP 值進(jìn)行了精彩的討論,這是向非技術(shù)讀者解釋任何模型輸出的一個(gè)較好工具。
第4章介紹了可以進(jìn)一步研究機(jī)器學(xué)習(xí)的兩個(gè)主要領(lǐng)域:自然語(yǔ)言處理和深度學(xué)習(xí)。兩者都是非常熱門的話題,社區(qū)正在不斷努力改進(jìn)可用的模型。我強(qiáng)烈建議有興趣的讀者通過(guò)給定的參考資料加深對(duì)自然語(yǔ)言處理和深度學(xué)習(xí)的學(xué)習(xí)。
由于本書的目標(biāo)受眾是廣泛的讀者,因此還設(shè)置了附錄APython速成教程:這樣不僅介紹了基礎(chǔ)知識(shí),而且還介紹了更廣泛的概念,例如面向?qū)ο蟮木幊獭?br>為了便于使用所提出的方法并提高可讀性,創(chuàng)建了一個(gè)特定于本書的庫(kù),稱為 egeaML,該庫(kù)可在GitHub上的https://github.com/andreagiussani/Applied_Machine_Learning_with_Python上公開獲得。
用戶可按照GitHub倉(cāng)庫(kù)中的說(shuō)明進(jìn)行安裝。注意,用戶可以直接在任何NoteBook環(huán)境中安裝它,如Jupyter或Colab,只需輸入并運(yùn)行以下代碼段:
!pip install git+https://github.com/andreagiussani/Applied_Machine_Learning_with_Python.git
這里的“!”操作符用來(lái)告訴NoteBook這不是 Python 代碼,而是命令行腳本。 本書中使用的數(shù)據(jù)集可以在Git Hub倉(cāng)庫(kù)中輕松訪問(wèn)。 此外,Git Hub倉(cāng)庫(kù)將定期更新材料,因此強(qiáng)烈建議讀者經(jīng)常檢查它。
致謝
我要感謝許多幫助我寫這本書的人。他們中的大多數(shù)人都給予了我繼續(xù)這個(gè)項(xiàng)目的支持和動(dòng)力,他們中的一些人給出了有趣的見(jiàn)解和建議。如果沒(méi)有他們的幫助,這個(gè)項(xiàng)目永遠(yuǎn)不會(huì)開花結(jié)果。其中,我要感謝Alberto Clerici,他是個(gè)對(duì)這個(gè)項(xiàng)目非常感興趣的人,他幫助我完成了本書的終版本。我還要感謝Marco Bonetti,他對(duì)統(tǒng)計(jì)學(xué)習(xí)方法的興趣極大地幫助了我每天提高自己,這無(wú)疑改善了書稿。我還要感謝Egea,他讓我有機(jī)會(huì)以極大的靈活性來(lái)編寫這本書稿,同時(shí)也要感謝Egea對(duì)本書的策劃和準(zhǔn)備提供的支持。后,我還要感謝許多同事和朋友,他們與我討論了這個(gè)項(xiàng)目并給了我重要的見(jiàn)解,其中,我要感謝Alberto Arrigoni,他與我就這個(gè)有趣的話題進(jìn)行了愉快的交談,以及Giorgio Conte,他幫助我構(gòu)建了GitHub項(xiàng)目。
目錄
譯者的話
原書前言
第1章機(jī)器學(xué)習(xí)初步
1.1一個(gè)簡(jiǎn)單的監(jiān)督模型:近鄰法
1.2數(shù)據(jù)預(yù)處理
1.2.1數(shù)據(jù)放縮
1.2.2數(shù)據(jù)高斯化:冪變換簡(jiǎn)介
1.2.3類別變量的處理
1.2.4缺失值的處理
1.3不平衡數(shù)據(jù)的處理方法
1.3.1少數(shù)類的隨機(jī)過(guò)采樣
1.3.2多數(shù)類的隨機(jī)欠采樣
1.3.3合成少數(shù)類過(guò)采樣
1.4降維:主成分分析(PCA)
1.4.1使用PCA進(jìn)行降維
1.4.2特征提取
1.4.3非線性流形算法:t-SNE
第2章機(jī)器學(xué)習(xí)線性模型
2.1線性回歸
2.2收縮方法
2.2.1Ridge回歸(L2正則化)
2.2.2Lasso回歸(L1正則化)
2.2.3彈性網(wǎng)絡(luò)回歸
2.3穩(wěn)健回歸
2.3.1Huber回歸
2.3.2RANSAC
2.4Logistic回歸
2.4.1Logistic回歸為什么是線性的
2.4.2Logistic回歸預(yù)測(cè)(原始模型輸出)與概率(Sigmoid輸出)
2.4.3Python Logistic回歸
2.4.4模型性能評(píng)估
2.4.5正則化
2.5線性支持向量機(jī)
2.6逾越線性:核模型
2.6.1核技巧
2.6.2實(shí)際分類例子:人臉識(shí)別
第3章逾越線性:機(jī)器學(xué)習(xí)集成方法
3.1引言
3.2集成方法
3.2.1自舉聚合
3.2.2包外估計(jì)(Out-Of-Bag Estimation)
3.3隨機(jī)森林
3.3.1隨機(jī)森林分類
3.3.2隨機(jī)森林回歸
3.4提升(Boosting)方法
3.4.1AdaBoost算法
3.4.2梯度提升(Gradient Boosting)算法
3.4.3梯度提升(XGBoost)算法
3.4.4CatBoost算法
第4章現(xiàn)代機(jī)器學(xué)習(xí)技術(shù)
4.1自然語(yǔ)言處理初步
4.1.1文本數(shù)據(jù)預(yù)處理
4.1.2文本的數(shù)值表示:詞袋模型
4.1.3實(shí)際例子:使用IMDB電影評(píng)論數(shù)據(jù)集進(jìn)行情感分析
4.1.4單詞頻率—逆文本頻率
4.1.5n-Grams模型
4.1.6詞嵌入
4.2深度學(xué)習(xí)初步
4.2.1用神經(jīng)網(wǎng)絡(luò)處理復(fù)雜數(shù)據(jù)
4.2.2多分類
附錄
附錄APython速成教程
A.1Python構(gòu)建塊
A.1.1變量
A.1.2方法與函數(shù)
A.2Python數(shù)據(jù)結(jié)構(gòu)
A.2.1列表與元組
A.2.2集合
A.2.3字典
A.3Python循環(huán)
A.3.1for循環(huán)
A.3.2while循環(huán)
A.4Python高級(jí)數(shù)據(jù)結(jié)構(gòu)
A.4.1列表推導(dǎo)式
A.4.2Lambda函數(shù)
A.5函數(shù)概念進(jìn)階
A.5.1通配符在函數(shù)參數(shù)中的使用
A.5.2函數(shù)中的局部作用域與全局作用域
A.6面向?qū)ο缶幊毯?jiǎn)介
A.6.1對(duì)象、類和屬性
A.6.2子類和繼承
附錄B詞袋模型的數(shù)學(xué)原理
參考文獻(xiàn)