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