自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

初學者如何選擇合適的機器學習算法

開發(fā) 開發(fā)工具 算法
面對大量的機器學習算法,初學者通常會問自己一個典型的問題:「我該使用哪一種算法?」有很多因素會影響這一問題的答案,下面,我們就根據(jù)一些明確的因素為算法的選擇提供一些參考意見。

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

  • 數(shù)據(jù)的大小、質量及性質
  • 可用計算時間
  • 任務的急迫性
  • 數(shù)據(jù)的使用用途

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

一、機器學習算法速查表

機器學習算法速查表

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

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

二、速查表的使用方法

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

  • 如果你想要降維,那么使用主成分分析。
  • 如果你需要得到快速的數(shù)值型預測,那么使用決策樹或 logistic 回歸。
  • 如果你需要層級結果,那么使用層級聚類。

有時會應用不止一個分支,而有時又找不到一個***的匹配。重要的是這些路徑是基于經驗法則的推薦,因此其中一些并不精確。很多數(shù)據(jù)科學家說找到***算法的唯一確定方法就是嘗試所有算法。

三、機器學習算法的分類

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

1. 監(jiān)督學習

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

  • 分類:當數(shù)據(jù)被用于預測類別時,監(jiān)督學習也可處理這類分類任務。給一張圖片貼上貓或狗的標簽就是這種情況。當分類標簽只有兩個時,這就是二元分類;超過兩個則是多元分類。
  • 回歸:當預測為連續(xù)數(shù)值型時,這就是一個回歸問題。
  • 預測:這是一個基于過去和現(xiàn)在的數(shù)據(jù)預測未來的過程,其***應用是趨勢分析。一個典型實例是根據(jù)今年和前年的銷售業(yè)績以預測下一年的銷售業(yè)績。

2. 半監(jiān)督學習

監(jiān)督學習的主要挑戰(zhàn)是標注數(shù)據(jù)價格昂貴且非常耗時。如果標簽有限,你可以使用非標注數(shù)據(jù)來提高監(jiān)督學習。由于在這一情況中機器并非完全有監(jiān)督,所以稱之為半監(jiān)督。通過半監(jiān)督學習,你可以使用只包含少量標注數(shù)據(jù)的非標注實例提升學習精確度。

3.  無監(jiān)督學習

在無監(jiān)督學習之中,機器完全采用非標注數(shù)據(jù),其被要求發(fā)現(xiàn)隱藏在數(shù)據(jù)之下的內在模式,比如聚類結構、低維流形或者稀疏樹和圖。

  • 聚類:把一組數(shù)據(jù)實例歸為一類,從而一個類(一個集群)之中的實例與其他類之中的實例更相似(根據(jù)一些指標),其經常被用于把整個數(shù)據(jù)集分割為若干個類。這種分析可在每一分類之中進行,從而幫助用戶需要內在模式。
  • 降維:減少考慮的變量數(shù)量。在很多應用中,原始數(shù)據(jù)有非常高的特征維度,并且一些特征是多余的且與任務不相關。降維將有助于發(fā)現(xiàn)真實、潛在的關系。

4. 強化學習

基于來自環(huán)境的反饋,強化學習分析和優(yōu)化智能體的行為。機器嘗試不同的策略,從而發(fā)現(xiàn)哪種行為能產生***的回報,因此智能體不是被告知應該采取哪種行為。試錯和延遲的 reward 是將強化學習與其他技術區(qū)分的特點。

四、選擇算法的注意事項

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

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

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

五、選擇具體算法的場景

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

1. 線性回歸和 Logistic 回歸

線性回歸

線性回歸(linear regression)是一種對連續(xù)型因變量 y 與單個或多個特征 X 之間的關系進行建模的方法。y 和 X 之間的關系可被線性建模成 如下形式:當存在訓練樣本時,參數(shù)向量β可從訓練樣本中學到。

 

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

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

以及

,其中

 

 

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

 

 

 

2. 線性 SVM 和核 SVM

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

 

 

Kernel 技巧被用于將非線性可分函數(shù)映射成高維的線性可分函數(shù)

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

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

3. 樹和集成樹

用于預測模型的決策樹

用于預測模型的決策樹

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

4. 神經網絡和深度學習

一個卷積神經網絡架構

一個卷積神經網絡架構

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

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

一種神經網絡

一種神經網絡

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

神經網絡由 3 個部分組成:輸入層、隱藏層和輸出層。當輸出層是一個分類變量時,那么該神經網絡可以解決分類問題。當輸出層是一個連續(xù)變量時,那么該網絡可被用于執(zhí)行回歸。當輸出層和輸入層一樣時,該網絡可被用于提取內在的特征。隱藏層的數(shù)量定義了模型復雜度和建模能力。

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

k-均值聚類

k-均值聚類

高斯混合模型

高斯混合模型

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

6. DBSCAN

DBSCAN 示意圖

DBSCAN 示意圖

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

7. 層次聚類

層次分區(qū)可以使用樹結構(樹形圖)來進行可視化

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

PCA、SVD 和 LDA

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

PCA 是一種無監(jiān)督聚類方法,其可以將原有的數(shù)據(jù)空間映射到一個更低維的空間,同時還能保留盡可能多的信息。PCA 基本上是在尋找一個保留了***數(shù)據(jù)方差的子空間,且該子空間由數(shù)據(jù)的協(xié)方差矩陣的主要特征向量所定義。

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

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

六、結論

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

  • 定義問題。你想要解決什么問題?
  • 從簡單開始。熟悉你的數(shù)據(jù)和基準結果。
  • 然后嘗試更加復雜的東西。

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

【本文是51CTO專欄機構機器之心的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】

 

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-05-25 13:37:46

機器學習算法神經網絡

2024-12-25 08:00:00

機器學習ML管道人工智能

2017-07-25 12:59:10

機器學習梯度下降算法

2022-01-21 09:05:34

機器學習工具安全

2024-05-23 16:48:42

機器學習算法人工智能

2009-09-28 09:45:00

CCNA學習經驗CCNA

2020-09-08 19:03:41

Java代碼初學者

2009-12-25 10:11:32

Red hat Lin

2015-07-20 13:56:59

SDN

2009-09-28 10:34:43

NET初學者學習建議

2022-03-17 17:08:05

機器學習算法類型

2021-02-16 23:43:53

深度學習人工智能IT

2010-01-15 19:05:42

學習C++

2021-03-14 18:22:23

套接字網絡通信

2017-10-30 14:56:04

機器學習算法非監(jiān)督學習

2020-05-26 18:35:00

機器學習人工智能AI

2023-10-25 16:16:27

2017-04-05 08:39:20

機器學習模型梯度下降法

2020-08-07 07:05:48

JavaScript開發(fā)技術

2021-01-10 08:29:03

機器學習ML算法
點贊
收藏

51CTO技術棧公眾號