當前位置:
首頁 > 新聞 > 初學者如何選擇合適的機器學習演算法(附速查表)

初學者如何選擇合適的機器學習演算法(附速查表)

選自sas

機器之心編譯

參與:黃小天、蔣思源、吳攀

本文主要的目標讀者是機器學習愛好者或數據科學的初學者,以及對學習和應用機器學習演算法解決實際問題抱有濃厚興趣的讀者。面對大量的機器學習演算法,初學者通常會問自己一個典型的問題:「我該使用哪一種演算法?」有很多因素會影響這一問題的答案,比如:

  • 數據的大小、質量及性質

  • 可用計算時間

  • 任務的急迫性

  • 數據的使用用途

在沒有測試過不同演算法之前,即使是經驗豐富的數據科學家和機器學習演算法開發者也都不能分辨出哪種演算法性能最好。我們並不提倡一步到位,但是我們確實希望根據一些明確的因素為演算法的選擇提供一些參考意見。

機器學習演算法速查表

初學者如何選擇合適的機器學習演算法(附速查表)

機器學習演算法速查表可幫助你從大量演算法之中篩選出解決你的特定問題的演算法,同時本文也將介紹如何使用該速查表。

由於該速查表專門針對數據科學和機器學習的初學者,所以在探討這些演算法之時,我們做了一些簡化的假設。本文中所有推薦的演算法均來自於程序編譯反饋以及若干個數據科學家、機器學習專家和開發者的建議。對於沒有達成一致意見的幾個問題,我們會著重求同存異。

速查表的使用方法

將閱讀速查表上的路徑和演算法標籤讀為「如果符合<路徑標籤>,那麼使用<演算法>。」例如:

  • 如果你想要降維,那麼使用主成分分析。

  • 如果你需要得到快速的數值型預測,那麼使用決策樹或 logistic 回歸。

  • 如果你需要層級結果,那麼使用層級聚類。

有時會應用不止一個分支,而有時又找不到一個完美的匹配。重要的是這些路徑是基於經驗法則的推薦,因此其中一些並不精確。很多數據科學家說找到最佳演算法的唯一確定方法就是嘗試所有演算法。

機器學習演算法的分類

這一章節將對最流行的機器學習分類做一個概覽,如果你對這些分類很熟悉,可直接跳至下文「什麼時候使用具體演算法」這一節。

監督學習

監督學習演算法基於一組樣本對作出預測。例如,以往銷售業績可以用來預測未來的價格走勢。藉助監督學習,我們會有一組由標註訓練數據組成的輸入變數和一組希望預測的輸出變數。我們可以使用演算法分析訓練數據來學習一個將輸入映射到輸出的函數。演算法推斷的函數可通過概括訓練數據預測未知情景中的結果進而預測未知的新實例。

  • 分類:當數據被用於預測類別時,監督學習也可處理這類分類任務。給一張圖片貼上貓或狗的標籤就是這種情況。當分類標籤只有兩個時,這就是二元分類;超過兩個則是多元分類。

  • 回歸:當預測為連續數值型時,這就是一個回歸問題。

  • 預測:這是一個基於過去和現在的數據預測未來的過程,其最大應用是趨勢分析。一個典型實例是根據今年和前年的銷售業績以預測下一年的銷售業績。

半監督學習

監督學習的主要挑戰是標註數據價格昂貴且非常耗時。如果標籤有限,你可以使用非標註數據來提高監督學習。由於在這一情況中機器並非完全有監督,所以稱之為半監督。通過半監督學習,你可以使用只包含少量標註數據的非標註實例提升學習精確度。

無監督學習

在無監督學習之中,機器完全採用非標註數據,其被要求發現隱藏在數據之下的內在模式,比如聚類結構、低維流形或者稀疏樹和圖。

  • 聚類:把一組數據實例歸為一類,從而一個類(一個集群)之中的實例與其他類之中的實例更相似(根據一些指標),其經常被用於把整個數據集分割為若干個類。這種分析可在每一分類之中進行,從而幫助用戶需要內在模式。

  • 降維:減少考慮的變數數量。在很多應用中,原始數據有非常高的特徵維度,並且一些特徵是多餘的且與任務不相關。降維將有助於發現真實、潛在的關係。

強化學習

基於來自環境的反饋,強化學習分析和優化智能體的行為。機器嘗試不同的策略,從而發現哪種行為能產生最大的回報,因此智能體不是被告知應該採取哪種行為。試錯和延遲的 reward 是將強化學習與其他技術區分的特點。

選擇演算法的注意事項

當選擇一個演算法的時候,你要時刻牢記如下方面:精確性、訓練時間和易用性。很多用戶將精確性置於首位,然而新手則傾向於選擇他們最了解的演算法。

當你有一個數據集後,第一件需要考慮的事情就是如何獲得結果,無論這些結果可能會多麼奇怪。新手傾向於選擇易於實現且能快速獲得結果的演算法。這種思路僅在整個訓練的第一步過程中適用。一旦你獲得了一些結果並且開始逐漸熟悉數據,你或許應該花更多時間,使用更加複雜的演算法來強化你對數據的理解,這樣方可改進結果。

不過,即便到了這一步,達到最高精度的標準演算法也可能不是最合適的演算法,這是因為一個演算法通常需要用戶細緻的調參以及大範圍的訓練才能獲得其最佳性能。

選擇具體演算法的場景

對具體演算法的深入研究可以幫助你理解它們的能力以及使用的方式。下面更多細節可為你選擇具體演算法提供進一步幫助,你可以配合前面速查表一起閱讀。

線性回歸和 Logistic 回歸

初學者如何選擇合適的機器學習演算法(附速查表)

線性回歸(linear regression)是一種對連續型因變數 y 與單個或多個特徵 X 之間的關係進行建模的方法。y 和 X 之間的關係可被線性建模成 如下形式:當存在訓練樣本

初學者如何選擇合適的機器學習演算法(附速查表)

時,

初學者如何選擇合適的機器學習演算法(附速查表)

,參數向量β可從訓練樣本中學到。

如果因變數不連續且為類別,那麼線性回歸可以轉為使用一個 Sigmoid 函數的 logistic 回歸。logistic 回歸是一種簡便,快速而且強大的分類演算法。這裡討論二值情況,即因變數 y 只有兩個值 y∈(?1,1)(這可以很容易被擴展為多類分類問題)。

在 logistic 回歸中,我們使用不同的假設類別來嘗試預測一個給定樣例是屬於「1」類還是「-1」類的概率。具體而言,我們將嘗試學習如下形式的一個函數:

初學者如何選擇合適的機器學習演算法(附速查表)

以及

初學者如何選擇合適的機器學習演算法(附速查表)

,其中

初學者如何選擇合適的機器學習演算法(附速查表)

是一個 sigmoid 函數。當存在訓練樣本 {xi,yi} 時,參數向量β能在給定數據集下,最大化 β 對數似然值來學習。

初學者如何選擇合適的機器學習演算法(附速查表)

線性 SVM 和核 SVM

核(kernel)技巧可被用於將非線性可分函數映射成高維的線性可分函數。支持向量機(SVM)訓練演算法可以找到由超平面的法向量 w 和偏置項 b 表示的分類器。這個超平面(邊界)可以按照最大間隔的方式來分開不同的類別。這個問題可以被轉換一個條件優化問題:

初學者如何選擇合適的機器學習演算法(附速查表)

初學者如何選擇合適的機器學習演算法(附速查表)

Kernel 技巧被用於將非線性可分函數映射成高維的線性可分函數

當類別不是線性可分的時候,核技巧可被用於將非線性可分空間映射到高維的線性可分空間。

當因變數不是數值型時,logistic 回歸和 SVM 應該被用作分類的首要嘗試。這些模型可以輕鬆實現,它們的參數易於調節,而且其性能也相當好。所以這些模型非常適合初學者。

樹和集成樹

初學者如何選擇合適的機器學習演算法(附速查表)

用於預測模型的決策樹

決策樹、隨機森林和梯度提升(gradient boosting)全都是基於決策樹的演算法。決策樹有很多變體,但它們所做的事情都一樣——將特徵空間細分為基本具有相同標籤的區域。決策樹易於理解和實現。但是,它們往往會過擬合數據,並且在樹上面走得非常深。隨機森林和梯度提升是兩種流行的使用樹演算法來實現良好準確度的集成方法,該兩種集成方法同時還能克服過擬合的問題。

神經網路和深度學習

初學者如何選擇合適的機器學習演算法(附速查表)

一個卷積神經網路架構

神經網路憑藉其並行和分布式處理的能力而在 1980 年代中期興起。但該領域的研究受到了反向傳播訓練演算法的低效性的阻礙,而反向傳播演算法在神經網路參數的優化上得到了廣泛的應用。支持向量機(SVM)和其它更簡單的模型(可以通過解決凸優化問題而輕鬆訓練)逐漸在機器學習領域替代的神經網路。

在最近幾年,無監督預訓練和層次方式的貪婪訓練等新的和改進過的訓練技術導致了人們對神經網路的興趣的復興。逐漸增強的計算能力(比如 GPU 和大規模並行處理(MPP))也促進了神經網路的復興。神經網路研究的復興已經為我們帶來了數千層的模型。

初學者如何選擇合適的機器學習演算法(附速查表)

一種神經網路

換句話說,淺層神經網路已經發展成了深度學習神經網路。深度神經網路已經在監督學習領域取得了巨大的成功。當被用於語音識別和圖像識別,深度學習的水平已經達到甚至超過了人類水平。當被應用於無監督學習任務(比如特徵提取)時,深度學習也可以從原始圖像和語音中提取出特徵,且僅需要非常少的人類干預。

神經網路由 3 個部分組成:輸入層、隱藏層和輸出層。當輸出層是一個分類變數時,那麼該神經網路可以解決分類問題。當輸出層是一個連續變數時,那麼該網路可被用於執行回歸。當輸出層和輸入層一樣時,該網路可被用於提取內在的特徵。隱藏層的數量定義了模型複雜度和建模能力。

k-均值/k-模式、高斯混合模型(GMM)聚類

初學者如何選擇合適的機器學習演算法(附速查表)

k-均值聚類

初學者如何選擇合適的機器學習演算法(附速查表)

高斯混合模型

k-均值/k-模式,GMM 聚類的目標是將 n 個觀察分區成 k 個集群。k-均值聚類定義為硬分配標準:其樣本會被而且僅可被分配給一個集群。然而,GMM 可以為每個樣本定義一個軟分配(soft assignment)。每個樣本都有一個與每個集群相關的概率。當給定了集群的數量 k 時,這兩個演算法都很簡單快速。

DBSCAN

初學者如何選擇合適的機器學習演算法(附速查表)

DBSCAN 示意圖

當聚類的數量 k 給定時,可以通過密度擴散(density diffusion)來連接樣本,從而使用 DBSCAN(基於密度的空間聚類(density-based spatial clustering))。

層次聚類

初學者如何選擇合適的機器學習演算法(附速查表)

層次分區可以使用樹結構(樹形圖)來進行可視化。其不需要集群的數量作為輸入,且其分區可以使用不同的 K 而在不同的粒度水平下查看(即可以細化/粗化集群)。

PCA、SVD 和 LDA

我們通常並不想直接給機器學習演算法送入大量特徵,因為一些特徵可能是無關的或者「固有的(intrinsic)」的維度可能少於特徵的數量。主成分分析(PCA)、奇異值分解(Singular Value Decomposition)和隱狄利克雷分布(LDA)都可以被用於執行降維。

PCA 是一種無監督聚類方法,其可以將原有的數據空間映射到一個更低維的空間,同時還能保留儘可能多的信息。PCA 基本上是在尋找一個保留了最大數據方差的子空間,且該子空間由數據的協方差矩陣的主要特徵向量所定義。

SVD 和 PCA 有某種程度的聯繫——中心數據矩陣的 SVD(特徵 vs. 樣本)能提供定義由 PCA 所找到的同樣子空間的主左奇異向量(dominant left singular vectors)。但是,SVD 是一種更加通用的技術,因為其也能做一些 PCA 可能做不到的事情。比如,一個用戶 vs. 電影矩陣的 SVD 可以提取用戶資料和電影資料,然後將其用在推薦系統中。此外,SVD 也被廣泛用作主題建模工具,在自然語言處理領域被稱為潛在語義分析。

自然語言處理領域的一個相關技術是隱狄利克雷分布(LDA)。LDA 是概率主題模型,其可以將文檔分解為主題,分解方式就像高斯混合模型(GMM)將連續數據分解成高斯密度(Gaussian densities)。不同於 GMM,LDA 建模的是離散數據(文檔中的詞),並且會限制其主題以按狄利克雷分布而先驗地分布。

結論

這是一個易於掌握的工作流程。當你在嘗試一個新問題時,其中的關鍵信息是:

  • 定義問題。你想要解決什麼問題?

  • 從簡單開始。熟悉你的數據和基準結果。

  • 然後嘗試更加複雜的東西。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

GMIS 2017 大會吳思演講:視覺信息處理的動態法則
GMIS2017Schmidhuber演講:人工智慧改變一切
GMIS 2017大會鄧力演講:無監督學習的最新進展
GMIS 2017 馬維英演講:信息流的未來與人工智慧的機會
GMIS 2017 YinyinLiu:演變的AI與模型俱進

TAG:機器之心 |

您可能感興趣

機器學習演算法集錦
機器學習演算法之決策樹(一)
圖解機器學習的常見演算法
機器學習演算法總覽
機器學習學習者必備的19張AI速查表!
機器學習之線性回歸演算法簡介
學習如何學習的演算法:簡述元學習研究方向現狀
如何入門學習演算法?
機器學習演算法相關的數據結構
學習率及其如何改善深度學習演算法
綜述論文:機器學習中的模型評價、模型選擇與演算法選擇
機器學習背景下的哈希演算法
如何學習書法
解析:學習如何梯度下降與學習新的演算法
如何簡單理解AI與機器學習
機器學習中的模型評價、模型選擇和演算法選擇!
機器學習如何毫不費力測骨齡?北美放射學會機器學習挑戰大賽獲勝演算法分享
AI 和機器學習中暗含的演算法偏見
機器學習新手必學十大演算法指南
看圖學機器學習