1. 程式人生 > >我應該使用哪種機器學習演算法?

我應該使用哪種機器學習演算法?

我應該使用哪種機器學習演算法?

該資源主要面向初學者到中級資料科學家或分析師,他們有興趣識別和應用機器學習演算法來解決他們感興趣的問題。

當面對各種各樣的機器學習演算法時,初學者提出的一個典型問題是“我應該使用哪種演算法?”   問題的答案因許多因素而異,包括:

  • 資料的大小,質量和特性。
  • 可用的計算時間。
  • 任務的緊迫性。
  • 您想要對資料做什麼。

即使是經驗豐富的資料科學家也無法確定哪種演算法在嘗試不同的演算法之前表現最佳。我們並不主張採用一種方法,但我們希望根據一些明確的因素提供一些指導,以便首先嚐試哪種演算法。

機器學習演算法備忘單

流程圖顯示了何時使用哪種演算法

該  機器學習演算法小抄  幫助您從各種機器學習演算法選擇找到適合您的具體問題適當的演算法。本文將指導您完成如何使用工作表的過程。

由於備忘單是為初學者資料科學家和分析師設計的,因此我們將在討論演算法時做出一些簡化的假設。

這裡推薦的演算法來自多個數據科學家和機器學習專家和開發人員的彙編反饋和提示。有幾個問題我們沒有達成協議,對於這些問題,我們試圖強調共性並調和差異。

隨著我們的庫增長以包含更完整的可用方法集,稍後將新增其他演算法。

如何使用備忘單

將圖表上的路徑和演算法標籤讀作“如果  <路徑標籤>

  然後使用  <演算法>”。例如:

  • 如果要執行降維,請使用主成分分析。
  • 如果您需要快速進行數字預測,請使用決策樹或邏輯迴歸。
  • 如果需要分層結果,請使用分層聚類。

有時會應用多個分支,有時候它們都不會完美匹配。重要的是要記住這些路徑旨在成為經驗法則,因此有些建議並不準確。我與之交談的幾位數據科學家表示,找到最佳演算法的唯一可靠方法是嘗試所有這些演算法。

機器學習演算法的型別

本節概述了最流行的機器學習型別。如果您熟悉這些類別並希望繼續討論特定演算法,則可以跳過本節並轉到下面的“何時使用特定演算法”。

監督學習

監督學習演算法基於一組示例進行預測。例如,歷史銷售額可用於估計未來價格。通過監督學習,您可以獲得一個輸入變數,該變數由標記的訓練資料和所需的輸出變數組成。您可以使用演算法分析訓練資料,以瞭解將輸入對映到輸出的功能。該推斷函式通過從訓練資料中推廣以預測在看不見的情況下的結果來對映新的未知示例。

  • 分類:當資料用於預測分類變數時,監督學習也稱為分類。將標籤或指示器(狗或貓)分配給影象時就是這種情況。當只有兩個標籤時,這稱為二進位制分類。當有兩個以上的類別時,這些問題被稱為多類分類。
  • 迴歸:在預測連續值時,問題會成為迴歸問題。
  • 預測:這是根據過去和現在的資料對未來進行預測的過程。它最常用於分析趨勢。一個常見的例子可能是根據當年和前幾年的銷售情況估算下一年的銷售額。

半監督學習

監督學習的挑戰是標籤資料可能既昂貴又耗時。如果標籤有限,您可以使用未標記的示例來增強監督學習。因為在這種情況下機器沒有完全監督,我們說機器是半監督的。使用半監督學習,您可以使用帶有少量標記資料的未標記示例來提高學習準確性。

無人監督的學習

在執行無監督學習時,機器會顯示完全未標記的資料。它被要求發現作為資料基礎的內在模式,例如聚類結構,低維流形或稀疏樹和圖。

  • 聚類:對一組資料示例進行分組,以使一個組(或一個叢集)中的示例(與某些標準相比)與其他組中的示例更相似(根據某些標準)。這通常用於將整個資料集分成幾個組。可以在每個組中執行分析以幫助使用者找到內在模式。
  • 降維:減少所考慮的變數數量。在許多應用程式中,原始資料具有非常高的維度特徵,並且某些特徵是冗餘的或與任務無關。減少維度有助於找到真實的潛在關係。

 強化學習

強化學習根據環境反饋分析並優化代理的行為。機器嘗試不同的場景來發現哪些動作產生最大的回報,而不是被告知要採取哪些動作。試錯法和延遲獎勵將強化學習與其他技術區分開來。

選擇演算法時的注意事項

在選擇演算法時,請始終考慮以下因素:準確性,培訓時間和易用性。許多使用者將準確性放在第一位,而初學者傾向於專注於他們最熟悉的演算法。

當提供資料集時,首先要考慮的是如何獲得結果,無論結果如何。初學者傾向於選擇易於實現且可以快速獲得結果的演算法。這很好,只要它只是這個過程的第一步。獲得一些結果並熟悉資料後,您可能會花更多時間使用更復雜的演算法來加強對資料的理解,從而進一步改善結果。

即使在這個階段,最好的演算法可能不是已經達到最高報告準確度的方法,因為演算法通常需要仔細調整和廣泛的訓練以獲得其最佳可實現的效能。

何時使用特定演算法

更仔細地檢視單個演算法可以幫助您瞭解它們提供的內容以及它們的使用方式。這些描述提供了更多詳細資訊,並提供了何時使用特定演算法的附加提示,與備忘單一致。

線性迴歸和邏輯迴歸    

線性迴歸

邏輯迴歸

 

線性迴歸是一種建模連續因變數y之間關係的方法ÿ和一個或多個預測變數X。X與Y之間的關係可以線性建模為給出訓練樣例,引數向量β 可以學習到。

如果因變數不是連續的但是是分類的,則可以使用logit連結函式將線性迴歸轉換為邏輯迴歸。Logistic迴歸是一種簡單,快速但功能強大的分類演算法。這裡我們討論因變數y的二進位制情況ÿ只取二進位制值(它可以很容易地擴充套件到多類分類問題)。

在邏輯迴歸中,我們使用不同的假設類來嘗試預測給定示例屬於“1”類的概率與它屬於“-1”類的概率。具體來說,我們將嘗試學習形式的函式:。這裡是一個sigmoid函式。給出訓練樣例,引數向量β可以通過最大化β的對數似然來學習β 給定資料集。

    

按線性迴歸分組

SAS Visual Analytics中的邏輯迴歸

 

 

線性SVM和核心SVM

核心技巧用於將非線性可分離函式對映到更高維度的線性可分函式。支援向量機(SVM)訓練演算法找到由法向量w表示的分類器w ^和偏見bb超平面的 這個超平面(邊界)以儘可能寬的邊距分隔不同的類。問題可以轉換為約束優化問題:

 

支援向量機(SVM)訓練演算法找到由超平面的法向量和偏差表示的分類器。這個超平面(邊界)以儘可能寬的邊距分隔不同的類。問題可以轉換為約束優化問題:

線性和核心SVM圖表

核心技巧用於將非線性可分離函式對映到更高維度的線性可分函式。

當類不是線性可分的時,可以使用核心技巧將非線性可分離空間對映到更高維度的線性可分離空間。

當大多數因變數是數字時,邏輯迴歸和SVM應該是分類的第一次嘗試。這些模型易於實現,引數易於調整,效能也相當不錯。所以這些模型適合初學者。

決策樹

預測模型的決策樹。

預測模型的決策樹

決策樹,隨機森林和梯度增強都是基於決策樹的演算法。決策樹有許多變體,但它們都做同樣的事情 - 將特徵空間細分為大多數相同標籤的區域。決策樹易於理解和實施。然而,當我們耗盡樹枝並深入樹木時,它們往往會過度擬合數據。隨機森林和梯度增強是使用樹演算法實現良好準確性以及克服過度擬合問題的兩種常用方法。

神經網路和深度學習

卷積神經網路架構(影象源:維基百科創意共享

由於其並行和分散式處理能力,神經網路在20世紀80年代中期蓬勃發展。但是,該領域的研究受到反向傳播訓練演算法的無效性的阻礙,該演算法被廣泛用於優化神經網路的引數。支援向量機(SVM)和其他更簡單的模型,通過求解凸優化問題可以很容易地訓練,逐漸取代機器學習中的神經網路。

近年來,諸如無人監督的預訓練和分層貪婪訓練等新的和改進的訓練技術已經引起對神經網路的興趣的復甦。越來越強大的計算能力,如圖形處理單元(GPU)和大規模並行處理(MPP),也刺激了神經網路的復興。神經網路中的復興研究已經產生了具有數千層的模型的發明。

神經網路

SAS Visual Analytics中的神經網路

換句話說,淺層神經網路已演變為深度學習神經網路。深度神經網路在監督學習方面非常成功。當用於語音和影象識別時,深度學習的表現與人類一樣好,甚至更好。應用於無監督學習任務,例如特徵提取,深度學習還從原始影象或語音中提取特徵,而人為干預少得多。

神經網路由三部分組成:輸入層,隱藏層和輸出層。訓練樣本定義輸入和輸出層。當輸出層是分類變數時,神經網路是解決分類問題的一種方法。當輸出層是連續變數時,則可以使用網路進行迴歸。當輸出層與輸入層相同時,網路可用於提取內在特徵。隱藏層的數量定義了模型的複雜性和建模能力。

深度學習:它是什麼以及它為何重要

k-means/k-modes,GMM(高斯混合模型)聚類

K均值聚類

高斯混合模型

 

 

Kmeans/k-modes,GMM聚類旨在將n個觀測值劃分為k個聚類。K-means定義硬分配:樣本只與一個叢集相關聯。然而,GMM為每個樣本定義了一個軟分配。每個樣本都有可能與每個群集相關聯。當給出簇k的數量時,兩種演算法都是簡單且快速的,以便進行聚類。

DBSCAN

 

DBSCAN插圖

DBSCAN插圖(圖片來源:維基百科

當沒有給出簇數k時,可以通過密度擴散連線樣本來使用DBSCAN(基於密度的空間聚類)。

分層聚類

可以使用樹結構(樹形圖)視覺化分層分割槽。它不需要簇的數量作為輸入,並且可以使用不同的K在不同粒度級別(即,可以細化/粗化簇)檢視分割槽。

PCA,SVD和LDA

我們通常不希望將大量特徵直接饋送到機器學習演算法中,因為一些特徵可能是不相關的,或者“內在”維度可能小於特徵的數量。主成分分析(PCA),奇異值分解(SVD)和 潛在Dirichlet分配(LDA)都可用於執行降維。

PCA是一種無監督的聚類方法,它將原始資料空間對映到較低維空間,同時保留儘可能多的資訊。PCA基本上找到最能保留資料方差的子空間,子空間由資料協方差矩陣的主要特徵向量定義。

SVD與PCA有關,因為中心資料矩陣的SVD(特徵與樣本)提供了主要的左奇異向量,這些向量定義了與PCA相同的子空間。然而,SVD是一種更通用的技術,因為它也可以做PCA可能不會做的事情。例如,使用者對電影矩陣的SVD能夠提取可以在推薦系統中使用的使用者簡檔和電影簡檔。此外,SVD還被廣泛用作自然語言處理(NLP)中的主題建模工具,稱為潛在語義分析。

NLP中的相關技術是潛在Dirichlet分配(LDA)。LDA是概率主題模型,它以類似於高斯混合模型(GMM)將連續資料分解為高斯密度的方式將文件分解為主題。與GMM不同,LDA模擬離散資料(文件中的單詞),並且它約束主題是根據Dirichlet分佈的先驗分佈。

 結論

這是易於遵循的工作流程。嘗試解決新問題時的外賣訊息是:

  • 定義問題。你想解決什麼問題?
  • 從簡單開始。熟悉資料和基線結果。
  • 然後嘗試更復雜的事情。

 

來源:https://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/#prettyPhoto