當前位置:
首頁 > 知識 > 新手必看的十種機器學習演算法

新手必看的十種機器學習演算法

AI 研習社按:在神經網路的成功的帶動下,越來越多的研究人員和開發人員都開始重新審視機器學習,開始嘗試用某些機器學習方法自動解決可以輕鬆採集數據的問題。然而,在眾多的機器學習演算法中,哪些是又上手快捷又功能強大、適合新手學習的呢?Towards Data Science 上一篇文章就介紹了十種新手必看的機器學習演算法,AI 研習社全文編譯如下。

機器學習領域有一條「沒有免費的午餐」定理。簡單解釋下的話,它是說沒有任何一種演算法能夠適用於所有問題,特別是在監督學習中。

例如,你不能說神經網路就一定比決策樹好,反之亦然。要判斷演算法優劣,數據集的大小和結構等眾多因素都至關重要。所以,你應該針對你的問題嘗試不同的演算法。然後使用保留的測試集對性能進行評估,選出較好的演算法。

當然,演算法必須適合於你的問題。就比如說,如果你想清掃你的房子,你需要吸塵器,掃帚,拖把。而不是拿起鏟子去開始挖地。

大的原則

不過,對於預測建模來說,有一條通用的原則適用於所有監督學習演算法。

機器學習演算法可以描述為學習一個目標函數 f,它能夠最好地映射出輸入變數 X 到輸出變數 Y。有一類普遍的學習任務。我們要根據輸入變數 X 來預測出 Y。我們不知道目標函數 f 是什麼樣的。如果早就知道,我們就可以直接使用它,而不需要再通過機器學習演算法從數據中進行學習了。

最常見的機器學習就是學習 Y=f(X) 的映射,針對新的 X 預測 Y。這叫做預測建模或預測分析。我們的目標就是讓預測更加精確。

針對希望對機器學習有個基本了解的新人來說,下面將介紹數據科學家們最常使用的 10 種機器學習演算法。


1. 線性回歸

線性回歸可能是統計和機器學習領域最廣為人知的演算法之一。

以犧牲可解釋性為代價,預測建模的首要目標是減小模型誤差或將預測精度做到最佳。我們從統計等不同領域借鑒了多種演算法,來達到這個目標。

線性回歸通過找到一組特定的權值,稱為係數 B。通過最能符合輸入變數 x 到輸出變數 y 關係的等式所代表的線表達出來。

線性回歸

例如:y = B0 + B1 * x 。我們針對給出的輸入 x 來預測 y。線性回歸學習演算法的目標是找到 B0 和 B1 的值。

不同的技巧可以用於線性回歸模型。比如線性代數的普通最小二乘法,以及梯度下降優化演算法。線性回歸已經有超過 200 年的歷史,已經被廣泛地研究。根據經驗,這種演算法可以很好地消除相似的數據,以及去除數據中的雜訊。它是快速且簡便的首選演算法。


2. 邏輯回歸

邏輯回歸是另一種從統計領域借鑒而來的機器學習演算法。

與線性回歸相同。它的目的是找出每個輸入變數的對應參數值。不同的是,預測輸出所用的變換是一個被稱作 logistic 函數的非線性函數。

logistic 函數像一個大 S。它將所有值轉換為 0 到 1 之間的數。這很有用,我們可以根據一些規則將 logistic 函數的輸出轉換為 0 或 1(比如,當小於 0.5 時則為 1)。然後以此進行分類。

邏輯回歸

正是因為模型學習的這種方式,邏輯回歸做出的預測可以被當做輸入為 0 和 1 兩個分類數據的概率值。這在一些需要給出預測合理性的問題中非常有用。

就像線性回歸,在需要移除與輸出變數無關的特徵以及相似特徵方面,邏輯回歸可以表現得很好。在處理二分類問題上,它是一個快速高效的模型。


3. 線性判別分析

邏輯回歸是一個二分類問題的傳統分類演算法。如果需要進行更多的分類,線性判別分析演算法(LDA)是一個更好的線性分類方法。

對 LDA 的解釋非常直接。它包括針對每一個類的輸入數據的統計特性。對於單一輸入變數來說包括:

類內樣本均值

總體樣本變數

線性判別分析

通過計算每個類的判別值,並根據最大值來進行預測。這種方法假設數據服從高斯分布(鐘形曲線)。所以它可以較好地提前去除離群值。它是針對分類模型預測問題的一種簡單有效的方法。


4. 分類與回歸樹分析

決策樹是機器學習預測建模的一類重要演算法。

可以用二叉樹來解釋決策樹模型。這是根據演算法和數據結構建立的二叉樹,這並不難理解。每個節點代表一個輸入變數以及變數的分叉點(假設是數值變數)

決策樹

樹的葉節點包括用於預測的輸出變數 y。通過樹的各分支到達葉節點,並輸出對應葉節點的分類值。

樹可以進行快速的學習和預測。通常並不需要對數據做特殊的處理,就可以使用這個方法對多種問題得到準確的結果。


5. 樸素貝葉斯

樸素貝葉斯(Naive Bayes)是一個簡單,但是異常強大的預測建模演算法。

這個模型包括兩種概率。它們可以通過訓練數據直接計算得到:1)每個類的概率;2)給定 x 值情況下每個類的條件概率。根據貝葉斯定理,一旦完成計算,就可以使用概率模型針對新的數據進行預測。當你的數據為實數時,通常假設服從高斯分布(鐘形曲線)。這樣你可以很容易地預測這些概率。

貝葉斯定理

之所以被稱作樸素貝葉斯,是因為我們假設每個輸入變數都是獨立的。這是一個強假設,在真實數據中幾乎是不可能的。但對於很多複雜問題,這種方法非常有效。


6. K 最近鄰演算法

K 最近鄰演算法(KNN)是一個非常簡單有效的演算法。KNN 的模型表示就是整個訓練數據集。很簡單吧?

對於新數據點的預測則是,尋找整個訓練集中 K 個最相似的樣本(鄰居),並把這些樣本的輸出變數進行總結。對於回歸問題可能意味著平均輸出變數。對於分類問題則可能意味著類值的眾數(最常出現的那個值)。

訣竅是如何在數據樣本中找出相似性。最簡單的方法就是,如果你的特徵都是以相同的尺度(比如說都是英寸)度量的,你就可以直接計算它們互相之間的歐式距離。

K 最近鄰演算法

KNN 需要大量空間來存儲所有的數據。但只是在需要進行預測的時候才開始計算(學習)。你可以隨時更新並組織訓練樣本以保證預測的準確性。

在維數很高(很多輸入變數)的情況下,這種通過距離或相近程度進行判斷的方法可能失敗。這會對演算法的性能產生負面的影響。這被稱作維度災難。我建議你只有當輸入變數與輸出預測變數最具有關聯性的時候使用這種演算法。


7. 學習矢量量化

K 最近鄰演算法的缺點是你需要存儲所有訓練數據集。而學習矢量量化(縮寫為 LVQ)是一個人工神經網路演算法。它允許你選擇需要保留的訓練樣本個數,並且學習這些樣本看起來應該具有何種模式。

學習矢量量化

LVQ 可以表示為一組碼本向量的集合。在開始的時候進行隨機選擇。通過多輪學習演算法的迭代,最後得到與訓練數據集最相配的結果。通過學習,碼本向量可以像 K 最近鄰演算法那樣進行預測。通過計算新數據樣本與碼本向量之間的距離找到最相似的鄰居(最符合碼本向量)。將最佳的分類值(或回歸問題中的實數值)返回作為預測值。如果你將數據調整到相同的尺度,比如 0 和 1,則可以得到最好的結果。

如果你發現對於你的數據集,KNN 有較好的效果,可以嘗試一下 LVQ 來減少存儲整個數據集對存儲空間的依賴。


8. 支持向量機

支持向量機(SVM)可能是最常用並且最常被談到的機器學習演算法。

超平面是一條劃分輸入變數空間的線。在 SVM 中,選擇一個超平面,它能最好地將輸入變數空間劃分為不同的類,要麼是 0,要麼是 1。在 2 維情況下,可以將它看做一根線,並假設所有輸入點都被這根線完全分開。SVM 通過學習演算法,找到最能完成類劃分的超平面的一組參數。

支持向量機

超平面和最接近的數據點的距離看做一個差值。最好的超平面可以把所有數據劃分為兩個類,並且這個差值最大。只有這些點與超平面的定義和分類器的構造有關。這些點被稱作支持向量。是它們定義了超平面。在實際使用中,優化演算法被用於找到一組參數值使差值達到最大。

SVM 可能是一種最為強大的分類器,它值得你一試。


9. Bagging 和隨機森林

隨機森林是一個常用並且最為強大的機器學習演算法。它是一種集成機器學習演算法,稱作自舉匯聚或 bagging。

bootstrap 是一種強大的統計方法,用於數據樣本的估算。比如均值。你從數據中採集很多樣本,計算均值,然後將所有均值再求平均。最終得到一個真實均值的較好的估計值。

在 bagging 中用了相似的方法。但是通常用決策樹來代替對整個統計模型的估計。從訓練集中採集多個樣本,針對每個樣本構造模型。當你需要對新的數據進行預測,每個模型做一次預測,然後把預測值做平均得到真實輸出的較好的預測值。

隨機森林

這裡的不同在於在什麼地方創建樹,與決策樹選擇最優分叉點不同,隨機森林通過加入隨機性從而產生次優的分叉點。

每個數據樣本所創建的模型與其他的都不相同。但在唯一性和不同性方面仍然準確。結合這些預測結果可以更好地得到真實的輸出估計值。

如果在高方差的演算法(比如決策樹)中得到較好的結果,你通常也可以通過袋裝這種演算法得到更好的結果。


10. Boosting 和 AdaBoost

Boosting 是一種集成方法,通過多種弱分類器創建一種強分類器。它首先通過訓練數據建立一個模型,然後再建立第二個模型來修正前一個模型的誤差。在完成對訓練集完美預測之前,模型和模型的最大數量都會不斷添加。

AdaBoost 是第一種成功的針對二分類的 boosting 演算法。它是理解 boosting 的最好的起點。現代的 boosting 方法是建立在 AdaBoost 之上。多數都是隨機梯度 boosting 機器。

AdaBoost

AdaBoost 與短決策樹一起使用。當第一棵樹創建之後,每個訓練樣本的樹的性能將用於決定,針對這個訓練樣本下一棵樹將給與多少關注。難於預測的訓練數據給予較大的權值,反之容易預測的樣本給予較小的權值。模型按順序被建立,每個訓練樣本權值的更新都會影響下一棵樹的學習效果。完成決策樹的建立之後,進行對新數據的預測,訓練數據的精確性決定了每棵樹的性能。

因為重點關注修正演算法的錯誤,所以移除數據中的離群值非常重要。


結語

當面對各種機器學習演算法,一個新手最常問的問題是「我該使用哪個演算法」。要回答這個問題需要考慮很多因素:(1)數據的大小,質量和類型;(2)完成計算所需要的時間;(3)任務的緊迫程度;(4)你需要對數據做什麼處理。

在嘗試不同演算法之前,就算一個經驗豐富的數據科學家也不可能告訴你哪種演算法性能最好。雖然還有很多其他的機器學習演算法,但這裡列舉的是最常用的幾種。如果你是一個機器學習的新手,這幾種是最好的學習起點。

via towardsdatascience.com,AI 研習社編譯

春節 AI 學習狂歡,精品課程 豪華特輯

優惠折上折,福利搶不停!

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

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


請您繼續閱讀更多來自 AI研習社 的精彩文章:

IBM高級研發工程師武維:如何分散式訓練深度學習模型?

TAG:AI研習社 |