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