編者按:Medium博主James Le近日在網(wǎng)絡(luò)上分享了他認(rèn)為的最適合新手的機(jī)器學(xué)習(xí)算法,并授權(quán)論智進(jìn)行編譯。以下是我們對(duì)原文的編譯,如有錯(cuò)誤還請(qǐng)指出。
在機(jī)器學(xué)習(xí)界,有這樣一個(gè)“沒有免費(fèi)午餐”的定理。簡(jiǎn)單地說,該理論認(rèn)為,沒有一種算法能解決所有問題,尤其對(duì)監(jiān)督學(xué)習(xí)而言。
例如,你不能認(rèn)為神經(jīng)網(wǎng)絡(luò)總比決策樹要好,或決策樹永遠(yuǎn)優(yōu)于神經(jīng)網(wǎng)絡(luò)。這其中還有許多因素需要考慮,比如你的數(shù)據(jù)量大小和數(shù)據(jù)結(jié)構(gòu)。
這樣就導(dǎo)致我們?cè)诿鎸?duì)一個(gè)問題時(shí)需要嘗試不同的算法,同時(shí)還要用測(cè)試的數(shù)據(jù)集來(lái)評(píng)估算法的性能,選出最合適的那一種。
當(dāng)然,你所選的算法必須適合你的問題,就像當(dāng)我們需要清理房子的時(shí)候,可以使用吸塵器、掃把或拖把,但不會(huì)用鏟子來(lái)挖地。
首要原則
然而,在為監(jiān)督式機(jī)器學(xué)習(xí)創(chuàng)建預(yù)測(cè)模型之前,要記得一條最重要的原則:
機(jī)器學(xué)習(xí)算法可以看做學(xué)習(xí)一種目標(biāo)函數(shù)(f),該函數(shù)是輸入變量(X)到輸出變量(Y)的完美映射:Y=f(X)
這是一個(gè)通用的學(xué)習(xí)任務(wù),我們希望用新輸入的變量(X)能輸出預(yù)測(cè)變量(Y)。我們不知道函數(shù)(f)是什么樣子的,或者什么形式的。如果我們知道的話就直接使用了,不需要再用機(jī)器學(xué)習(xí)算法從大量的數(shù)據(jù)中學(xué)習(xí)它。
最常見的機(jī)器學(xué)習(xí)類型是學(xué)習(xí)映射Y=f(X),用它來(lái)預(yù)測(cè)Y的值。這被稱為預(yù)測(cè)建?;蝾A(yù)測(cè)分析,我們的目標(biāo)是做出最準(zhǔn)確的預(yù)測(cè)。
對(duì)于想了解機(jī)器學(xué)習(xí)基礎(chǔ)知識(shí)的新手,以下是數(shù)據(jù)科學(xué)家最常用的10種機(jī)器學(xué)習(xí)算法。
1.線性回歸
線性回歸也許是數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中最知名、最好理解的算法了吧。
預(yù)測(cè)建模主要關(guān)注的是,以可解釋性為基礎(chǔ),將模型的誤差降到最小并盡量作出最準(zhǔn)確的預(yù)測(cè)。我們將借鑒、多次使用甚至“竊取”包括數(shù)據(jù)統(tǒng)計(jì)在內(nèi)的多個(gè)不同領(lǐng)域的算法,從而達(dá)到這一目的。
線性回歸用方程表示,通過找到作為輸入變量的系數(shù)(B)的特定權(quán)重來(lái)描述輸入變量(x)和輸出變量(y)之間的一條線。
線性回歸
例如:y=B0 + B1*x
給定x的值,我們將預(yù)測(cè)y的值。同時(shí)線性回歸學(xué)習(xí)算法的目標(biāo)是找到系數(shù)B0和B1的值。
想從數(shù)據(jù)中建立線性回歸模型,可以用不同的方法。例如用于最小二乘和梯度下降優(yōu)化的線性代數(shù)。
線性回歸已經(jīng)存在了200多年,并被廣泛研究。通常人們會(huì)去除非常相似或相關(guān)的變量,并從數(shù)據(jù)中去除噪聲。對(duì)于新手來(lái)說,這是一個(gè)簡(jiǎn)單易上手的技術(shù)。
2.邏輯回歸
邏輯回歸是機(jī)器學(xué)習(xí)從統(tǒng)計(jì)領(lǐng)域借鑒的另一個(gè)技術(shù),這是二元分類問題的首選算法。
邏輯回歸與線性回歸類似的一點(diǎn)是,目標(biāo)都是找出每個(gè)輸入變量加權(quán)的系數(shù)值。不同的是,輸出的預(yù)測(cè)結(jié)果需要用非線性的邏輯函數(shù)進(jìn)行變換。
邏輯函數(shù)看起來(lái)像一個(gè)大寫的S,它可以將任何值轉(zhuǎn)化成一個(gè)0到1的數(shù)值。因此,我們可以將這一規(guī)則應(yīng)用于邏輯函數(shù)的輸出,將值限定在0到1之間(例如,IF less than 0.5 then output 1),這樣就可以預(yù)測(cè)一個(gè)組值。
邏輯回歸
根據(jù)模型學(xué)習(xí)的方法,邏輯回歸生成的預(yù)測(cè)也可以用作0到1之間的給定數(shù)據(jù)的概率。這對(duì)于需要給出更多原理做出預(yù)測(cè)的問題很有用。
像線性回歸一樣,邏輯回歸在刪除與輸出變量無(wú)關(guān)的屬性以及非常相似的屬性之后,表現(xiàn)得效果更好。對(duì)于二元分類問題,這一模型很容易學(xué)習(xí),并且效率也很高。
3.線性判別分析(LDA)
線性回歸通常只適用于二元分類問題。如果類別超過兩個(gè),你可能就需要線性判別分析算法來(lái)解決分類問題了。
LDA的表示方法非常直接。它由數(shù)據(jù)的統(tǒng)計(jì)屬性構(gòu)成,為每個(gè)類別計(jì)算。對(duì)于單個(gè)輸入變量,這包括:
每一類別的平均值; 計(jì)算所有類別的差異
線性判別分析
通過計(jì)算每個(gè)類別的識(shí)別值(discriminate value)并對(duì)具有最大值的類別進(jìn)行預(yù)測(cè),從而做出最終的預(yù)測(cè),該技術(shù)假定數(shù)據(jù)的分布遵循高斯分布(鐘形曲線),因此在開始分析之前,需要移除數(shù)據(jù)中的異常值。對(duì)于分類預(yù)測(cè)建模問題來(lái)說,這是一種簡(jiǎn)單而強(qiáng)大的方法。
4.分類與回歸樹
決策樹是機(jī)器學(xué)習(xí)預(yù)測(cè)建模的重要算法。
決策樹的模型是二叉樹,這是利用算法和數(shù)據(jù)結(jié)構(gòu)構(gòu)建的二叉樹,每個(gè)節(jié)點(diǎn)代表一個(gè)輸入變量(x)和該變量上的一個(gè)分裂點(diǎn)(假定變量是數(shù)字)。
決策樹
樹葉的節(jié)點(diǎn)包含用于進(jìn)行預(yù)測(cè)的輸出變量(y)。預(yù)測(cè)是從樹叉開始,直到到達(dá)樹葉節(jié)點(diǎn)并輸出該節(jié)點(diǎn)的組值。
決策樹學(xué)習(xí)速度快,作出預(yù)測(cè)的速度也快。它們能解決許多領(lǐng)域的問題,所以無(wú)需對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。
5.樸素貝葉斯
樸素貝葉斯雖然簡(jiǎn)潔,但對(duì)預(yù)測(cè)建模來(lái)說是一種非常強(qiáng)大的算法。
該模型由兩種類型的概率組成,可以從您的訓(xùn)練數(shù)據(jù)中直接計(jì)算:1)每個(gè)類別的概率;2) 給定每個(gè)x值的每個(gè)類別的條件概率。計(jì)算出來(lái)后,概率模型就能用貝葉斯定理對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)。當(dāng)你的數(shù)據(jù)是實(shí)值時(shí),通常假設(shè)一個(gè)高斯分布,這樣你可以很容易地預(yù)估這些概率。
樸素貝葉斯之所以被稱為樸素,是因?yàn)樗俣總€(gè)輸入的變量都是獨(dú)立的。這個(gè)假設(shè)對(duì)于真實(shí)的數(shù)據(jù)是不實(shí)際的,但是,這種技術(shù)在大范圍復(fù)雜的問題上非常有效。
6.K-近鄰算法
KNN算法也很簡(jiǎn)單有效。模型就是用整個(gè)訓(xùn)練數(shù)據(jù)集表示的,非常簡(jiǎn)單吧!
通過在整個(gè)數(shù)據(jù)集中搜索K個(gè)最相似的樣本(鄰居),將它們匯總后輸出變量來(lái)預(yù)測(cè)新的數(shù)據(jù)點(diǎn)。對(duì)于回歸問題,這可能是平均輸出變量;對(duì)分類問題,這可能是類值的眾數(shù)(最常見的值)。
重點(diǎn)在于如何確定數(shù)據(jù)樣本之間的相似性。如果你的數(shù)據(jù)規(guī)模相同(例如都以英寸為單位),最簡(jiǎn)單的方法就是使用歐幾里得距離,如果是數(shù)字,你可以直接根據(jù)每個(gè)輸入變量之間的差異進(jìn)行計(jì)算。
K-近鄰算法
KNN可能需要大量?jī)?nèi)存或空間來(lái)存儲(chǔ)所有的數(shù)據(jù),但是只有在需要預(yù)測(cè)時(shí)才會(huì)工作(或?qū)W習(xí))。您也可以隨時(shí)更新和管理訓(xùn)練樣本,以保證預(yù)測(cè)的準(zhǔn)確性。
距離或緊密性可能會(huì)在有大量的輸入變量時(shí)崩潰,這會(huì)導(dǎo)致算法性能下降,這被稱為維度的詛咒。所以建議只使用那些與預(yù)測(cè)輸出變量最相關(guān)的輸入變量。
7.學(xué)習(xí)向量量化(learning vector quantization)
K-近鄰算法的缺點(diǎn)之一是你需要利用整個(gè)數(shù)據(jù)集進(jìn)行訓(xùn)練,而學(xué)習(xí)向量量化算法(LVQ)是一種人工神經(jīng)網(wǎng)絡(luò)算法,你可以選擇訓(xùn)練樣本,并學(xué)習(xí)這些樣本應(yīng)該是什么樣的。
LVQ
LVQ是由向量表的集合表示,這些在開始時(shí)是隨機(jī)選擇的,在學(xué)習(xí)過程中數(shù)次迭代后對(duì)訓(xùn)練數(shù)據(jù)集做出最佳總結(jié)。在學(xué)習(xí)之后,這些向量表可以用來(lái)做類似K-緊鄰算法一樣的預(yù)測(cè)。通過計(jì)算每個(gè)向量編碼表和新數(shù)據(jù)樣本之間的距離來(lái)找到最近鄰居,然后返回最佳匹配單元的類值(或在回歸情況下的實(shí)際值)作為預(yù)測(cè)。如果你重新調(diào)整數(shù)據(jù)使其具有相同的范圍(如0到1之間),則可以獲得最佳結(jié)果。
如果您發(fā)現(xiàn)KNN能在你的數(shù)據(jù)集上表現(xiàn)良好,可以嘗試使用LVQ來(lái)減少存儲(chǔ)整個(gè)數(shù)據(jù)集的內(nèi)存要求。
8.支持向量機(jī)
支持向量機(jī)(SVM)也許是最受歡迎的機(jī)器學(xué)習(xí)算法之一。
超平面是分割輸入變量空間的線。在SVM中,超平面能以最佳比例將輸入變量空間的點(diǎn)以它們的類別分開。在二維空間中,你可以將其視為一條線,假設(shè)輸入的所有點(diǎn)都可以被這條線完全分開。SVM學(xué)習(xí)算法可以找到能夠被超平面完美分割類別的系數(shù)。
SVM
超平面和最近數(shù)據(jù)點(diǎn)之間的距離被稱為間隔(margin)。能夠?qū)深惙珠_的最佳或最優(yōu)的超平面往往是有最大間隔的線,只有這些點(diǎn)與超平面的定義和分類器的構(gòu)造有關(guān),這些點(diǎn)就是支持向量。它們支持或定義了超平面,在實(shí)踐中,可以使用優(yōu)化算法來(lái)找到最大化間隔的系數(shù)的值。
9.Bagging和隨機(jī)森林
隨機(jī)森林是目前最流行、最強(qiáng)大的機(jī)器學(xué)習(xí)算法之一,它是一種由Bootstrap或Bagging集成的機(jī)器學(xué)習(xí)算法。
Bootstrap是從數(shù)據(jù)樣本中估算數(shù)量的強(qiáng)大的統(tǒng)計(jì)方法,就像一種平均值。你需要從你的數(shù)據(jù)中抽取大量樣本,計(jì)算平均值,然后再計(jì)算所有平均值的平均值,從而更好地估計(jì)真實(shí)平均值。
在Bagging中,可以用上述相同的方法估計(jì)整個(gè)數(shù)據(jù)模型,最常見的是決策樹。選取訓(xùn)練數(shù)據(jù)中的多個(gè)樣本,然后構(gòu)建模型。當(dāng)你需要預(yù)測(cè)新數(shù)據(jù)時(shí),每個(gè)模型都會(huì)做出預(yù)測(cè),取平均值后以便更好地估計(jì)真實(shí)輸出值。
隨機(jī)森林是對(duì)以上方法的調(diào)整,在隨機(jī)森林中,決策樹是這樣創(chuàng)建的,不選擇最優(yōu)分割點(diǎn),而是通過引入隨機(jī)性選擇次優(yōu)分割點(diǎn)。因此,針對(duì)每個(gè)數(shù)據(jù)樣本創(chuàng)建的模型與其它方式相比會(huì)有所不同,但仍然非常精確,結(jié)合預(yù)測(cè)的值可以更好地估計(jì)真實(shí)的潛在輸出價(jià)值。
如果較大方差的算法(如決策樹)能獲得較好結(jié)果,那么通??梢酝ㄟ^bagging獲得更好的結(jié)果。
10.Boosting和AdaBoost
Boosting是一種集成技術(shù),它試圖從一些弱分類器中創(chuàng)建一個(gè)強(qiáng)分類器。通過從訓(xùn)練數(shù)據(jù)中構(gòu)建模型,然后創(chuàng)建第二個(gè)模型來(lái)嘗試糾正第一個(gè)模型的錯(cuò)誤,直到模型能完美預(yù)測(cè)訓(xùn)練數(shù)據(jù)集或已經(jīng)添加了大量模型后,才會(huì)停止創(chuàng)建模型。
AdaBoost是為二元分類問題開發(fā)的第一個(gè)真正成功的boosting算法,這可以幫助我們更好地理解boosting?,F(xiàn)在大多boosting方法都建立在AdaBoost上,最出名的就是隨機(jī)梯度上升。
AdaBoost與短決策樹一起使用,在第一棵樹創(chuàng)建之后,要使用每個(gè)訓(xùn)練樣本上的樹的性能衡量下一棵樹應(yīng)該對(duì)每個(gè)訓(xùn)練樣本分配多少注意力。難以預(yù)測(cè)的訓(xùn)練數(shù)據(jù)被分配的權(quán)重高,易于預(yù)測(cè)的樣本權(quán)重則少。依次創(chuàng)建模型后,每個(gè)模型都會(huì)在訓(xùn)練樣本上更新權(quán)重。所有樹在建立之后,將會(huì)對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè),每棵樹的性能由它們?cè)谟?xùn)練數(shù)據(jù)上的表現(xiàn)進(jìn)行權(quán)衡。
由于大量的注意力都放在了糾正算法的錯(cuò)誤上,所以清除異常數(shù)據(jù)是非常重要的。
結(jié)語(yǔ)
初學(xué)者在面對(duì)各種各樣機(jī)器學(xué)習(xí)算法時(shí)最常問的問題是:“我該使用那種算法?”回答這一問題要考慮許多因素,包括數(shù)據(jù)的尺寸、質(zhì)量和性質(zhì)、可用的計(jì)算時(shí)間、任務(wù)的緊迫性以及你想用數(shù)據(jù)做什么。
即使是一位經(jīng)驗(yàn)豐富的數(shù)據(jù)科學(xué)家,他也無(wú)法憑空判斷哪種算法表現(xiàn)得最好,一定是要嘗試之后才能下結(jié)論。除了上述10種算法外,還有其他很多機(jī)器學(xué)習(xí)算法,如果你是新手的話,這篇文章可以作為你的入門教程。
-
算法
+關(guān)注
關(guān)注
23文章
4587瀏覽量
92501 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8349瀏覽量
132312 -
決策樹
+關(guān)注
關(guān)注
2文章
96瀏覽量
13534 -
線性回歸
+關(guān)注
關(guān)注
0文章
41瀏覽量
4292
原文標(biāo)題:最適合機(jī)器學(xué)習(xí)新手的10種算法
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論