內容簡介
《計算機科學叢書:機器學習基礎教程》介紹機器學習技術及應用的主要算法,重點講述理解主流的機器學習算法所需的核心數學和統計知識。書中介紹的算法涵蓋機器學習的主要問題:分類、聚類和投影。由於本書是機器學習基礎課程的教材,所以盡量減少瞭數學難度,僅對一小部分重要算法給齣詳細的描述和推導,而對大部分算法僅給齣簡單介紹,目的在於使學生打好基礎,增強信心和興趣,鼓勵他們進一步學習該領域的高級主題或從事相關研究工作。
《計算機科學叢書:機器學習基礎教程》是機器學習導論課程教材,適閤作為計算機、自動化及相關專業高年級本科生或研究生的教材,也可供研究人員和工程技術人員參考。
作者簡介
作者:(英)羅傑斯、吉羅拉米 譯者:郭茂祖、王春宇、劉揚、劉曉燕
Simon Rogers英國格拉斯哥大學計算機科學學院講師,主講碩士生的機器學習課程。Rogers博士是機器學習領域的一位活躍研究者,研究興趣包括代謝組學數據分析和概率機器學習技術在人機交互領域的應用。
Mark Girolami英國倫敦大學學院(UCL)統計係主任和計算機科學係榮譽教授,並擔任計算統計學和機器學習研究中心主任。他還是英國統計協會研究組成員,英國工程和科學研究委員會高級研究員,英國工程技術學會會員,愛丁堡皇傢學會院士。
內頁插圖
目錄
齣版者的話
譯者序
前言
第1章 綫性建模:最小二乘法
1.1 綫性建模
1.1.1 定義模型
1.1.2 模型假設
1.1.3 定義什麼是好的模型
1.1.4 最小二乘解:一個有效的例子
1.1.5 有效的例子
1.1.6 奧運會數據的最小二乘擬閤
1.1.7 小結
1.2 預測
1.2.1 第二個奧運會數據集
1.2.2 小結
1.3 嚮量/矩陣符號
1.3.1 例子
1.3.2 數值的例子
1.3.3 預測
1.3.4 小結
1.4 綫性模型的非綫性響應
1.5 泛化與過擬閤
1.5.1 驗證數據
1.5.2 交叉驗證
1.5.3 K摺交叉驗證的計算縮放
1.6 正則化最小二乘法
1.7 練習
其他閱讀材料
第2章 綫性建模:最大似然方法
2.1 誤差作為噪聲
2.2 隨機變量和概率
2.2.1 隨機變量
2.2.2 概率和概率分布
2.2.3 概率的加法
2.2.4 條件概率
2.2.5 聯閤概率
2.2.6 邊緣化
2.2.7 貝葉斯規則介紹
2.2.8 期望值
2.3 常見的離散分布
2.3.1 伯努利分布
2.3.2 二項分布
2.3.3 多項分布
2.4 連續型隨機變量--概率密度函數
2.5 常見的連續概率密度函數
2.5.1 均勻密度函數
2.5.2 β密度函數
2.5.3 高斯密度函數
2.5.4 多元高斯
2.5.5 小結
2.6 産生式的考慮(續)
2.7 似然估計
2.7.1 數據集的似然值
2.7.2 最大似然
2.7.3 最大似然解的特點
2.7.4 最大似然法適用於復雜模型
2.8 偏差方差平衡問題
2.9 噪聲對參數估計的影響
2.9.1 參數估計的不確定性
2.9.2 與實驗數據比較
2.9.3 模型參數的變異性--奧運會數據
2.10 預測值的變異性
2.10.1 預測值的變異性--一個例子
2.10.2 估計值的期望值
2.10.3 小結
2.11 練習
其他閱讀材料
第3章 機器學習的貝葉斯方法
3.1 硬幣遊戲
3.1.1 計算正麵朝上的次數
3.1.2 貝葉斯方法
3.2 精確的後驗
3.3 三個場景
3.3.1 沒有先驗知識
3.3.2 公平的投幣
3.3.3 有偏的投幣
3.3.4 三個場景--總結
3.3.5 增加更多的數據
3.4 邊緣似然估計
3.5 超參數
3.6 圖模型
3.7 奧運會100米數據的貝葉斯處理實例
3.7.1 模型
3.7.2 似然估計
3.7.3 先驗概率
3.7.4 後驗概率
3.7.5 1階多項式
3.7.6 預測
3.8 邊緣似然估計用於多項式模型階的選擇
3.9 小結
3.10 練習
其他閱讀材料
第4章 貝葉斯推理
4.1 非共軛模型
4.2 二值響應
4.3 點估計:最大後驗估計方案
4.4 拉普拉斯近似
4.4.1 拉普拉斯近似實例:近似γ密度
4.4.2 二值響應模型的拉普拉斯近似
4.5 抽樣技術
4.5.1 玩飛鏢遊戲
4.5.2 Metropolis-Hastings算法
4.5.3 抽樣的藝術
4.6 小結
4.7 練習
其他閱讀材料
第5章 分類
5.1 一般問題
5.2 概率分類器
5.2.1 貝葉斯分類器
5.2.2 邏輯迴歸
5.3 非概率分類器
5.3.1 K近鄰算法
5.3.2 支持嚮量機和其他核方法
5.3.3 小結
5.4 評價分類器的性能
5.4.1 準確率--0/1損失
5.4.2 敏感性和特異性
5.4.3 ROC麯綫下的區域
5.4.4 混淆矩陣
5.5 判彆式和産生式分類器
5.6 小結
5.7 練習
其他閱讀材料
第6章 聚類分析
6.1 一般問題
6.2 K均值聚類
6.2.1 聚類數目的選擇
6.2.2 K均值的不足之處
6.2.3 核化K均值
6.2.4 小結
6.3 混閤模型
6.3.1 生成過程
6.3.2 混閤模型似然函數
6.3.3 EM算法
6.3.4 例子
6.3.5 EM尋找局部最優
6.3.6 組分數目的選擇
6.3.7 混閤組分的其他形式
6.3.8 用EM估計MAP
6.3.9 貝葉斯混閤模型
6.4 小結
6.5 練習
其他閱讀材料
第7章 主成分分析與隱變量模型
7.1 一般問題
7.2 主成分分析
7.2.1 選擇D
7.2.2 PCA的局限性
7.3 隱變量模型
7.3.1 隱變量模型中的混閤模型
7.3.2 小結
7.4 變分貝葉斯
7.4.1 選擇Q(θ)
7.4.2 優化邊界
7.5 PCA的概率模型
7.5.1 Qτ(τ)
7.5.2 Qxn(xn)
7.5.3 Qwn(wm)
7.5.4 期望值要求
7.5.5 算法
7.5.6 例子
7.6 缺失值
7.6.1 缺失值作為隱變量
7.6.2 預測缺失值
7.7 非實值數據
7.7.1 概率PPCA
7.7.2 議會數據可視化
7.8 小結
7.9 練習
其他閱讀材料
詞匯錶
索引
精彩書摘
1.5 泛化與過擬閤
1.4節提齣瞭1階與8階多項式哪個更好的問題。假定原來建立這些模型的目的是做預測,那麼不難理解最好的模型就是可以使預測最精確的那個,即可以泛化訓練樣本以外數據的模型(例如,到2008年的奧運會數據)。理想情況下,我們更喜歡選擇在不可見數據上性能最好的模型(即最小化損失),但是由於問題本身的原因,數據無法得到。
圖1-10錶明,可應用訓練數據上的損失選擇用於預測的模型。麯綫顯示訓練數據上8階多項式擬閤男子100米數據的損失比1階多項式更低。而8階多項式對於未來奧運會的預測非常糟糕。基於8階多項式的模型過於關注訓練數據(過擬閤),因此不能很好地泛化新數據。由於模型越來越復雜,所以也越來越逼近可觀測數據。不幸的是,當超過某點,預測的質量就會迅速退化。為瞭剋服過擬閤,能夠很好地泛化,確定最優模型的復雜度將會非常有挑戰性。這個摺中問題經常被認為是偏置一方差平衡,將在2.8節中簡單地介紹。
1.5.1 驗證數據
剋服過擬閤問題的一般方法是使用第二個數據集,即驗證集。用驗證集來驗證模型的預測性能。驗證數據可以單獨提供或者從原始訓練集中拿齣一部分。例如,在100米數據中,可以從訓練集中拿齣1980年以後的所有奧運會數據作為驗證集。為瞭進行模型選擇,可以在縮小的訓練集上訓練每一個模型,然後計算它們在驗證集上的損失。圖1-12a、b依次給齣瞭訓練和(10g)驗證損失的麯綫。訓練損失隨著多項式階(模型復雜度)的增加單調遞減。而驗證損失隨著多項式階的增加而快速增長,這錶明1階多項式有最好的泛化能力,能夠産生最可靠的預測。很容易測試這個假設。在圖113中,可以看到數據集(已標記的訓練集和驗證集)與1階、4階和8階多項式函數(MATLAB腳本:olympval.m)。1979年已經執行瞭這個任務,很明顯1階模型的確能夠給齣最好的預測。
……
前言/序言
目前機器學習日益成為計算機科學重要的實踐、研究與開發領域之一,一方麵這反映在它的學術研究規模上,另一方麵反映在新的機器學習從業人員遍布於主要的國際銀行和金融機構,以及微軟、榖歌、雅虎和亞馬遜等公司。
從某種角度來講,這種發展源於人們對世界認知方式的數量和種類的增加。一個特彆顯著的例子是,在首個基因組測序完成之前,不斷湧現齣瞭各種生物檢測新技術。不久前,檢測生物體的復雜分子狀態是難以想象的,因為這已經遠遠超齣瞭我們的認識能力。現在,機器學習方法在生物體中有用分子結構提取方麵的廣泛應用,使其成為可能。
本書改編自英國格拉斯哥大學計算機科學學院機器學習課程的講義,該課程包括20學時的授課和10學時的實驗,麵嚮高年級本科生開設並由研究生講授。如此少的教學時數不可能涵蓋機器學習所有的內容,所以該課的目的是為理解流行的機器學習算法提供核心數學知識和統計技術,並描述其中部分算法,這些算法涵蓋瞭機器學習中的分類、聚類和投影等主要問題。通過本課程的學習,學生應該具備通過考察機器學習相關文獻來尋求適閤他們所需方法的知識和能力,希望本書的讀者也能做到這一點。
鑒於選學該課學生的數學水平參差不齊,我們隻假定需要很少的數學知識,計算機科學、工程類、物理學(或其他數值處理類學科)的本科生閱讀本書應該沒有問題,沒有以上經曆的讀者也可以閱讀本書,因為穿插在文中的注解框內給齣瞭相應的數學解釋。此外,突齣強調瞭重要公式(公式加陰影),在繼續閱讀前,花些時間理解這些公式是值得的。
選學該課的學生通常會發現其中的實踐環節非常有用,實驗有助於將涉及的各種算法和概念由抽象的等式轉化為解決實際問題的工具。
最後,本書選擇的機器學習方法是我們認為學生應該掌握的,在有限的篇幅和時間內,更有必要給齣一小部分算法的詳細描述和研究進展,而不是泛泛地描述許多算法,因而多數讀者在本書中可能找不到他們最喜歡的算法!
Simon Rogers
Mark Girolami
《算法思維:解構復雜問題的構建之道》 在信息爆炸的時代,我們每天都麵臨著無數的挑戰,從日常的決策到宏觀的規劃,無一不與“問題”緊密相連。而解決問題的能力,尤其是以一種係統、高效、可復用的方式來解決問題的能力,已成為個人成長與事業發展不可或缺的核心競爭力。本書,《算法思維:解構復雜問題的構建之道》,正是為你量身打造的一場關於“如何思考”的深度探索。它並非一本技術手冊,不涉及具體的編程語言或工具,而是聚焦於算法思維這一普適性的底層邏輯,教授你一套係統化的方法論,讓你能夠清晰地分析問題,巧妙地設計解決方案,並最終有效地實現目標。 為什麼需要算法思維? 我們常常驚嘆於某些人的解決問題的能力,他們似乎總能找到最簡潔、最有效的路徑。這並非天賦異稟,而是他們掌握瞭一種名為“算法思維”的強大工具。算法思維,顧名思義,是將現實世界的問題抽象化,理解其本質,然後運用一係列清晰、明確、有序的步驟(即算法)來解決。它是一種結構化的思考方式,幫助我們: 看清問題的本質: 麵對紛繁復雜的錶象,算法思維引導我們剝離無關緊要的乾擾,直擊問題的核心。 化繁為簡: 將一個龐大、棘手的問題分解成一係列更小、更易於管理的部分,逐個擊破。 設計高效方案: 探索多種可能的解決方案,並從中挑選齣最優化、最省時省力的一種。 預見並規避風險: 在設計解決方案時,提前考慮可能齣現的瓶頸和潛在問題,並製定應對策略。 清晰溝通與協作: 擁有清晰的思維邏輯,能夠更有效地與他人溝通你的想法和解決方案。 本書將帶你走進算法思維的世界,領略其非凡的力量。 核心內容概覽: 本書將循序漸進地引導你構建和強化算法思維,從基礎概念到高級應用,內容涵蓋以下幾個核心模塊: 第一部分:撥開迷霧——理解問題與抽象化 問題的定義與分類: 我們將首先探討什麼是“問題”,以及如何將不同類型的問題進行有效的分類。瞭解問題的本質是解決它的第一步。我們將區分“優化問題”、“決策問題”、“搜索問題”等,並分析它們的共性與差異。 抽象的力量: 現實世界是無比復雜的,直接處理這些復雜性往往難以入手。本書將強調抽象的重要性,教會你如何忽略細節,抓住事物的關鍵特徵,構建一個簡化的模型來代錶真實世界的問題。我們會通過大量的例子,例如從地圖導航到行程規劃,展示抽象如何將復雜問題變得可控。 數據結構的直覺: 問題往往涉及數據。理解不同數據結構(如列錶、集閤、樹、圖等)的特性,以及它們如何影響解決方案的設計,是算法思維的重要組成部分。我們不會深入到技術實現,而是側重於建立對這些結構在邏輯層麵的直觀理解,知道何時何地使用何種結構能夠更高效地組織和處理信息。 從描述到模型: 如何將一個模糊的自然語言描述的問題,轉化為一個清晰、明確的數學或邏輯模型?本書將提供實用的技巧和框架,幫助你進行這種轉化,確保模型的準確性和完整性。 第二部分:構建藍圖——設計解決之道 分解與組閤: “分而治之”是解決復雜問題的經典策略。本章將深入探討如何有效地將一個大問題分解成若乾個小問題,並學習如何將這些小問題的解決方案重新組閤起來,形成一個完整的解決之道。我們將介紹遞歸和迭代的思想,展示它們在分解問題中的強大作用。 策略與模式: 算法設計並非從零開始的創造,而是建立在前人智慧的基石之上。本書將介紹一係列經典的算法設計策略,例如: 貪心算法 (Greedy Algorithms): 在每一步都選擇局部最優解,期望最終達到全局最優。我們將探討貪心算法的適用場景、局限性以及如何判斷一個問題是否適閤采用貪心策略。 分治算法 (Divide and Conquer Algorithms): 將問題分解為規模更小的子問題,分彆解決後再閤並。我們將通過經典的例子,如歸並排序和快速排序(僅從概念層麵理解其分治思想),來闡釋其威力。 動態規劃 (Dynamic Programming): 通過將問題分解為相互重疊的子問題,並存儲子問題的解來避免重復計算。我們將用通俗易懂的語言解釋其核心思想,以及如何識彆適閤動態規劃的問題。 迴溯法 (Backtracking): 一種通過探索所有可能的解,並在發現無效解時“迴溯”的搜索技術。我們將探討其在組閤搜索問題中的應用。 尋找模式與規律: 很多看似獨立的問題,在更深的層次上可能共享著相似的解決模式。本書將幫助你培養識彆這些模式的能力,從而將已有的解決方案遷移到新的問題上。 第三部分:精益求精——優化與權衡 效率的度量: 解決問題的方式多種多樣,但效率卻往往是關鍵的衡量標準。本書將介紹理解算法效率的基本概念,包括時間復雜度和空間復雜度,並教你如何從定性的角度評估不同解決方案的效率,而無需深入到復雜的數學推導。 搜索策略: 在龐大的可能性空間中尋找最優解,需要高效的搜索策略。我們將探討不同的搜索方法,如廣度優先搜索 (BFS) 和深度優先搜索 (DFS) 的基本思想,以及它們在圖和樹結構上的應用。 權衡與取捨: 在現實世界中,很少有完美的解決方案。時間、空間、資源等都是有限的。本書將引導你理解如何在不同的約束條件下進行權衡和取捨,找到最適閤特定場景的解決方案。例如,在追求速度的同時,是否可以犧牲一些內存? 啓發式搜索與近似算法: 對於一些極其復雜的問題,找到精確的最優解可能非常睏難或耗時。我們將介紹啓發式搜索的概念,以及如何設計能夠快速找到“足夠好”的近似解的算法。 第四部分:付諸實踐——算法思維的應用 從理論到實踐的橋梁: 本章將帶領你迴顧前麵所學,並通過一係列精心設計的案例,展示如何將算法思維應用到各種實際場景中。這些案例可能涵蓋: 個人時間管理與規劃: 如何用算法思維安排日程,提高效率。 項目管理與任務分解: 如何將復雜項目分解為可執行的任務。 日常生活中的決策: 如何用結構化的方法做齣更優的決策。 溝通與錶達的清晰化: 如何用邏輯化的思維來組織語言。 培養批判性思維: 算法思維不僅是關於“怎麼做”,更是關於“為什麼這樣做”。本書將鼓勵你質疑假設,評估解決方案的閤理性,培養獨立思考和批判性分析的能力。 持續學習與成長: 算法思維不是一蹴而就的技能,而是一種需要持續實踐和打磨的思維方式。本書將為你提供持續學習的思路和方法,讓你能夠在未來的學習和工作中不斷精進。 本書的獨特之處: 普適性與通用性: 本書的核心在於“思維方式”,而非具體的工具或技術。這意味著無論你的背景如何,無論你從事何種職業,都能從中獲益。算法思維是解決任何復雜問題的通用語言。 拒絕枯燥的理論: 我們將避免使用晦澀難懂的專業術語,而是通過豐富的案例、生動的比喻和形象的圖示,讓算法思維的概念深入人心。 強調“悟”與“用”: 本書的目標是讓你真正“理解”算法思維,並能夠將其“運用”到實際生活中。我們將提供大量的練習和思考題,引導你主動去實踐。 非技術導嚮: 你無需具備任何編程基礎即可閱讀和理解本書。重點在於邏輯、結構和解決問題的策略。 誰應該閱讀本書? 學生: 無論你是否學習計算機科學,培養良好的問題解決能力對你的學業和未來發展都至關重要。 職場人士: 麵對日益復雜的項目和挑戰,掌握算法思維將助你脫穎而齣,成為團隊中的佼佼者。 産品經理、項目經理: 理解如何分解問題、設計流程、優化資源,是你的核心競爭力。 創業者: 任何創業都需要清晰的戰略規劃和高效的執行力,算法思維是實現這一切的基石。 任何渴望提升解決問題能力的人: 如果你覺得自己在麵對復雜情況時感到無從下手,或者希望找到更有效率的解決方案,本書將是你的理想選擇。 《算法思維:解構復雜問題的構建之道》 邀請你踏上一段思維的旅程。在這裏,你將學會如何像一位建築師一樣,以清晰的邏輯和精妙的構思,去拆解、理解、構建解決問題的藍圖。這不僅是一本書,更是一把解鎖你潛在解決問題能力的鑰匙。讓我們一起,用算法的智慧,擁抱更美好的未來。