前 言
機器學習是近年來非常熱門的方向,然而普通的程式設計師想要轉行機器學習卻困難重重。回想起來,筆者在剛開始學習機器學習時,就被一大堆數學公式和推導過程所折磨,這樣的日子至今還歷歷在目。當時筆者也覺得機器學習是個門檻非常高的學科。但實際上,在機器學習的從業人員裡,究竟有多少人需要從頭去實現一個演算法?又有多少人有機會去發明一個新演算法?從一開始就被細節和困難纏住,這嚴重打擊想進入機器學習領域新人的熱情和信心。
本書就是要解決這個問題。筆者希望儘量透過通俗的語言去描述演算法的工作原理,並使用scikit-learn 工具套件示範演算法的使用,以及演算法所能解決的問題,給那些非專業出身而想半路「殺進」人工智慧領域的程式設計師,以及對機器學習有興趣的人提供一本入門的書籍。
當然,這裡不是否認數學和演算法實現的重要性,畢竟它們是人工智慧領域的基礎學科方向。萬事起頭難,只有開啟了一扇門,才能發現一個新的五彩繽紛的世界。在這個世界裡,我們可以吃到新口味的麵包,也能認識那些做麵包的人。希望本書能幫助讀者開啟機器學習這扇門。
✾ 本書特色
1. 用通俗易懂的語言介紹機器學習演算法的原理,符合初學者的認知規律本書說明時首先會用通俗的語言介紹常用的機器學習演算法,幫助讀者直觀地了解每個演算法的基本原理,然後用大量的圖示及實例介紹如何使用scikit-learn 工具套件解決現實生活中的機器學習問題。這種由淺入深、循序漸進的講授方式,完全遵循初學者對機器學習演算法的認知規律。
2. 豐富的範例圖片,幫助讀者更加直觀地了解演算法背後的原理
機器學習以其背後複雜的數學原理及演算法推導和證明過程嚇退了一大批讀者,一圖勝千言,本書列出大量的圖示,用圖片的方式具體地介紹演算法的基本原理,讓讀者對演算法有更加直觀的了解。把複雜的數學公式和冗長的文字描述濃縮到一張張圖片中,有效地降低學習的門檻。
3. 實例豐富,幫助讀者使用機器學習演算法解決專案應用問題
手寫辨識程式怎麼做?怎麼實現人臉識別系統?怎麼過濾垃圾郵件?電子商務網站上猜你喜歡的商品是什麼原理?如何實現的?電影網站如何去推薦符合使用者喜好的電影?如何利用機器學習對消費者的特性進行細分,進一步更好地服務好各細分市場的消費者?銀行如何去檢測使用者的信用卡可能失竊了?透過閱讀本書,讀者將了解到這些複雜問題背後的原理,甚至你都可以自己解決這些問題。
✾ 本書內容介紹
第1 章 機器學習介紹,涵蓋機器學習的定義、應用場景及機器學習的分類,並透過一個簡單的範例,讓讀者了解機器學習的典型步驟和機器學習領域的一些專業術語。
第2 章 Python 機器學習軟體套件,介紹scikit-learn 開發環境的架設步驟,以及IPython、Numpy、Pandas 和Matplotlib 等軟體套件的基礎知識,並透過一個scikit-learn 機器學習實例介紹scikit-learn 的一般性原理
和通用規則。
第3 章 機器學習理論基礎,介紹演算法模型效能評估的指標和評估方法等理論基礎。本章內容是全書最關鍵的理論基礎知識,對了解本書其他章節的內容非常重要。
第4 章 k- 近鄰演算法,介紹了一個有監督的機器學習演算法,即k- 近鄰演算法。該演算法可以解決分類問題,也可以解決回歸問題。
第5 章 線性回歸演算法,介紹了單變數線性回歸演算法和多變數線性回歸演算法的原理,以及透過梯度下降演算法反覆運算求解線性回歸模型,並列出一個房價預測的實例。另外,本章對成本函數和使用線性回
歸演算法對資料進行擬合也做了說明。
第6 章 邏輯回歸演算法,介紹邏輯回歸演算法的原理及成本函數。在本章中主要解決的問題有:邏輯回歸演算法的原理是什麼?怎樣使用梯度下降演算法解決反覆運算求解邏輯回歸演算法的模型參數?什麼是正規化?正規化能解決什麼問題? L1 範數和L2 範數作為模型正規項有什麼區別?如何使用邏輯回歸演算法解決乳腺癌檢測問題?
第7 章 決策樹,主要介紹決策樹的演算法原理和演算法參數,並列出一個預測實例,最後對集合演算法做必要說明。
第8 章 支援向量機,主要介紹支援向量機的基本演算法原理及常用核心函數,並列出用支援向量機來解決乳腺癌檢測問題的實例。
第9 章 單純貝氏演算法,首先從貝氏定理談起,引用單純貝氏分類法;然後透過一個簡單的實例說明演算法的基本原理;接著介紹機率分佈的概念及幾種典型的機率分佈;最後透過一個文件分類實例來說明單純貝氏演算法的應用。
第10 章 PCA 演算法,首先介紹PCA 的演算法原理;然後透過一個簡單的模擬運算過程幫助讀者了解該演算法的原理和實現步驟;最後介紹PCA 演算法背後的實體含義。本章在說明的過程中順便推薦一些優秀的
線性代數資源,供讀者參考。
第11 章 k- 平均值演算法,首先介紹該演算法的基本原理及關鍵反覆運算步驟;然後透過一個簡單的實例,介紹如何使用scikit-learn 中的k- 平均值演算法解決分群問題;最後使用一個文字分群分析的實例介紹k- 平均值演算法的應用,並介紹典型的無監督機器學習演算法的效能評估指標。
✾ 如何更進一步地使用本書
如果你只是好奇機器學習背後的原理,大可只閱讀書中的文字部分,跳過程式實現環節;如果是想藉由本書敲開機器學習這扇大門,未來想從事這一行業,建議你系統地閱讀本書,而且要親自動手完成書中的所有實例。本書提供書中所有實例的完整原始程式碼,建議你認真閱讀這些原始程式碼,並動手執行這些程式,還可以調整參數,看看結果有什麼變化,最後再獨立把這些實例實現一遍。
✾ 閱讀本書需要的知識儲備
閱讀本書,建議你最好學習過Python 語言,如果你不熟悉Python 語言,最好有其他程式語言基礎,如C++ 或Java 語言等。
✾ 本書適合讀者群
1. 有一定程式設計經驗,而不滿足於永遠在「搬磚」的軟體工程師
你是不是厭倦每天重複「搬磚」的過程?你是不是想加強職業的溢價?
本書或許可以幫助你開啟一扇大門。人工智慧在可預見的未來有極大的發展前景,特別是近幾年,層出不窮的開放原始碼機器學習架構不斷湧現出來,雲端運算和分散式運算能力的進一步提升,為人工智慧應用於更廣泛的領域提供必要的基礎。在可以預見的未來,人工智慧領域對機器學習工程師的需求將急遽上升。如果本書能幫助你開啟機器學習領域的這扇大門,讓你能利用機器學習的知識解決實際問題,將會是筆者最大的榮耀。
2. 對這個世界充滿好奇的人
筆者之前在某電子商務網站上搜索某款手機,之後上網時有大量的網站廣告都在向筆者展示手機及其相關產品。這些網站是怎麼知道筆者近期想買手機的?筆者常去的電影網站每次都能推薦筆者一些符合筆者「口味」的電影。這是如何做到的?本書可以讓你以極低的門檻了解這些問題背後的原理,甚至你也可以自己動手做一個,玩一玩。
本書雖然有大量的範例程式,透過筆者通俗易懂的說明,並配以大量的圖示,讓閱讀門檻降低,甚至可以作為科普圖書去閱讀。這是一本適合所有對這個世界充滿好奇的人閱讀,尤其是那些對人工智慧充滿好奇、對機器學習演算法有興趣的人。
✾ 本書原始程式碼取得方式
本書有關的原始程式碼檔案需要讀者自行下載。請讀者至本公司的網站
www.topteam.cc,資源下載區下載即可。另為求程式執行的正確性,本書之原始程式碼保留中國大陸簡體中文,使用Jupyter Notebook 執行時不會有亂碼及找不到程式的情況。
✾ 本書作者
本書由黃永昌組織撰寫,其他參與撰寫的人員還有張昆、張友、趙桂芹、張金霞、張增強、劉桂珍、陳冠軍、魏春、張燕、孟春燕、頊宇峰、李楊坡、張增勝、張宇微、張淑鳳、伍雲輝、孟慶宇、馬娟娟、李衛紅、韓布偉、宋娟、鄭捷、方加青、曾桃園、曾利萍、談康太、李秀、董建霞、方亞平、李文強、張梁、鄧玉前、劉麗、舒玲莉、孫敖、王善芬、楊淑芬、劉玉平、孫家寶。
因作者能力和成書時間所限,本書難免存有疏漏和不當之處,敬請各位讀者指正。