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

2020-12-15 機器之心Pro

選自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 建模的是離散數據(文檔中的詞),並且會限制其主題以按狄利克雷分布而先驗地分布。

結論

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

定義問題。你想要解決什麼問題?從簡單開始。熟悉你的數據和基準結果。然後嘗試更加複雜的東西。

原文連結:http://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/

相關焦點

  • 從理論概念到庫函數語法:機器學習速查表全集
    比如說我們的數據量大於50、需要預測類別、是標註數據、小於100K的數據、線性支持向量分類器不管用、不是文本數據、K近鄰分類器不管用,然後我們就只能選擇最後的SVC集成分類器了。這種選擇算法的速查表確實很管用,很適合我們沒有什麼機器學習開發經驗的入門者使用,因為這會大大提高我們構建系統的效率。
  • 機器學習速查表(cheatsheet)資源匯總分享
    本文收集整理了機器學習相關速查表(Machine Learning Cheatsheet),包含機器學習、Python、Numpy、Pandas、Matplotlib、線性代數、微積分、統計學、概率論等相關速查表。
  • 可能是史上最全機器學習和Python速查表(附下載連結)
    機器學習有很多方面。 當我開始刷新這個主題時,我遇到了各種「速查表」,這裡僅列出了需要知道的給定主題的所有要點。 最後,我收集了與機器學習相關的速查表。有些我經常參考,並且認為其他人也可能從中受益。因此, 這篇文章把我從網上發現的很好的27個速查表分享出來,以供大家參考。後臺回復關鍵詞「速查表」下載27個速查表。
  • 教你輕鬆選擇合適的機器學習算法!
    選擇算法時,有幾個重要因素要考慮。1. 訓練數據的大小通常建議收集大量數據以獲得可靠的預測。但很多時候,數據的可用性是個約束。而且,算法需要更多時間來訓練龐大的訓練數據。在實際應用中,算法的選擇主要取決於這兩個因素。樸素貝葉斯和線性與邏輯回歸等算法易於實現且運行迅速。像需要調整參數的SVM、收斂時間長的神經網絡和隨機森林這些算法需要大量時間來訓練數據。
  • 27 張 AI 超全速查表,神經網絡、機器學習、數據可視化一應俱全(附完整 pdf)
    在機器學習、深度學習研究中,優秀的參考資料和手冊往往能夠助我們事半功倍!今天小編給大家整理了 27 張非常全面的 AI 速查表,以便供大家平時查詢所用!這 27 張速查表內容非常全面,涉及神經網絡、機器學習、深度學習、Python 及其開源庫、數據可視化等。下面,我們分別來詳細介紹。1. 神經網絡基礎
  • 資源 | 全機器學習和Python的27個速查表(完整版)
    按要求轉載自網路冷眼作者 | Robbie Allen機器學習(Machine Learning)有不少有用的流程圖和機器學習算法表
  • 十張機器學習和深度學習工程師必備速查表!
    > 大數據文摘作品作者:Kailash Ahirwar編譯:糖竹子,一針,Aileen對於初學者
  • 機器學習實踐指南
    下面列出了最知名的幾個:◈ 這個著名的機器學習慕課[26],是吳恩達Andrew Ng講的,介紹了機器學習及其理論。 別擔心,這個慕課講的非常好,一步一步深入,所以對初學者來說非常適用。◈ 麻省理工學院 Open Courseware 的 6034 課程的節目清單[27],已經有點前沿了。 在你開始本系列之前,你需要做一些 ML 理論方面的準備工作,但是你不會後悔的。
  • AI Cheat Sheet 人工智慧、神經網絡、機器學習、深度學習和大數據領域覆蓋最全的一份速查表
    機器學習:Scikit-learn算法這個部分展示了Scikit-learn中每個算法的適用範圍及優缺點,可以幫你快速找到解決問題的方法。Scikit-learnScikit-learn(以前稱為scikits.learn)是機器學習庫。 它具有各種分類,回歸和聚類算法,包括支持向量機,隨機森林,梯度增強,k-means和DBSCAN等。
  • 學會這10種機器學習算法,你才算入門(附教程)
    初學者需要注意的是:Logistic回歸用於分類,而不是回歸。你也可以把logistic回歸看成是一層神經網絡。Logistic回歸使用諸如梯度下降或LBFGS等最優化方法進行訓練。從事自然語言處理的的人員通常會稱它為最大熵分類器(Maximum Entropy Classifier)。Sigmoid函數是這個樣子的:
  • 微軟再推免費在線Python教程 面向數據科學和機器學習初學者
    去年九月,微軟曾面向 Python初學者,推出了一套免費的教程視頻。從基本介紹和 VS Code 的配置講起,循序漸進語法概念等基礎內容講解。目前為止,該系列視頻播放量已達到將近 180 萬次。  近日,微軟在此基礎上,再度更新兩個針對 Python 初學者的系列教程,作為對之前教程的補充,或者說是進階。
  • 機器學習入門教程-第03課:如何學習「機器學習」
    第03課:如何學習「機器學習」學習「機器學習」這件事,我走過很長的一段彎路。有一些心得、體會和方法,在此和大家分享。以模型為驅動,了解「機器學習」的本質本課力圖引導大家以模型為驅動,進行學習。我選擇了幾種經典模型(例如:線性回歸、邏輯回歸、決策樹、支持向量機、條件隨機場、K 均值等),作為入門的進階。初次學習模型,不必貪多。但就這些選定的模型,一定要搞清楚其問題域、模型函數、目標函數、訓練算法……潛入到數學公式推導的層面,對每一步的公式變換和對應的物理意義有所理解,然後再去實踐。
  • Python機器學習教程
    在本教程的最後,您不會成為機器學習方面的專家,但是您將能夠製作能夠執行複雜任務(例如,預測房屋價格或從尺寸識別虹膜的種類)的機器學習模型。花瓣和萼片的長度。如果您還不是一個完整的初學者,並且對機器學習有所了解,那麼我建議您從子主題八開始,即機器學習類型。在進入本教程之前,您應該熟悉Pandas和NumPy。這對於理解實現部分很重要。
  • python機器學習預測分析核心算法.pdf
    機器學習關注於預測,其核心是一種基於數學和算法的技術,要掌握該技術,需要對數學及統計概念有深入理解,能夠熟練使用R 語言或者其他程式語言。  本書通過集中介紹兩類可以進行有效預測的機器學習算法,展示了如何使用Python 程式語言完成機器學習任務,從而降低機器學習難度,使機器學習能夠被更廣泛的人群掌握。
  • 微軟再推免費在線 Python 教程,面向數據科學和機器學習初學者
    去年九月,微軟曾面向 Python 初學者,推出了一套免費的教程視頻。從基本介紹和 VS Code 的配置講起,循序漸進語法概念等基礎內容講解。目前為止,該系列視頻播放量已達到將近 180 萬次。近日,微軟在此基礎上,再度更新兩個針對 Python 初學者的系列教程,作為對之前教程的補充,或者說是進階。因此,這兩個新的系列面向的不完全是純粹的 Python 新手,而是對 Python 稍有了解,並可能有其他語言的編碼經驗的人。
  • 2016 年不容錯過的 30 個機器學習視頻、教程&課程
    導論:Python 數據科學SciPy 機器學習導論課Python Pandas 數據分析CS50 機器學習課程Pandas 初學者的數據分析和處理教程什麼是人工智慧Azure ML 初學者的機器學習教程第二部分:機器學習提高
  • 一周入門機器學習靠譜嗎?這有一份詳細的學習日程表
    」這篇文章來自於medium,一位作者親歷了一周入門機器學習後,分享他的「從下到上」的學習經驗給各位,希望給那些有興趣入門機器學習的讀者一個容易上手的詳細日程表。這個模型提供了豐富的算法可供選擇,將機器學習實戰降低在數十行代碼之內。 在一周的開始,我去尋找一些Scikit Learn的視頻教學,最後我選擇了Sentdex的關於怎麼樣用機器學習投資股票的輔導視頻,這個視頻給了我繼續下一步學習的必要知識。
  • 如何選擇正確的機器學習算法
    2 - 了解數據在為正確的問題選擇正確的算法的過程中,數據的理解過程起著關鍵的作用。一些算法可以處理較小的樣本集,而另一些算法則需要大量的樣本。某些算法處理分類數據,而另一些算法則喜歡處理數值輸入。3 - 查找可用的算法在對問題進行分類並理解數據之後,下一個裡程碑是確定在合理的時間內可以應用和實際實現的算法。影響模型選擇的因素包括:模型的準確性。模型的可解釋性。
  • CS229 機器學習速查表
    提供了監督學習、無監督學習、深度學習、機器學習技巧等重點內容。其中監督學習主要介紹了回歸、分類和生成,無監督主要介紹了聚類與降維算法,深度學習概述了三種神經網絡。監督學習如下所示監督學習介紹了非常多基礎概念,包括損失函數、梯度下降和最大似然估計等。其中損失函數展示了常用的最小二乘損失函數、折頁損失函數和交叉熵損失函數等,每一種損失函數的圖像、定義和應用的算法都展示在其中。