前言 (Preface)
為何撰寫本書
近期AI發展相較以往,更加如火如荼,去年(2022) Text to image、ChapGPT引爆生成式AI (Generative AI)熱潮,衝擊藝術創作市場及Google搜索引擎霸主地位,相信有更多人因而希望探究AI科學,了解其背後的技術,或從事相關工作;然而,AI領域博大精深,不是一蹴可幾,需要奠定紮實的基礎,一步一腳印才能進入AI殿堂。
筆者從事機器學習教育訓練多年,其間也在『IT邦幫忙』撰寫上百篇的文章,從學員及讀者的回饋獲得許多寶貴意見,有感於在教學現場的時間壓力下,很多細節無法盡情的討論,難免有許多內容成為遺珠之憾,因此,撰寫本書,針對機器學習作較全面性的介紹,讓讀者有充裕的時間思考,或者挑選有興趣的課題深入研究。
本書以Scikit-learn套件為主體,介紹各類的演算法,不只是說明用法,也涵蓋背後的原理、數學公式推導,並示範如何自行開發演算法,與Scikit-learn演算法相互驗證,同時介紹大量應用實例,期望讀者能全面性的掌握理論、技術與實作。另外書中每個範例都有詳細的程式說明,也遵循完整的機器學習開發流程,讓讀者能充分理解每個環節的重要任務,包括資料的探索、清理、特徵工程、模型訓練、評估、參數調校到最終的佈署,希望這本書能成為機器學習入門者最佳的夥伴,在讀者紮根的過程中,貢獻一點微薄的力量。
本書主要的特點
1. 本書不是以Scikit-learn的模組分類介紹,而是以完整的機器學習開發流程角度出發。
2. 每一個演算法都包括原理、自行開發、Scikit-learn函數用法,最後再附應用實例。
3. 由於筆者身為統計人,希望能「以統計/數學為出發點」,介紹機器學習必備的數理基礎,但又不希望讓離開校園已久的在職者看到一堆數學符號就心生恐懼,因此,會有大量圖解,並以程式開發加深演算法原理的掌握,增進學習樂趣。
4. 完整的範例程式及各種演算法的延伸應用,以實用為要,希望能觸發創意,在企業內應用自如。
目標對象
1. 機器學習的入門者:須熟悉Python程式語言及資料科學基礎套件NumPy、Pandas及MatPlotLib。
2. 資料工程師及分析師:以模型開發及導入為職志,希望能應用各種演算法,或更進一步改良與實作演算法。
3. 資訊工作者:希望能擴展機器學習知識領域。
4. 從事其他領域的工作,希望能一窺機器學習奧秘者。
閱讀重點
1. 第一章:Scikit-learn模組及機器學習分類、學習地圖、開發流程。
2. 第二章:資料前置處理,包括資料清理、資料探索、特徵工程。
3. 第三章:資料探索與分析,包括描述統計量、統計圖分析。
4. 第四章:特徵工程,包括特徵縮放(Feature Scaling)、特徵選取(Feature Selection)、特徵萃取(Feature Extraction)及特徵生成(Feature Generation),內含各式降維演算法說明、維度災難(Curse of dimensionality)概念說明。
5. 第五章:迴歸(Regression),包括線性迴歸、多項式迴歸、時間序列等演算法,還有正則化(Regularization)、過度擬合(Overfitting)、偏差(Bias)與變異(Variance)的平衡。
6. 第六~七章:分類演算法,包括羅吉斯迴歸(Logistic Regression)、最近鄰(KNN)、單純貝氏分類法(Naïve bayes classifier)、支援向量機(SVM)、決策樹(Decision Tree)及隨機森林(Random forest)等,包括各項演算法的原理、開發邏輯、應用與優缺點說明。
7. 第八章:模型效能評估與調校,包括交叉驗證法、參數調校、管線(Pipeline)、混淆矩陣(Confusion Matrix)、效能衡量指標(Performance metrics)。
8. 第九章:集群(Clustering)演算法,K-Means、階層式集群、以密度為基礎的集群(DBSCAN)、高斯混合模型(GMM)等。
9. 第十章:整體學習(Ensemble Learning)演算法,包括多數決(Majority Voting)、裝袋法(Bagging)、強化法(Boosting)、堆疊法(Stacking)。
10. 第十一章:介紹其他課題,包括半監督式學習(Semi-supervised learning)、Active learning、可解釋的AI(Explainable AI, XAI)、機器學習架構。
本書包括許多應用範例,包括:
1 分類
1.1 鳶尾花(Iris)品種分類
1.2 葡萄酒分類
1.3 乳癌診斷
1.4 人臉資料集(LFW)辨識
1.5 新聞資料集(News groups)分類
1.6 鐵達尼號生存預測
1.7 手寫阿拉伯數字辨識
1.8 員工流失預測
1.9 信用卡詐欺
2 迴歸及時間預測
2.1 股價預測
2.2 房價預測
2.3 計程車小費預測
2.4 航空公司客運量預測
2.5 以人臉上半部預測人臉下半部
2.6 糖尿病指數預測
3 集群
3.1 手寫阿拉伯數字影像生成
3.2 客戶區隔(RFM)
3.3 影像壓縮
3.4 離群值偵測
4 商品推薦
4.1 協同過濾
4.2 KNN
5 影像
5.1 去躁(Image denoising)
5.2 影像生成
5.3 影像壓縮
6 自然語言
6.1 文章大意預測
6.2 垃圾信分類
6.3 問答(Q&A)
本書範例程式碼、參考超連結、勘誤表全部收錄在 https://github.com/mc6666/Scikit_learn_Book,並隨時更新相關資訊。
致謝
因個人能力有限,還是有許多議題成為遺珠之憾,仍待後續的努力,感謝深智出版社的大力支援,使本書得以順利出版,最後要謝謝家人的默默支持。
內容如有疏漏、謬誤或有其他建議,歡迎來信指教(mkclearn@gmail.com)或在『IT邦幫忙』(https://ithelp.ithome.com.tw/users/20001976/articles)留言討論。