1. 程式人生 > >【乾貨】機器學習常用 35 大演算法盤點(附思維導圖)

【乾貨】機器學習常用 35 大演算法盤點(附思維導圖)

本文將帶你遍歷機器學習領域最受歡迎的演算法。系統地瞭解這些演算法有助於進一步掌握機器學習。當然,本文收錄的演算法並不完全,分類的方式也不唯一。不過,看完這篇文章後,下次再有演算法提起,你想不起它長處和用處的可能性就很低了。本文還附有兩張演算法思維導圖供學習使用。

在本文中,我將提供兩種分類機器學習演算法的方法。一是根據學習方式分類,二是根據類似的形式或功能分類。這兩種方法都很有用,不過,本文將側重後者,也就是根據類似的形式或功能分類。在閱讀完本文以後,你將會對監督學習中最受歡迎的機器學習演算法,以及它們彼此之間的關係有一個比較深刻的瞭解。

事先說明一點,我沒有涵蓋機器學習特殊子領域的演算法,比如計算智慧(進化演算法等)、計算機視覺(CV)、自然語言處理(NLP)、推薦系統、強化學習和圖模型。

下面是一張演算法思維導圖,點選放大檢視。

machine-learning-algorithms-mindmap-sample

從學習方式分類

演算法對一個問題建模的方式很多,可以基於經歷、環境,或者任何我們稱之為輸入資料的東西。機器學習和人工智慧的教科書通常會讓你首先考慮演算法能夠採用什麼方式學習。實際上,演算法能夠採取的學習方式或者說學習模型只有幾種,下面我會一一說明。對機器學習演算法進行分類是很有必要的事情,因為這迫使你思考輸入資料的作用以及模型準備過程,從而選擇一個最適用於你手頭問題的演算法。

監督學習

輸入資料被稱為訓練資料,並且每一個都帶有標籤,比如“廣告/非廣告”,或者當時的股票價格。通過訓練過程建模,模型需要做出預測,如果預測出錯會被修正。直到模型輸出準確的結果,訓練過程會一直持續。常用於解決的問題有分類和迴歸。常用的演算法包括邏輯迴歸和BP神經網路。

無監督學習

輸入資料沒有標籤,輸出沒有標準答案,就是一系列的樣本。無監督學習通過推斷輸入資料中的結構建模。這可能是提取一般規律,可以是通過數學處理系統地減少冗餘,或者根據相似性組織資料。常用於解決的問題有聚類、降維和關聯規則的學習。常用的演算法包括 Apriori 演算法和 K 均值演算法。

半監督學習

半監督學習的輸入資料包含帶標籤和不帶標籤的樣本。半監督學習的情形是,有一個預期中的預測,但模型必須通過學習結構整理資料從而做出預測。常用於解決的問題是分類和迴歸。常用的演算法是所有對無標籤資料建模進行預測的演算法(即無監督學習)的延伸。

從功能角度分類

研究人員常常通過功能相似對演算法進行分類。例如,基於樹的方法和基於神經網路的方法。這種方法也是我個人認為最有用的分類方法。不過,這種方法也並非完美,比如學習向量量化(LVQ),就既可以被歸為神經網路方法,也可以被歸為基於例項的方法。此外,像迴歸和聚類,就既可以形容演算法,也可以指代問題。

為了避免重複,本文將只在最適合的地方列舉一次。下面的演算法和分類都不齊備,但有助於你瞭解整個領域大概。(說明:用於分類和迴歸的演算法帶有很大的個人主觀傾向;歡迎補充我遺漏的條目。)

迴歸演算法

迴歸分析是研究自變數和因變數之間關係的一種預測模型技術。這些技術應用於預測時間序列模型和找到變數之間關係。迴歸分析也是一種常用的統計學方法,經由統計機器學習融入機器學習領域。“迴歸”既可以指演算法也可以指問題,因此在指代的時候容易混淆。實際上,迴歸就是一個過程而已。常用的迴歸演算法包括:

  • 普通最小二乘迴歸(OLSR)
  • 線性迴歸
  • 邏輯迴歸
  • 逐步迴歸
  • 多元自適應迴歸樣條法(MARS)
  • 區域性估計平滑散點圖(LOESS)

基於例項的學習演算法

基於例項的學習通過訓練資料的樣本或事例建模,這些樣本或事例也被視為建模所必需的。這類模型通常會建一個樣本資料庫,比較新的資料和資料庫裡的資料,通過這種方式找到最佳匹配並做出預測。換句話說,這類演算法在做預測時,一般會使用相似度準則,比對待預測的樣本和原始樣本之間的相似度,再做出預測。因此,基於例項的方法也被稱之為贏家通吃的方法(winner-take-all)和基於記憶的學習(memory-based learning)。常用的基於例項的學習演算法包括:

  • k-鄰近演算法(kNN)
  • 學習向量量化演算法(LVQ)
  • 自組織對映演算法(SOM)
  • 區域性加權學習演算法(LWL)

正則化演算法

正則化演算法背後的思路是,引數值比較小的時候模型更加簡單。對模型的複雜度會有一個懲罰值,偏好簡單的、更容易泛化的模型,正則化演算法可以說是這種方法的延伸。我把正則化演算法單獨列出來,原因就是我聽說它們十分受歡迎、功能強大,而且能夠對其他方法進行簡單的修飾。常用的正則化演算法包括:

  • 嶺迴歸
  • LASSO 演算法
  • Elastic Net
  • 最小角迴歸演算法(LARS)

決策樹演算法

決策樹演算法的目標是根據資料屬性的實際值,建立一個預測樣本目標值的模型。訓練時,樹狀的結構會不斷分叉,直到作出最終的決策。也就是說,預測階段模型會選擇路徑進行決策。決策樹常被用於分類和迴歸。決策樹一般速度快,結果準,因此也屬於最受歡迎的機器學習演算法之一。常用的決策樹演算法包括:

  • 分類和迴歸樹(CART)
  • ID3 演算法
  • C4.5 演算法和 C5.0 演算法(它們是一種演算法的兩種不同版本)
  • CHAID 演算法
  • 單層決策樹
  • M5 演算法
  • 條件決策樹

貝葉斯演算法

貝葉斯方法指的是那些明確使用貝葉斯定理解決分類或迴歸等問題的演算法。常用的貝葉斯演算法包括:

  • 樸素貝葉斯演算法
  • 高斯樸素貝葉斯演算法
  • 多項式樸素貝葉斯演算法
  • AODE 演算法
  • 貝葉斯信念網路(BBN)
  • 貝葉斯網路(BN)

聚類演算法

聚類跟迴歸一樣,既可以用來形容一類問題,也可以指代一組方法。聚類方法通常涉及質心(centroid-based)或層次(hierarchal)等建模方式,所有的方法都與資料固有的結構有關,目標是將資料按照它們之間共性最大的組織方式分成幾組。換句話說,演算法將輸入樣本聚成圍繞一些中心的資料團,通過這樣的方式發現數據分佈結構中的規律。常用的聚類演算法包括:

  • K-均值
  • K-中位數
  • EM 演算法
  • 分層聚類演算法

關聯規則學習

關聯規則學習在資料不同變數之間觀察到了一些關聯,演算法要做的就是找出最能描述這些關係的規則,也就是獲取一個事件和其他事件之間依賴或關聯的知識。常用的關聯規則演算法有:

  • Apriori 演算法
  • Eclat 演算法

人工神經網路

人工神經網路是一類受生物神經網路的結構及/或功能啟發而來的模型。它們是一類常用於解決迴歸和分類等問題的模式匹配,不過,實際上是一個含有成百上千種演算法及各種問題變化的子集。注意這裡我將深度學習從人工神經網路演算法中分離了出去,因為深度學習實在太受歡迎。人工神經網路指的是更加經典的感知方法。常用的人工神經網路包括:

  • 感知機
  • 反向傳播演算法(BP 神經網路)
  • Hopfield網路
  • 徑向基函式網路(RBFN)

深度學習演算法

深度學習演算法是人工神經網路的升級版,充分利用廉價的計算力。近年來,深度學習得到廣泛應用,尤其是語音識別、影象識別。深度學習演算法會搭建規模更大、結構更復雜的神經網路,正如上文所說,很多深度學習方法都涉及半監督學習問題,這種問題的資料一般量極大,而且只有很少部分帶有標籤。常用的深度學習演算法包括:

  • 深度玻爾茲曼機(DBM)
  • 深度信念網路(DBN)
  • 卷積神經網路(CNN)
  • 棧式自編碼演算法(Stacked Auto-Encoder)

降維演算法

降維演算法和聚類有些類似,也是試圖發現數據的固有結構。但是,降維演算法採用的是無監督學習的方式,用更少(更低維)的資訊進行總結和描述。降維演算法可以監督學習的方式,被用於多維資料的視覺化或對資料進行簡化處理。很多降維演算法經過修改後,也被用於分類和迴歸的問題。常用的降維演算法包括:

  • 主成分分析法(PCA)
  • 主成分迴歸(PCR)
  • 偏最小二乘迴歸(PLSR)
  • 薩蒙對映
  • 多維尺度分析法(MDS)
  • 投影尋蹤法(PP)
  • 線性判別分析法(LDA)
  • 混合判別分析法(MDA)
  • 二次判別分析法(QDA)
  • 靈活判別分析法(Flexible Discriminant Analysis,FDA)

模型融合演算法

模型融合演算法將多個簡單的、分別單獨訓練的弱機器學習演算法結合在一起,這些弱機器學習演算法的預測以某種方式整合成一個預測。通常這個整合後的預測會比單獨的預測要好一些。構建模型融合演算法的主要精力一般用於決定將哪些弱機器學習演算法以什麼樣的方式結合在一起。模型融合演算法是一類非常強大的演算法,因此也很受歡迎。常用的模型融合增強方法包括:

  • Boosting
  • Bagging
  • AdaBoost
  • 堆疊泛化(混合)
  • GBM 演算法
  • GBRT 演算法
  • 隨機森林

其他

還有很多演算法都沒有涉及。例如,支援向量機(SVM)應該被歸為哪一組?還是說它自己單獨成一組?我還沒有提到的機器學習演算法包括:

  • 特徵選擇演算法
  • Algorithm accuracy evaluation
  • Performance measures

再附一張思維導圖
alg02

編譯來源:http://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/