機(jī)器學(xué)習(xí)新手十大算法之旅

姓名:謝童? 學(xué)號(hào):16020188008? 轉(zhuǎn)自微信公眾號(hào)? Bigquant

在機(jī)器學(xué)習(xí)中,有一個(gè)叫做 “ 無(wú)免費(fèi)午餐 ” 的定理(NFL)。簡(jiǎn)而言之,我們無(wú)法找到一個(gè)放之四海而皆準(zhǔn)的最優(yōu)方案,這一點(diǎn)對(duì)于監(jiān)督學(xué)習(xí)(即預(yù)測(cè)建模)尤為重要。

例如,你不能說(shuō)神經(jīng)網(wǎng)絡(luò)總是比決策樹(shù)好,反之亦然。因?yàn)槠渲杏泻芏嘁蛩卦谄鹱饔茫热鐢?shù)據(jù)集的大小和結(jié)構(gòu)。

因此,您應(yīng)該針對(duì)您的問(wèn)題嘗試多種不同的算法,同時(shí),保留一組數(shù)據(jù),即“測(cè)試集”來(lái)評(píng)估性能并選擇優(yōu)勝者。

當(dāng)然,您嘗試的算法必須適合您的問(wèn)題,所以需要選擇正確的機(jī)器學(xué)習(xí)任務(wù)。打個(gè)比方,如果你需要打掃房子,你可能會(huì)用吸塵器、掃帚或拖把,但你不會(huì)拿出鏟子開(kāi)始挖掘。

大原則

在所有監(jiān)督機(jī)器學(xué)習(xí)算法的基礎(chǔ)上,有一個(gè)共同的原則。

機(jī)器學(xué)習(xí)算法被描述為學(xué)習(xí)一個(gè)目標(biāo)函數(shù)(f),它最好地將輸入變量(X)映射到輸出變量(Y): Y = f(X)

這是一項(xiàng)通用的學(xué)習(xí)任務(wù),即我們想在給出新的輸入變量(X)后預(yù)測(cè)(Y),但我們不知道函數(shù)(f)是什么樣子或者它的形式,不然我們就會(huì)直接使用它,而不需要使用機(jī)器學(xué)習(xí)算法從數(shù)據(jù)中學(xué)習(xí)了。

最常見(jiàn)的機(jī)器學(xué)習(xí)類型是學(xué)習(xí)映射Y = f(X)來(lái)為新的X做出Y的預(yù)測(cè)。這被稱為預(yù)測(cè)建模或預(yù)測(cè)分析,我們的目標(biāo)是使最準(zhǔn)確的預(yù)測(cè)成為可能。

對(duì)于渴望了解機(jī)器學(xué)習(xí)基本原理的機(jī)器學(xué)習(xí)新手來(lái)說(shuō),這里有一個(gè)關(guān)于數(shù)據(jù)科學(xué)家使用的10種機(jī)器學(xué)習(xí)算法的鳥(niǎo)瞰。

1.線性回歸

線性回歸可能是統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)中最著名和最容易理解的算法之一。

預(yù)測(cè)建模主要關(guān)注的是最小化模型的誤差,以犧牲可解釋性為代價(jià)使最準(zhǔn)確的預(yù)測(cè)成為可能。我們借鑒各種的領(lǐng)域的算法來(lái)處理統(tǒng)計(jì)數(shù)據(jù)以達(dá)到預(yù)測(cè)目的。

線性回歸的表示是一個(gè)方程,它描述了一條線,通過(guò)尋找輸入變量系數(shù)(B)的特定權(quán)重,擬合輸入變量(x)和輸出變量(y)之間的關(guān)系。

例如:y = B0 + B1 * x

我們將在給定輸入x的情況下預(yù)測(cè)y,線性回歸學(xué)習(xí)算法的目標(biāo)是找到系數(shù)B0和B1的值。 可以使用不同的技術(shù)從數(shù)據(jù)中學(xué)習(xí)線性回歸模型,如普通最小二乘的線性代數(shù)解和梯度下降優(yōu)化。

線性回歸已經(jīng)有200多年的歷史了,并被廣泛研究。在使用此技術(shù)時(shí),一些很好的經(jīng)驗(yàn)法則是刪除非常相似(相關(guān))的變量,并盡可能從數(shù)據(jù)中刪除噪聲。這是一種快速簡(jiǎn)單的技術(shù),也是一種很好的算法。

2.邏輯回歸

邏輯回歸是機(jī)器學(xué)習(xí)在統(tǒng)計(jì)學(xué)領(lǐng)域借鑒的另一種技術(shù)。它是二進(jìn)制分類問(wèn)題(具有兩個(gè)類值的問(wèn)題)的首選方法。

邏輯回歸就像線性回歸,目標(biāo)是找到每個(gè)輸入變量的系數(shù)的值。與線性回歸不同的是,輸出的預(yù)測(cè)是用一個(gè)叫做logistic函數(shù)的非線性函數(shù)進(jìn)行轉(zhuǎn)換。

邏輯函數(shù)看起來(lái)像一個(gè)大S,它會(huì)將任意值轉(zhuǎn)換到0到1的范圍。這很有用,因?yàn)槲覀兛梢詫⒁粋€(gè)規(guī)則應(yīng)用于邏輯函數(shù)的輸出以將值壓縮到0和1(例如IF小于0.5然后輸出0)并預(yù)測(cè)一個(gè)類值。

由于模型的學(xué)習(xí)方式,邏輯回歸的預(yù)測(cè)也可以作為屬于0類或1類的給定數(shù)據(jù)實(shí)例的概率。這對(duì)于需要為預(yù)測(cè)提供概率解釋的問(wèn)題很有用。

與線性回歸一樣,當(dāng)您刪除與輸出變量無(wú)關(guān)的屬性以及彼此非常相似(相關(guān))的屬性時(shí),邏輯回歸確實(shí)更有效。這是一個(gè)快速有效地學(xué)習(xí)二分類問(wèn)題的模型。

3.線性判別分析

邏輯回歸是一種傳統(tǒng)上僅局限于兩類分類問(wèn)題的分類算法。如果你有兩個(gè)以上的類,那么線性判別分析算法是首選的線性分類技術(shù)。

LDA的表示非常直接。它包括數(shù)據(jù)的統(tǒng)計(jì)屬性,為每個(gè)類計(jì)算。對(duì)于單個(gè)輸入變量,包括:

每個(gè)類別的均值

每個(gè)類別的方差

通過(guò)計(jì)算每個(gè)類的判別值,并對(duì)具有最大值的類進(jìn)行預(yù)測(cè)。該技術(shù)假定數(shù)據(jù)具有高斯分布(鐘形曲線),因此最好事先從數(shù)據(jù)中刪除異常值。這是一種簡(jiǎn)單而有效的分類預(yù)測(cè)建模方法。

4.分類和回歸樹(shù)

決策樹(shù)是一種重要的預(yù)測(cè)建模算法。

決策樹(shù)模型用二叉樹(shù)來(lái)表示,二叉樹(shù)來(lái)自于算法和數(shù)據(jù)結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)代表一個(gè)輸入變量(x)和該變量上的分裂點(diǎn)(假設(shè)變量是數(shù)值)。

樹(shù)的葉節(jié)點(diǎn)包含一個(gè)輸出變量(y),用于進(jìn)行預(yù)測(cè)。過(guò)程是遍歷樹(shù)的分叉直到到達(dá)葉節(jié)點(diǎn)并在該葉節(jié)點(diǎn)上輸出類值。

樹(shù)的學(xué)習(xí)速度很快,預(yù)測(cè)的速度也很快。它們通常適用于廣泛的問(wèn)題,不需要對(duì)數(shù)據(jù)進(jìn)行任何特殊的準(zhǔn)備。

5.樸素貝葉斯

樸素貝葉斯(Naive Bayes)是一種簡(jiǎn)單但功能驚人的預(yù)測(cè)建模算法。

該模型由兩種可以直接從訓(xùn)練數(shù)據(jù)中計(jì)算的概率組成: 1) 每個(gè)類的概率; 2) 給定每個(gè)x值后每個(gè)類的條件概率。?

一旦計(jì)算出概率模型,就可以用貝葉斯定理對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)。當(dāng)你的數(shù)據(jù)是實(shí)值時(shí),通常假設(shè)一個(gè)高斯分布(鐘形曲線),這樣你就可以很容易地估計(jì)這些概率。

樸素貝葉斯之所以稱“樸素”,是因?yàn)樗僭O(shè)每個(gè)輸入變量是獨(dú)立的。這對(duì)于真實(shí)數(shù)據(jù)來(lái)說(shuō)是一個(gè)很強(qiáng)的、不切實(shí)際的假設(shè),然而,該技術(shù)對(duì)于大量復(fù)雜問(wèn)題非常有效。

6.K近鄰

KNN算法非常簡(jiǎn)單和有效。通過(guò)對(duì)K個(gè)最相似的實(shí)例(鄰居)對(duì)整個(gè)訓(xùn)練集進(jìn)行搜索并匯總這些K個(gè)實(shí)例的輸出變量,可以對(duì)一個(gè)新的數(shù)據(jù)點(diǎn)進(jìn)行預(yù)測(cè)。

對(duì)于回歸問(wèn)題,它可能是平均輸出變量,對(duì)于分類問(wèn)題,可能是模型(或最常見(jiàn))類值。

關(guān)鍵在于如何確定數(shù)據(jù)實(shí)例之間的相似性。如果您的屬性都具有相同的比例(例如,以英寸為單位),最簡(jiǎn)單的技術(shù)是使用歐幾里得距離,您可以根據(jù)每個(gè)輸入變量之間的差異直接計(jì)算該數(shù)字。

KNN可能需要大量?jī)?nèi)存或空間來(lái)存儲(chǔ)所有數(shù)據(jù),但只在需要預(yù)測(cè)時(shí)才進(jìn)行計(jì)算(或?qū)W習(xí))。您還可以隨著時(shí)間的推移更新和策劃您的訓(xùn)練實(shí)例,以保持預(yù)測(cè)準(zhǔn)確。

當(dāng)維數(shù)提高時(shí),空間的體積提高得很快,因而可用數(shù)據(jù)變得很稀疏,這會(huì)對(duì)算法的性能產(chǎn)生負(fù)面影響。這被稱為維度災(zāi)難。故建議您只使用那些與預(yù)測(cè)輸出變量最相關(guān)的輸入變量。

7.學(xué)習(xí)矢量量化

k近鄰的一個(gè)缺點(diǎn)是您需要掛載整個(gè)訓(xùn)練數(shù)據(jù)集。學(xué)習(xí)向量量化算法(或簡(jiǎn)稱LVQ)是一種人工神經(jīng)網(wǎng)絡(luò)算法,它允許您選擇要掛載的訓(xùn)練實(shí)例。

LVQ的表示是一組碼本向量(codebook vector),這些都是在開(kāi)始時(shí)隨機(jī)選擇的,并根據(jù)學(xué)習(xí)算法的多次迭代對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行最佳的總結(jié)。

在學(xué)習(xí)之后,碼本向量可以用來(lái)做出像k近鄰那樣的預(yù)測(cè)。通過(guò)計(jì)算每個(gè)碼本向量和新數(shù)據(jù)實(shí)例之間的距離,可以找到最相似的鄰(最佳匹配的碼本向量)。

然后返回最佳匹配單元的類值(或回歸時(shí)的真實(shí)值)作為預(yù)測(cè)。如果您重新縮放數(shù)據(jù),使其具有相同的范圍(如0到1之間),則可獲得最佳結(jié)果。

如果您發(fā)現(xiàn)KNN在您的數(shù)據(jù)集上表現(xiàn)良好,請(qǐng)嘗試使用LVQ來(lái)減少存儲(chǔ)整個(gè)訓(xùn)練數(shù)據(jù)集的內(nèi)存需求。

8.支持向量機(jī)

支持向量機(jī)(Support Vector Machines)可能是最流行和最受關(guān)注的機(jī)器學(xué)習(xí)算法之一。

超平面是分割輸入變量空間的線。在SVM中,通過(guò)選擇一個(gè)超平面,并根據(jù)輸入變量空間中的類(類0或類1),來(lái)最好地分離輸入變量空間中的點(diǎn)。

在二維中,你可以把它想象成一條直線,并假設(shè)所有的輸入點(diǎn)都可以被這條直線分開(kāi)。

支持向量機(jī)學(xué)習(xí)算法通過(guò)超平面的方法,找出使得類間達(dá)到最佳分離的系數(shù)。

超平面與最近的數(shù)據(jù)點(diǎn)之間的距離稱為邊距,能夠?qū)蓚€(gè)類分離得最好的或最優(yōu)的超平面是具有最大邊距的那條線,它是由幾個(gè)關(guān)鍵點(diǎn)決定的,這些點(diǎn)與定義超平面和構(gòu)造分類器直接相關(guān),被稱為支持向量。

SVM可能是最強(qiáng)大的開(kāi)箱即用分類器之一,非常值得在您的數(shù)據(jù)集中進(jìn)行這樣的嘗試。

9.裝袋和隨機(jī)森林

隨機(jī)森林是最流行和最強(qiáng)大的機(jī)器學(xué)習(xí)算法之一。它是一種稱為引導(dǎo)聚集算法(Bootstrap Aggregation)或裝袋(Bagging)的集成機(jī)器學(xué)習(xí)算法。

Bootstrap是一種強(qiáng)大的統(tǒng)計(jì)方法,比如求平均值,您可以從數(shù)據(jù)樣本中均勻有放回地取出一部分求平均值,然后把得到的平均值再求一個(gè)平均,這樣可以更好地估計(jì)真實(shí)平均值。

在裝袋(Bagging)中,用到同樣的方法,裝袋法并不僅適用于決策樹(shù),但對(duì)決策樹(shù)尤其有用,從訓(xùn)練數(shù)據(jù)中抽多個(gè)樣本,然后為每個(gè)數(shù)據(jù)樣本構(gòu)建模型。

當(dāng)您需要對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)時(shí),每個(gè)模型都會(huì)進(jìn)行預(yù)測(cè),并對(duì)預(yù)測(cè)進(jìn)行平均,以便更好地估計(jì)真實(shí)的輸出值。

隨機(jī)森林是這種方法的一個(gè)改進(jìn),在這種方法中,創(chuàng)建決策樹(shù),以便通過(guò)引入隨機(jī)性來(lái)進(jìn)行次優(yōu)分割,而不是選擇最佳分割點(diǎn)。

因此,為每個(gè)數(shù)據(jù)樣本創(chuàng)建的模型與其他情況下的模型更加不同,但仍然精確。將預(yù)測(cè)結(jié)果結(jié)合起來(lái),可以更好地估計(jì)潛在結(jié)果的真實(shí)值。

如果您使用具有高方差的算法(如決策樹(shù))得到不錯(cuò)的結(jié)果,那么您通過(guò)裝袋算法通常可以得到更好的結(jié)果。

10.提升和自適應(yīng)增強(qiáng)

Boosting是一種集成技術(shù),試圖從多個(gè)弱分類器中創(chuàng)建強(qiáng)分類器。通過(guò)從訓(xùn)練數(shù)據(jù)構(gòu)建一個(gè)模型,然后創(chuàng)建第二個(gè)模型試圖糾正第一個(gè)模型中的錯(cuò)誤。

不斷添加模型,直到訓(xùn)練集被完美地預(yù)測(cè)或者添加到最大數(shù)量。

AdaBoost是第一個(gè)為二分類開(kāi)發(fā)的真正成功的提升算法。

現(xiàn)代boosting方法建立在AdaBoost上,最著名的是隨機(jī)梯度提升機(jī)(stochastic gradient boosting machines)。

AdaBoost用于短決策樹(shù)。創(chuàng)建第一棵樹(shù)之后,使用樹(shù)在每個(gè)訓(xùn)練實(shí)例上的性能來(lái)得到一個(gè)權(quán)重,決定下一棵樹(shù)對(duì)每個(gè)訓(xùn)練實(shí)例的注意力。

難以預(yù)測(cè)的訓(xùn)練數(shù)據(jù)被賦予更多權(quán)重,而易于預(yù)測(cè)的實(shí)例被賦予更少的權(quán)重。

模型是一個(gè)接一個(gè)地順序創(chuàng)建的,每個(gè)模型更新訓(xùn)練實(shí)例上的權(quán)重,這些權(quán)重影響序列中下一個(gè)樹(shù)所執(zhí)行的學(xué)習(xí)。構(gòu)建完所有樹(shù)之后,將對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)。

因?yàn)橹赜谛拚惴ǖ腻e(cuò)誤,所以重要的是提前清洗好數(shù)據(jù),去掉異常值。

最后

當(dāng)一個(gè)初學(xué)者面對(duì)各種各樣的機(jī)器學(xué)習(xí)算法時(shí),一個(gè)典型的問(wèn)題是 “ 我應(yīng)該使用哪種算法? ” 問(wèn)題的答案因許多因素而異,包括:(1) 數(shù)據(jù)的大小、質(zhì)量和性質(zhì);(2) 可用計(jì)算時(shí)間;(3) 任務(wù)的緊迫性;(4) 你想對(duì)數(shù)據(jù)做什么。

即使是經(jīng)驗(yàn)豐富的數(shù)據(jù)科學(xué)家,在嘗試不同的算法之前,也無(wú)法判斷哪種算法的性能最好。雖然有許多其他的機(jī)器學(xué)習(xí)算法,但以上這些是最流行的。

如果你是機(jī)器學(xué)習(xí)的新手,開(kāi)始嘗試以上的算法將是一個(gè)很好的起點(diǎn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 機(jī)器學(xué)習(xí)是做NLP和計(jì)算機(jī)視覺(jué)這類應(yīng)用算法的基礎(chǔ),雖然現(xiàn)在深度學(xué)習(xí)模型大行其道,但是懂一些傳統(tǒng)算法的原理和它們之間...
    在河之簡(jiǎn)閱讀 20,941評(píng)論 4 65
  • 0.前言## 機(jī)器學(xué)習(xí)[Machine Learning]在當(dāng)今社會(huì)的火熱程度有目共睹,自己也一直想寫一下自己對(duì)M...
    城市中迷途小書童閱讀 1,234評(píng)論 0 7
  • 文|王曉彤 “夢(mèng)里回到唐朝,憶昔開(kāi)元喧盛日。天下朋友結(jié)交情,眼界無(wú)窮世界寬”。五一小長(zhǎng)假,又回到了我日思夜念的故鄉(xiāng)...
    彤話坊閱讀 883評(píng)論 4 3
  • 今天忽然的雨,剛好站在外頭,還好頭頂有遮雨的鐵皮,不然可真是要成落湯雞。最近總是晚下班的,但還是去了,越接近越是害...
    YSHSKL閱讀 161評(píng)論 0 0
  • OKR 是管理者和團(tuán)隊(duì)每個(gè)季度設(shè)定頗具雄心,可衡量的目標(biāo)的一個(gè)過(guò)程。從谷歌最開(kāi)始創(chuàng)業(yè)的時(shí)候,OKR 就是其領(lǐng)導(dǎo)者管...
    chenpro閱讀 525評(píng)論 0 1

友情鏈接更多精彩內(nèi)容