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