當前位置:
首頁 > 最新 > 上手機器學習,從搞懂這十大經典演算法開始

上手機器學習,從搞懂這十大經典演算法開始

翻譯 | AI科技大本營(rgznai100)

參與 | 林椿眄

編輯 | 波波,Donna

在機器學習領域,「沒有免費的午餐」是一個不變的定理。簡而言之,沒有一種演算法是完美的,可以作為任何問題的最佳解決方案。認清這一點,對於解決監督學習問題(如預測建模問題)尤其重要。

我們不能總說神經網路就是比決策樹好,反之亦然。影響演算法性能的因素有很多,比如數據集的大小和結構。

因此,對於自己的問題,要嘗試多種不同的演算法,並使用測試數據集來評估各個演算法的性能,以選出效果最優的那一個。

當然,前面所嘗試的演算法必須要適合自己的問題,這也正是你要選對正確的機器學習任務的地方。比如,需要打掃房子的時候,你會使用真空吸塵器、掃帚或拖把,但絕不應該用鏟子在屋內挖坑。

▌重要的原則

話雖如此,但所有用於預測建模的有監督機器學習演算法卻有一個共同的原則:

機器學習演算法的本質是找到一個目標函數(f),使其成為輸入變數(X)到輸出變數(Y)之間的最佳映射:Y = f(X)

這是最常見的學習任務,給定任意新的輸入變數(X),我們就能預測出輸出變數(Y)的值。因為我們不知道目標函數(f)的形式或樣子,所以才要機器去把它找出來。不然的話,我們就可以直接用目標函數來進行預測了,而非還要用機器學習演算法來學習數據了。

最常見的機器學習類型就是找到最佳映射Y = f(X),並以此來預測新X所對應的Y值。這一過程被稱為預測建模或預測分析,目標是儘可能到出最為準確的預測。

對於渴望理解機器學習基本概念的各位新手,我們特地整理出數據科學家最常用的十大機器學習演算法,便於大家快速上手。

▌1- 線性回歸

線性回歸可能是統計學和機器學習中最為知名、最易於理解的一個演算法。

預測建模主要關注的是如何最小化模型的誤差,或是如何在一個可解釋性代價的基礎上做出最為準確的預測。我們將借用、重用和竊取包括統計學在內的多個不同領域的演算法,並將其用於這些目的。

線性回歸所表示的是描述一條直線的方程,通過輸入變數的特定權重係數(B)來找出輸入變數(x)和輸出變數(y)之間最適合的映射關係。

線性回歸

例如:y = B0 + B1 * x

給定輸入x,我們可以預測出y的值。線性回歸學習演算法的目標是找到係數B0和B1的值。

找出數據的線性回歸模型有多種不同的技巧,例如將線性代數解用於普通最小二乘法和梯度下降優化問題。

線性回歸業已存在200多年,並已被廣泛研究過。使用該演算法的一些竅門,是儘可能地去除非常相似的相關變數以及數據中的雜訊。這是一個快速、簡單而又好用的演算法。

▌2 - 邏輯回歸

邏輯回歸是機器學習借自統計領域的另一項技術,用於解決二元分類問題(有兩個類值的問題)。

邏輯回歸就像線性回歸,因為它的目標是找出每個輸入變數的加權係數值。與線性回歸不同的是,邏輯回歸預測輸出值的函數是非線性的,也被稱為邏輯函數。

邏輯回歸的函數圖像看起來是一個大的S形,並將任何值轉換至0到1的區間。這種形式非常有用,因為我們可以用一個規則把邏輯函數的值轉化成0和1(例如,如果函數值小於0.5,則輸出1),從而預測類別。

邏輯回歸

基於模型學習的方式,邏輯回歸的輸出值也可以用來預測給定數據實例屬於類別0和類別1的概率。當你的預測需要更多依據時,這一點會非常有用。

跟線性回歸一樣,當你剔除與輸出變數無關或與之除非常相似(相關)的屬性後,邏輯回歸的效果會更好。對於二元分類問題,它是一個易於上手、快速而又有效的模型。

▌3 - 線性判別分析

一般來說,邏輯回歸僅限於二元分類問題。 但如果分類類別超過兩個,線性判別分析就成為你首選的線性分類演算法。

線性判別分析的表達式非常簡單。 它由數據的統計屬性組成,並計算每個類別的屬性值。對於單個輸入變數,它包括:

每個類別的平均值。

所有類別的方差。

線性判別分析

線性判別分析通過計算每個類別的差別值,並對擁有最大值的類別進行預測。 該方法假定數據服從高斯分布(鐘形曲線),因此預測前從數據中移除異常值會是一個很好的習慣。對於分類預測問題來說,它是一個簡單而又強大的方法。

▌4 - 分類和回歸樹

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

決策樹模型的表現形式為二叉樹,也就是來自演算法和數據結構方面的二叉樹,沒有什麼特別。樹上每個節點代表一個輸入變數(x)與一個基於該變數的分離點(假定這個變數是數字)。

決策樹

葉節點包含了用於預測的輸出變數(y)。預測是通過遍歷樹的分離點開始,直到抵達每一個葉節點,並輸出該葉節點的分類值。

決策樹演算法學習起來很快,預測速度也很快。決策樹對於各種各樣的問題都能做出準確的預測,並且無需對數據做任何特殊的預處理。

▌5 - 樸素貝葉斯

樸素貝葉斯是一種簡單而又強大的預測建模演算法。

該模型由兩種概率組成,它們都能從訓練數據中直接計算出來:1)每個類別的概率; 2)對於給定的x值,每個類別的條件概率。 一旦計算出來,概率模型就可以用於使用貝葉斯定理對新的數據進行預測。 當你的數據是實值時,通常會假定一個高斯分布(鐘形曲線),這樣你就很容易計算出這些數據的概率。

樸素貝葉斯

樸素貝葉斯假定每個輸入變數都是獨立,所以被稱為「樸素的」。這是一個強假設,對真實數據而言有點不切實際,但該方法在大範圍的複雜問題上非常有效。

▌6 - K-最近鄰演算法

K-最近鄰演算法是一種非常簡單和有效。它的模型所表示是整個訓練數據集,看上去很簡單,對吧?

對於給定的訓練數據,通過搜索整個數據集中K個最相似的實例(鄰居),匯總這K個實例的輸出變數可以預測新的數據點。對於回歸問題,它可能是輸出變數的平均值;對於分類問題,它可能是模式(或最常見的)類別值。

使用K-最近鄰演算法的訣竅,是在於如何確定數據實例之間的相似性。最簡單的方法,如果你的屬性在歐幾里德距離上尺度相同(例如均以英寸為單位),那麼基於每個輸入變數之間的差異,你就可以直接計算其數值來確定相似性。

K-最近鄰演算法可能需要大量的內存或存儲空間來儲存所有數據,但只有在預測時才會執行計算(或學習)。你也可以隨時更新和管理你的訓練實例,以保持預測的準確性。

距離或緊密度的概念在非常高的維度(大量的輸入變數)中可能會失效,因為輸入變數的數量對於演算法性能有著很大的負面影響。這就是維度災難。這就要求你只使用那些與預測輸出變數最相關的輸入變數。

▌7 - 學習向量量化

K-最近鄰演算法的一個缺點是你需要使用整個訓練數據集。而作為人工神經網路,學習向量量化演算法(簡稱LVQ)允許你選擇訓練實例的數量,並能準確地學習這些實例所應有的特徵。

學習向量量化

學習向量量化演算法所表示的是碼本向量的集合。這些向量在初始化的時候隨機選擇出來,並在學習演算法的多次迭代中優化成最能概括訓練數據集的集合。在學習完成後,碼本向量可以像K-最近鄰演算法一樣進行預測。通過計算每個碼本向量和新數據實例之間的距離來找到最相似的鄰居(最佳匹配碼本向量),然後返回最佳匹配單元的類別值或(在回歸情況下的實際值)作為預測。如果能重新調整數據使其處於相同的區間(如0到1之間),則可以獲得最佳的預測結果。

如果K-最近鄰演算法在你的數據集上已經給出了很好的預測結果,那麼可以嘗試用學習向量量化演算法來減少整個訓練數據集的內存存儲需求。

▌8 - 支持向量機

支持向量機可能是最受歡迎、討論最為廣泛的機器學習演算法之一。

超平面是輸入變數空間內的一條分割線。在支持向量機中,超平面可以通過類別(0類或1類)最佳分割輸入變數空間。在二維空間內,超平面可被視為一條線,我們假設所有的輸入點都可以被該線完全分開。支持向量機的目標是找到一個分離係數,讓一個超平面能夠對不同類別的數據進行最佳分割。

支持向量機

超平面與最近的數據點之間的距離被稱為邊距。在分離兩個類上具有最大邊距的超平面被稱為最佳超平面。超平面的確定只跟這些點及分類器的構造有關。這些點被稱為支持向量,它們支持並定義超平面。在實踐中,可以使用優化演算法來找到能夠最大化邊距的係數。

支持向量機可能是最為強大的「開箱即用」分類器之一,值得你嘗試。

▌9 - bagging演算法和隨機森林

隨機森林是最流行、最強大的機器學習演算法之一。它是一種被稱為Bootstrap Aggregation或Bagging的機器學習集成演算法。

Bootstrap是一種從數據樣本中估算數量的強大統計方法。換句話說,你需要抽取大量的數據樣本、計算平均值,然後再計算所有均值的平均,以便更好地估計整體樣本的真實平均值。

bagging演算法也使用相同的方式,但用於估計整個統計模型的最常見方法是決策樹。訓練數據中的多個樣本將被取樣,然後對每個數據樣本建模。對新數據進行預測時,每個模型都會進行預測,並對每個預測結果進行平均,以更好地估計真實的輸出值。

隨機森林

隨機森林是對bagging演算法的一種調整,它不是選擇最佳分割點來創建決策樹,而是通過引入隨機性來得到次優分割點。

因此,針對每個數據樣本所創建的模型,會與其他方式有所不同,但仍能以其獨特和不同的方式準確預測。結合所有模型的預測,可以更好地估計潛在的真實輸出。

如果用方差較高的演算法(如決策樹)能夠獲得較好的結果,那麼通過bagging演算法通常可以獲得更好的結果。

▌10 - Boosting和AdaBoost演算法

Boosting是一項從多個弱分類器中構建強分類器的集成預測技術。它從訓練數據中構建模型,然後通過修正前一個模型的錯誤創造出第二個模型。以此類推,模型不斷疊加,直至能夠完美預測訓練數據集,或達到可添加的模型的數量上限。

在針對二元分類所開發的boosting演算法中,AdaBoost是第一個成功的。它是理解boosting演算法的最佳起點。現代boosting方法基於AdaBoost而構建,最典型的例子是隨機梯度加速器。

通常,AdaBoost演算法與決策樹一起工作。第一個決策樹創建後,決策樹在每個訓練實例上的性能,都被用來衡量下一個決策樹針對該實例所應分配的關注程度。難以預測的訓練數據被賦予更大的權重,而容易預測的數據則被賦予更小的權重。模型依次被創建,每次更新訓練實例的權重,都會影響到序列中下一個決策樹學習性能。所有決策樹完成後,即可對新輸入的數據進行預測,而每個決策樹的性能將由它在訓練數據上的準確度所決定。

由於模型注意力都集中於糾正上一個演算法的錯誤,所以必須確保數據是乾淨無異常的。

▌最後的建議

初學者常常會被眼花繚亂的機器學習演算法所困擾,提出「我該使用哪種演算法?」這樣的問題。

此問題的答案取決於許多因素,包括:

(1)數據的大小、質量和性質;

(2)可用的計算時間;

(3)任務的緊迫性;

(4)你想要用數據來做什麼。

即使是一位經驗豐富的數據科學家,在嘗試不同的演算法之前,也無法回答哪種演算法的性能會是最好的。機器學習的演算法還有很多,但以上這些是最受歡迎的演算法。如果你剛入門機器學習,這將是一個很好的學習起點。

作者 | James Le

熱文精選


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

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


請您繼續閱讀更多來自 機器學習 的精彩文章:

機器學習演算法之決策樹(一)

TAG:機器學習 |