2021年碼農(nóng)應(yīng)該了解的所有機(jī)器學(xué)習(xí)算法
隨著我對(duì)機(jī)器學(xué)習(xí)的了解的增加,機(jī)器學(xué)習(xí)算法的數(shù)量也在增加! 本文將介紹數(shù)據(jù)科學(xué)界常用的機(jī)器學(xué)習(xí)算法。
請(qǐng)記住,我將比其他更多地詳細(xì)闡述某些算法,因?yàn)槿绻覍?duì)每種算法進(jìn)行了詳盡的解釋,那么本文將與本書一樣長(zhǎng)!我還將嘗試盡量減少本文中的數(shù)學(xué)運(yùn)算量,因?yàn)槲抑肋@對(duì)于那些數(shù)學(xué)上不精通的人來(lái)說(shuō)可能是令人生畏的。相反,我將嘗試對(duì)每個(gè)功能進(jìn)行簡(jiǎn)要概述,并指出一些關(guān)鍵功能。
考慮到這一點(diǎn),我將首先介紹一些更基本的算法,然后再介紹一些較新的算法,例如CatBoost,Gradient Boost和XGBoost。
線性回歸
線性回歸是用于對(duì)因變量和一個(gè)或多個(gè)自變量之間的關(guān)系進(jìn)行建模的最基本算法之一。簡(jiǎn)而言之,它涉及找到代表兩個(gè)或多個(gè)變量的"最佳擬合線"。
最佳擬合線是通過(guò)最小化點(diǎn)與最佳擬合線之間的平方距離來(lái)找到的-這稱為最小化殘差平方和。殘差等于預(yù)測(cè)值減去實(shí)際值。

> Image Created by Author
如果還沒(méi)有意義,請(qǐng)考慮上面的圖片。 將最適合的綠線與紅線進(jìn)行比較,請(qǐng)注意,綠線的垂直線(殘差)比紅線大得多。 這是有道理的,因?yàn)榫G線離這些點(diǎn)太遠(yuǎn)了,根本就不能很好地表示數(shù)據(jù)!
如果您想了解有關(guān)線性回歸背后的數(shù)學(xué)知識(shí)的更多信息,那么我將從Brilliant的解釋開始。
邏輯回歸
Logistic回歸與線性回歸相似,但用于建模離散結(jié)果數(shù)(通常為兩個(gè))的概率。 乍一看,邏輯回歸聽起來(lái)比線性回歸復(fù)雜得多,但實(shí)際上只需要多做一步。
首先,您使用與最適合線性回歸的直線方程式相似的方程式計(jì)算得分。

額外的步驟是將您先前在下面的S型函數(shù)中計(jì)算出的分?jǐn)?shù)提供給您,以便您獲得回報(bào)的可能性。然后可以將此概率轉(zhuǎn)換為二進(jìn)制輸出,即1或0。

為了找到初始方程的權(quán)重以計(jì)算分?jǐn)?shù),使用了諸如梯度下降或最大似然法之類的方法。 由于它不在本文的討論范圍之內(nèi),所以我將不做進(jìn)一步的詳細(xì)介紹,但是現(xiàn)在您知道了它的工作原理!
K最近鄰居

> Image created by author
K近鄰是一個(gè)簡(jiǎn)單的想法。首先,從已分類的數(shù)據(jù)(即紅色和藍(lán)色數(shù)據(jù)點(diǎn))開始。然后,當(dāng)您添加新數(shù)據(jù)點(diǎn)時(shí),可以通過(guò)查看k個(gè)最近的分類點(diǎn)對(duì)其進(jìn)行分類。得票最多的哪個(gè)類別決定將新點(diǎn)分類為什么。
在這種情況下,如果將k設(shè)置為1,則可以看到與灰色樣本最接近的第一個(gè)點(diǎn)是紅色數(shù)據(jù)點(diǎn)。 因此,該點(diǎn)將被分類為紅色。
要記住的一點(diǎn)是,如果k的值設(shè)置得太低,可能會(huì)導(dǎo)致異常值。另一方面,如果k的值設(shè)置得太高,那么它可能會(huì)忽略只有幾個(gè)樣本的類。
樸素貝葉斯
樸素貝葉斯是一種分類算法。 這意味著當(dāng)輸出變量為離散變量時(shí),將使用樸素貝葉斯。
樸素貝葉斯(Naive Bayes)似乎是一個(gè)令人生畏的算法,因?yàn)樗枰邆錀l件概率和貝葉斯定理的初步數(shù)學(xué)知識(shí),但這是一個(gè)非常簡(jiǎn)單且"樸素"的概念,我將盡力舉例說(shuō)明:

> Image Created by Author
假設(shè)我們輸入了有關(guān)天氣特征(外觀,溫度,濕度,大風(fēng))以及是否打過(guò)高爾夫球的數(shù)據(jù)(即最后一欄)。
樸素貝葉斯本質(zhì)上所做的是比較每個(gè)輸入變量與輸出變量中類別之間的比例。可以在下表中顯示。

> Image Created by Author
為了幫助您閱讀本示例,在溫度部分中,打高爾夫球的9天中有2天很熱(即是)。
用數(shù)學(xué)術(shù)語(yǔ),您可以將其表示為打高爾夫球時(shí)很熱的概率。數(shù)學(xué)符號(hào)為P(hot | yes)。這就是條件概率,對(duì)于理解我將要說(shuō)的其余內(nèi)容至關(guān)重要。
掌握了這些信息后,您就可以根據(jù)天氣特征的任意組合預(yù)測(cè)是否要打高爾夫球。
想象一下,我們具有以下特征的新一天:
- 展望:晴天
- 溫度:溫和
- 濕度:正常
- 大風(fēng):假
首先,我們將計(jì)算在給定X,P(y | X)的情況下打高爾夫球的概率,然后計(jì)算在給定X,P(no | X)的情況下您打高爾夫球的概率。
使用上面的圖表,我們可以獲得以下信息:

現(xiàn)在我們可以簡(jiǎn)單地將此信息輸入以下公式:

同樣,您將為P(no | X)完成相同的步驟順序。

由于P(yes | X)> P(no | X),因此您可以預(yù)測(cè)此人會(huì)打高爾夫球,因?yàn)榍熬扒缋?,溫度適中,濕度正常且沒(méi)有大風(fēng)。
這是樸素貝葉斯的精髓!
支持向量機(jī)

> Image created by Author
支持向量機(jī)是一種監(jiān)督分類技術(shù),實(shí)際上可能會(huì)變得非常復(fù)雜,但在最基本的級(jí)別上卻非常直觀。 為了本文的方便,我們將其保持在較高水平。
假設(shè)有兩類數(shù)據(jù)。 支持向量機(jī)將在兩類數(shù)據(jù)之間找到一個(gè)超平面或邊界,以使兩類數(shù)據(jù)之間的余量最大化(請(qǐng)參見上文)。 有許多平面可以將兩個(gè)類別分開,但是只有一個(gè)平面可以使兩個(gè)類別之間的邊距或距離最大化。
如果您想了解支持向量機(jī)背后的數(shù)學(xué)知識(shí),請(qǐng)查看此系列文章。
決策樹

> Image created by author
隨機(jī)森林
在理解隨機(jī)森林之前,您需要了解以下兩個(gè)術(shù)語(yǔ):
- 集成學(xué)習(xí)是一種結(jié)合使用多種學(xué)習(xí)算法的方法。這樣做的目的是,與單獨(dú)使用單個(gè)算法相比,它可以實(shí)現(xiàn)更高的預(yù)測(cè)性能。
- 自舉采樣是一種重采樣方法,該方法使用隨機(jī)采樣進(jìn)行替換。 聽起來(lái)很復(fù)雜,但是當(dāng)我說(shuō)它非常簡(jiǎn)單時(shí),請(qǐng)相信我-在此處了解更多信息。
- 當(dāng)您使用自舉數(shù)據(jù)集的匯總來(lái)做決定時(shí),請(qǐng)進(jìn)行裝袋–我在該主題上撰寫了一篇文章,因此,如果這樣做不完全有意義,請(qǐng)隨時(shí)在此處查看。
現(xiàn)在您已經(jīng)了解了這些術(shù)語(yǔ),讓我們深入研究它。
隨機(jī)森林是一種基于決策樹的整體學(xué)習(xí)技術(shù)。 隨機(jī)森林涉及使用原始數(shù)據(jù)的自舉數(shù)據(jù)集創(chuàng)建多個(gè)決策樹,并在決策樹的每個(gè)步驟中隨機(jī)選擇變量的子集。 然后,模型選擇每個(gè)決策樹的所有預(yù)測(cè)的模式(裝袋)。 這有什么意義? 通過(guò)依靠"多數(shù)勝利"模型,它降低了單個(gè)樹出錯(cuò)的風(fēng)險(xiǎn)。

> Image Created by author
例如,如果我們創(chuàng)建一個(gè)決策樹,第三個(gè)決策樹,它將預(yù)測(cè)0。但是,如果我們依靠所有4個(gè)決策樹的模式,則預(yù)測(cè)值為1。這就是隨機(jī)森林的力量!
AdaBoost
AdaBoost或Adaptive Boost也是一種集成算法,它利用打包和增強(qiáng)方法來(lái)開發(fā)增強(qiáng)的預(yù)測(cè)器。
AdaBoost與Random Forests的相似之處在于,預(yù)測(cè)來(lái)自許多決策樹。但是,AdaBoost的獨(dú)特之處在于三個(gè)主要區(qū)別:

> Example of a stump
- 首先,AdaBoost創(chuàng)建了一個(gè)由樹樁而非樹木組成的森林。樹樁是僅由一個(gè)節(jié)點(diǎn)和兩片葉子組成的樹(如上圖所示)。
- 其次,在最終決策(最終預(yù)測(cè))中未對(duì)創(chuàng)建的樹樁加權(quán)平均。產(chǎn)生更多錯(cuò)誤的樹樁在最終決定中將沒(méi)有發(fā)言權(quán)。
- 最后,樹樁的制作順序很重要,因?yàn)槊總€(gè)樹樁的目的都是減少先前樹樁造成的錯(cuò)誤。
從本質(zhì)上講,AdaBoost采取了一種更具迭代性的方法,即從以前的樹樁所犯的錯(cuò)誤中尋求迭代地改進(jìn)。
如果您想了解有關(guān)AdaBoost背后的基礎(chǔ)數(shù)學(xué)的更多信息,請(qǐng)查看我的文章" 5分鐘內(nèi)AdaBoost的數(shù)學(xué)解釋"。
梯度提升
漸變?cè)鰪?qiáng)也是一種集成算法,使用增強(qiáng)方法來(lái)開發(fā)增強(qiáng)型預(yù)測(cè)因子也就不足為奇了。在許多方面,Gradient Boost與AdaBoost相似,但有兩個(gè)主要區(qū)別:
- 與AdaBoost可以構(gòu)建樹樁不同,Gradient Boost可以構(gòu)建通常具有8–32片葉子的樹木。
- 梯度增強(qiáng)將增強(qiáng)問(wèn)題視為優(yōu)化問(wèn)題,它使用損失函數(shù)并嘗試將誤差最小化。 這就是為什么它受梯度下降的啟發(fā)而稱為"梯度增強(qiáng)"的原因。
- 最后,這些樹用于預(yù)測(cè)樣本的殘差(預(yù)測(cè)值減去實(shí)際值)。
盡管最后一點(diǎn)可能令人困惑,但您需要知道的是,Gradient Boost首先要構(gòu)建一棵樹以嘗試擬合數(shù)據(jù),而隨后構(gòu)建的樹則旨在減少殘差(錯(cuò)誤)。它通過(guò)專注于現(xiàn)有學(xué)習(xí)者表現(xiàn)較差的領(lǐng)域來(lái)做到這一點(diǎn),類似于AdaBoost。
XGBoost
XGBoost是當(dāng)今最流行和使用最廣泛的算法之一,因?yàn)樗侨绱藦?qiáng)大。它類似于Gradient Boost,但具有一些使其更強(qiáng)大的額外功能,包括……
- 葉節(jié)點(diǎn)按比例縮小(修剪)—用于改善模型的泛化
- 牛頓加速-提供比梯度下降更直接的最小值,使其更快
- 額外的隨機(jī)化參數(shù)-減少樹之間的相關(guān)性,最終提高整體強(qiáng)度
- 樹木的獨(dú)特懲罰
我強(qiáng)烈建議您觀看StatQuest的視頻,以更詳細(xì)地了解算法的工作原理。
LightGBM
如果您認(rèn)為XGBoost是目前最好的算法,請(qǐng)?jiān)倏紤]一下。 LightGBM是另一種增強(qiáng)算法,已顯示出比XGBoost更快甚至更高的準(zhǔn)確性。
LightGBM的與眾不同之處在于,它使用一種稱為基于梯度的單面采樣(GOSS)的獨(dú)特技術(shù)來(lái)過(guò)濾出數(shù)據(jù)實(shí)例以查找分割值。這與XGBoost不同,后者使用預(yù)排序和基于直方圖的算法來(lái)找到最佳分割。
在這里閱讀更多關(guān)于Light GBM vs XGBoost的信息!
CatBoost
CatBoost是基于梯度下降的另一種算法,具有一些細(xì)微的差異,使其獨(dú)特:
- CatBoost實(shí)現(xiàn)對(duì)稱樹,這有助于減少預(yù)測(cè)時(shí)間,并且默認(rèn)情況下樹深度也較淺(六個(gè))
- CatBoost利用類似于XGBoost具有隨機(jī)參數(shù)的方式的隨機(jī)排列
- 但是,與XGBoost不同,CatBoost使用有序增強(qiáng)和響應(yīng)編碼等概念更優(yōu)雅地處理分類功能
總體而言,使CatBoost如此強(qiáng)大的原因是其低延遲要求,這意味著它比XGBoost快大約八倍。
如果您想更詳細(xì)地了解CatBoost,請(qǐng)查閱本文。
謝謝閱讀!
如果您成功了,那就恭喜!現(xiàn)在,您應(yīng)該對(duì)所有不同的機(jī)器學(xué)習(xí)算法有了更好的了解。
如果您很難理解最后幾種算法,不要灰心–它們不僅更復(fù)雜,而且相對(duì)較新!因此,請(qǐng)繼續(xù)關(guān)注更多資源,這些資源將更深入地應(yīng)用于這些算法。