本文是機器學習筆記系列
參考鏈接:https://vas3k.com/blog/machine_learning/
機器學習這個主題已經很普遍了,每個人都在談論它,但很少有人能夠透徹地瞭解它。當前網絡上的一些機器學習文章晦澀難懂,理論性太強,或者通篇雲裏霧裏地介紹人工智能、數據科學的魔力以及未來的工作等。
所以呢,本文作者 vas3k 通過簡潔的語言和清晰明瞭的圖示內容,使得讀者能夠更容易地理解機器學習。拋卻了晦澀難懂的理論介紹,文中側重於機器學習中的實際問題、行之有效的解決方案和通俗易懂的理論。無論你是程序員還是管理者,本文都適合你。
AI 的範疇
AI 到底它包含了哪些領域,它與各種技術名詞之間的關係又是什麼樣的?其實我們會有多種判斷方式,AI 範疇的劃分也不會是唯一的,例如最「常見」的認識可能如下圖所示。
你可能會認爲:
-
人工智能是個完整的知識領域,類似於生物學或者是化學;
-
機器學習是人工智能中非常重要的一部分,但並不是唯一一個部分;
-
神經網絡是機器學習的一種,現在非常受歡迎,但依然有其他優秀的算法;
但是,難道深度學習都是神經網絡嗎?明顯並不一定是,例如周志華老師的深度森林,它就是第一個基於不可微構件的深度學習模型。因此,更科學的劃分可能是下圖花書中的這種:
機器學習下面應該是表示學習,即概括了所有使用機器學習挖掘表示本身的方法。相比傳統 ML 需要手動設計數據特徵,這類方法能自己學習好用的數據特徵。整個深度學習也是一種表示學習,通過一層層模型從簡單表示構建複雜表示。
機器學習路線圖
如果你比較懶,那這有一張完整的技術路線圖供你參考。
按照現階段主流分類來看,機器學習主要分爲四類:
-
經典機器學習;
-
強化學習;
-
神經網絡和深度學習;
-
集成方法;
經典機器學習
經典機器學習經常被劃分爲兩類:監督型學習和非監督型學習。
監督學習
在分類中,模型總是需要一個導師,即對應特徵的標註,這樣的話機器就可以基於這些標註學習進行進一步分類。萬事皆可分類,基於興趣去分類用戶、基於語言和主題分類文章、基於類型而分類音樂以及基於關鍵詞分類電子郵件。
而在垃圾郵件過濾中,樸素貝葉斯算法得到了極其廣泛的應用。事實上,樸素貝葉斯曾被認爲是最優雅、最實用的算法。
支持向量機 (SVM) 是最流行的經典分類方法。也是被用來對現有的一切事物進行分類: 照片中的植物外觀,文件等等等。支持向量機背後的思路也很簡單,以下圖爲例,它試圖在數據點之間畫出兩條邊距最大的線。
監督學習——迴歸
迴歸基本上是分類,但預測的標的是一個數字而不是類別。例如按里程計算的汽車價格,按時間計算的交通量,按公司增長計算出市場需求量等。當所預測的事物是依賴於時間時,迴歸是非常合適的選擇。
無監督學習
無監督學習是 90 年代才被髮明出來的,可以這麼去描述它「根據未知特徵對目標進行分割,而由機器去選擇最佳方式。」
無監督學習——聚類
聚類是一種沒有預先定義類的分類。比如當你不記得你所有的顏色時,把襪子按顏色分類一樣。聚類算法試圖通過某些特徵從而找到相似的對象並將它們合併到一個聚類中。
無監督學習——降維
人們在使用抽象的東西總是比使用零碎的特徵更具有方便性。舉個例子,將所有長着三角形的耳朵、長鼻子和大尾巴的狗合併成一個很好的抽象概念——「牧羊犬」。
再比如有關科技的文章中擁有更多科技術語,而政治新聞裏最多的是政客的名字。假如我們要將這些具有特性的單詞以及文章組成一個新的特徵,以保持其潛在關聯度,SVD 便是個不錯的選擇。
無監督學習——關聯規則學習
包括分析購物車,自動化營銷策略等。舉個例子,顧客拿着六瓶啤酒走向收銀臺,在其路上是否該放些花生?如果放了,這些顧客多久會來買一次?如果啤酒花生是絕配,那還有其他什麼事物也可進行這樣的搭配呢?
現實生活中,每個大型零售商都有它們自己的專用解決方案,而當中技術水平最高的要數那些「推薦系統」。
集成方法
「團結就是力量」,這句老話很好地表達了機器學習領域中「集成方法」的基本思想。在集成方法中,我們通常會訓練多個「弱模型」,以期待能組合成爲一個強大的方法。像各種經典 ML 競賽中,差不多效果最好的那一撥,如梯度提升樹、隨機森林等都屬於集成方法。
一般而言集成方法的「組合方式」主要可以分爲三種:Stacking、Bagging、Boosting。
如下圖所示,Stacking 通常考慮的是異質弱學習器,弱學習器可以先並行地訓練,而後通過一個「元模型」將它們組合起來,根據不同弱模型的預測結果輸出一個最終的預測結果。
Bagging 方法通常考慮的是同質弱學習器,相互獨立地並行學習這些弱學習器,並按照某種確定性的平均過程將它們組合起來。假設所有弱學習器都是決策樹模型,那麼這樣做出來的 Bagging 就是隨機森林。
Boosting 方法通常考慮的也是同質弱學習器,只不過它的思想是「分而治之」。它以一種高度自適應的方法順序地學習這些弱學習器,且後續弱模型重點學習上一個弱模型誤分類的數據。
這就相當於不同的弱分類器,專注於部分數據,達到「分而治之」的效果。如下所示,Boosting 就是以串行組合不同模型的範式。大名鼎鼎的 XGBoost、LightGBM 這些庫或算法,都採用的 Boosting 方法。
現在,從樸素貝葉斯到 Boosting 方法,經典機器學習的主要分支已經具備了。如果讀者希望有一個更系統與詳細地瞭解,李航老師的《統計學習方法》與周志華老師的《機器學習》是最好的兩本中文教程。
當然,在這篇博客中,作者還介紹了強化學習與深度學習等等,內容非常適合對人工智能感興趣且非相關專業的讀者,加上形象的配圖,算得上是篇非常不錯的科普文。如果你對這種簡單易懂的敘述方式感興趣的話,可以去博客上詳細閱讀。