閱讀438 返回首頁    go 技術社區[雲棲]


機器學習算法選用指南

在從事數據科學工作的時候,經常會遇到為具體問題選擇最合適算法的問題。雖然有很多有關機器學習算法的文章詳細介紹了相關的算法,但要做出最合適的選擇依然非常困難。

在這篇文章中,我將對一些基本概念給出簡要的介紹,對不同任務中使用不同類型的機器學習算法給出一點建議。在文章的最後,我將對這些算法進行總結。

首先,你應該能區分以下四種機器學習任務:

  • 監督學習
  • 無監督學習
  • 半監督學習
  • 強化學習

監督學習

監督學習是從標記的訓練數據中推斷出某個功能。通過擬合標注的訓練集,找到最優的模型參數來預測其他對象(測試集)上的未知標簽。如果標簽是一個實數,我們稱之為回歸。如果標簽來自有限數量的值,這些值是無序的,那麼稱之為分類

1.png

無監督學習

在無監督學習中,我們對於物體知道的信息比較少,特別是訓練集沒有做過標記。那現在的目標是什麼呢?觀察對象之間的相似性,並將它們劃分到不同的群組中。某些對象可能與其他群組中的對象都有很大的區別,那麼我們就認為這些對象是異常的。

2.png

半監督學習

半監督學習包括了前麵描述的兩個問題:同時使用標記和未標記的數據。對於那些無法標注所有數據的人來說,這是一個很好的方法。該方法能夠顯著提高準確性,因為在使用訓練集中未標記數據的同時,還能使用少量帶有標記的數據。

3.png

強化學習

強化學習跟上麵提到的方法不太一樣,因為在這裏並沒有標記或未標記的數據集。強化學習涉及到軟件代理應該如何在某些環境中采取行動來最大化累積獎勵。

4.png

想象一下,你是一個在陌生環境中的機器人,你可以執行一些動作,並從中獲得獎勵。在每執行一個動作之後,你的行為會變得越來越複雜越來越聰明,也就是說 ,你正在訓練自己在執行每一個動作之後讓自己表現得更為有效。在生物學中,這被稱為適應自然環境。

常用的機器學習算法

現在,我們對機器學習的類型有了一定的了解,下麵,我們來看一下最流行的算法及其在現實生活中的應用。

線性回歸和線性分類器

這些可能是機器學習中最簡單的算法了。假設有對象(矩陣A)的特征x1,... xn和標簽(向量B)。我們的目標是根據某些損失函數(例如MSEMAE)找到最優權重w1,... wn和這些特征的偏差。 在使用MSE的情況下,有一個來自最小二乘法的數學公式:

5.jpeg

在實踐中,使用梯度下降來進行優化則更為容易,計算上更有效率。盡管這個算法很簡單,但是在存在成千上萬個特征的時候,這個方法依然能夠表現良好。更複雜的算法可能會遇到過擬合特征或者是沒有足夠大的數據集的問題,而線性回歸則是一個不錯的選擇。

6.jpg

為了防止過擬合,可使用像lasso和ridge這樣的規則化技術。其主要思路是分別把權重總和以及權重平方的總和加到損失函數中。

邏輯回歸

邏輯回歸執行的是二元分類,所以輸出的標簽是二元的。給定輸入特征向量x,定義P(y=1|x)為輸出y等於1時的條件概率。係數w是模型要學習的權重。

7.png

由於該算法需要計算每個類別的歸屬概率,因此應該考慮概率與0或1的差異程度,並像在線性回歸中一樣對所有對象取平均值。這種損失函數是交叉熵的平均值:

8.png

邏輯回歸有什麼好處呢?它采用了線性組合的特征,並對其應用非線性函數(sigmoid),所以它是一個非常小的神經網絡實例!

決策樹

另一個比較流行、並且容易理解的算法是決策樹。它的圖形能讓你看到你自己的想法,它的引擎有一個係統的、有記錄的思考過程。

這個算法很簡單。在每個節點中,我們選擇所有特征和所有可能的分割點之間的最佳分割。選擇每個分割以最大化某些功能。在分類樹中使用交叉熵和基尼指數。在回歸樹中,最小化該區域中的點的目標值的預測變量與分配給它的點之間的平方誤差的總和。

9.png

算法會在每個節點上遞歸地完成這個過程,直到滿足停止條件為止。

K-means

有的時候你並不知道標簽,而目標是根據對象的特征來分配標簽。這被稱為集聚化任務

假設要把所有的數據對象分成k個簇,則需要從數據中隨機選擇k個點,並將它們命名為簇的中心。其他對象的簇由最近的簇中心定義。然後,聚類的中心會被轉換並重複該過程直到收斂。

10.jpg

雖然這個技術非常不錯,但它仍然有一些缺點。首先,我們並不知道簇的數量。其次,結果依賴開始時隨機選擇的那個點,算法無法保證我們能夠實現功能的全局最小值。

主成分分析(PCA)

昨晚或者最近的幾個小時裏你有沒有在準備考試?你無法記住所有的信息,但是想要在可用的時間內最大限度地記住信息,例如,首先學習考試中經常出現的定理等等。

主成分分析基於類似的思想。該算法提供了降維的功能。有時,你有很多的特征,並且彼此之間強相關,模型可以很容易地適應大量的數據。然後,你可以應用PCA。

你應該計算某些向量上的投影,以使數據的方差最大化,並盡可能少地丟失信息。而這些向量是來自數據集特征的相關矩陣的特征向量。

11.png

算法的內容現在已經很清楚了:

  1. 計算特征列的相關矩陣,找出該矩陣的特征向量。

  2. 將這些多維向量計算出來,並計算所有特征的投影。

新特征是投影中的坐標,其數量取決於投影的特征向量的數量。

神經網絡

在上文講到邏輯回歸的時候,就已經提到了神經網絡。在一些具體的任務中,有很多不同的體係結構都非常有價值。而神經網絡更多的時候是一係列的層或組件,它們之間存在線性連接並遵循非線性。

如果你正在處理圖像,那麼卷積深度神經網絡能展現出不錯的結果。而非線性則通過卷積層和匯聚層表現出來,它能夠捕捉圖像的特征。

12.jpg

要處理文本和序列,最好選擇遞歸神經網絡。 RNN包含了LSTM或GRU模塊,並且能夠數據一同使用。也許,最有名的RNN應用是機器翻譯吧。

結論

我希望能向大家解釋最常用的機器學習算法,並就針對具體問題如何選擇機器學習算法提供建議。為了能讓你更輕鬆的掌握這些內容,我準備了下麵這個總結。

線性回歸和線性分類器。盡管看起來簡單,但當其他算法在大量特征上遇到過擬合的問題時,它的優勢就表現出來了。

Logistic回歸是最簡單的非線性分類器,具有二元分類的參數和非線性函數(S形)的線性組合。

決策樹通常與人類的決策過程相似,並且易於解釋。但它們最常用於隨機森林或梯度增強這樣的組合中。

K-means是一個更原始、但又非常容易理解的算法。

PCA是降低信息損失最少的特征空間維度的絕佳選擇。

神經網絡是機器學習算法的新武器,可以應用於許多任務,但其訓練的計算複雜度相當大。

文章原標題《Machine Learning Algorithms: Which One to Choose for Your Problem》,作者: Daniil Korbut,譯者:夏天,審校:主題曲。

文章為簡譯,更為詳細的內容請查看原文

本文由北郵@愛可可-愛生活老師推薦,阿裏雲雲棲社區組織翻譯。

最後更新:2017-11-17 11:35:06

  上一篇:go  阿裏雲優惠券 – 新用戶199元享受1核2G ECS 1年
  下一篇:go  小程序火熱,程序寶啟用bao.tech打造小程序生成平台。