作者:王抒偉
機(jī)器學(xué)習(xí)中,有一個(gè)稱為“ No Free Lunch ”的定理。簡(jiǎn)單來說,與監(jiān)督學(xué)習(xí)特別相關(guān)的這個(gè)定理,它指出沒有萬能算法,就是用一個(gè)算法能很好地解決每個(gè)問題。
例如,不能說神經(jīng)網(wǎng)絡(luò)總是比決策樹更好,反之亦然。有許多因素在起作用,例如數(shù)據(jù)集的大小和結(jié)構(gòu)。
那么,如果我遇到一個(gè)問題,首先應(yīng)該嘗試多種不同的算法來解決問題,同時(shí)使用保留的“測(cè)試集”數(shù)據(jù)評(píng)估績(jī)效并選擇最優(yōu)的那個(gè)算法,然后GitHub 搜索最優(yōu)代碼修改哈哈哈哈。
當(dāng)然,如果需要打掃房屋,可以使用吸塵器、掃帚或拖把。你不會(huì)用鏟子吧?
所以嘗試的算法必須適合要解決的問題,這才是選擇正確的機(jī)器學(xué)習(xí)任務(wù)的來源。
基礎(chǔ)
有一個(gè)通用原則是所有用于預(yù)測(cè)建模的受監(jiān)督機(jī)器學(xué)習(xí)算法的基礎(chǔ)。
機(jī)器學(xué)習(xí)算法被描述為學(xué)習(xí)目標(biāo)函數(shù)(f),該函數(shù)最好將輸入變量(X)映射到輸出變量(Y):Y = f(X)
這是一個(gè)簡(jiǎn)單的學(xué)習(xí)任務(wù),我們想在給定新的輸入變量(X)的情況下,對(duì)(Y)進(jìn)行預(yù)測(cè)。但是不知道函數(shù)(f)。
機(jī)器學(xué)習(xí)的最常見類型是學(xué)習(xí)映射Y = f(X)可以對(duì)新X預(yù)測(cè)到Y(jié),目標(biāo)是盡可能進(jìn)行最準(zhǔn)確的預(yù)測(cè)。
對(duì)于初入機(jī)器學(xué)習(xí)領(lǐng)域,沒有機(jī)器學(xué)習(xí)基礎(chǔ)知識(shí)的新手,我會(huì)對(duì)常用的十大機(jī)器學(xué)習(xí)算法做簡(jiǎn)單介紹。
1.?線性回歸
線性回歸可能是統(tǒng)計(jì)和機(jī)器學(xué)習(xí)中最著名和最易理解的算法之一。
主要與最小化模型的誤差或做出盡可能準(zhǔn)確的預(yù)測(cè)有關(guān),但以可解釋性為代價(jià)。我們將從許多不同領(lǐng)域(包括統(tǒng)計(jì)數(shù)據(jù))中學(xué)習(xí)。
線性回歸的表示法是一個(gè)方程,該方程通過找到稱為系數(shù)(B),來描述輸入變量(x)與輸出變量(y)之間關(guān)系的線。
例如:y = B0 + B1 * x 臥槽,這不是一次函數(shù)嗎?哈哈
給定輸入x,我們將預(yù)測(cè)y,線性回歸學(xué)習(xí)算法的目標(biāo)是找到系數(shù)B0和B1的值, 例如用于普通最小二乘法和梯度下降優(yōu)化的線性代數(shù)解。
2.?LOGISTIC回歸
邏輯回歸是機(jī)器學(xué)習(xí)從統(tǒng)計(jì)領(lǐng)域“借”的另一種技術(shù)。它是二分類問題(具有兩個(gè)類值的問題)的首選方法。
Logistic回歸類似于線性回歸,因?yàn)槟繕?biāo)是找到權(quán)重每個(gè)輸入變量的系數(shù)的值。與線性回歸不同,輸出的預(yù)測(cè)使用稱為對(duì)數(shù)函數(shù)的非線性函數(shù)進(jìn)行變換。
邏輯函數(shù)看起來像一個(gè)大S,它將任何值轉(zhuǎn)換為0到1的范圍。因?yàn)槲覀兛梢詫⒁?guī)則應(yīng)用于邏輯函數(shù)的輸出為0和1(例如,如果IF小于0.5,則輸出1)并預(yù)測(cè)類別值。
與線性回歸一樣,當(dāng)去除與輸出變量無關(guān)的屬性以及相關(guān)的屬性時(shí),邏輯回歸的效果更好。這是一個(gè)快速學(xué)習(xí)二進(jìn)制分類問題并有效的模型
3.?線性判別分析
Logistic回歸是傳統(tǒng)上僅限于兩類分類問題的分類算法。如果是多分類,則線性判別分析算法(LDA)就是很重要的算法了。
LDA的表示非常簡(jiǎn)單,它由數(shù)據(jù)的統(tǒng)計(jì)屬性組成,這些屬性是針對(duì)每個(gè)類別計(jì)算的。對(duì)于單個(gè)輸入變量,這包括:
每個(gè)類別的平均值。
計(jì)算所有類別的方差
通過為每個(gè)類別計(jì)算一個(gè)區(qū)分值并為具有最大值的類別進(jìn)行預(yù)測(cè)來進(jìn)行預(yù)測(cè)。
該算法的前提是:數(shù)據(jù)具有高斯分布(鐘形曲線),因此最好在操作之前從數(shù)據(jù)中刪除異常值。
4.?分類和回歸樹
決策樹是用于預(yù)測(cè)建模機(jī)器學(xué)習(xí)的重要算法類型。
決策樹模型的表示形式是二叉樹。這是來自算法和數(shù)據(jù)結(jié)構(gòu)的二叉樹,沒有什么花哨的。每個(gè)節(jié)點(diǎn)代表一個(gè)輸入變量(x)和該變量的分割點(diǎn)(假設(shè)變量是數(shù)字)。
樹的葉節(jié)點(diǎn)包含用于進(jìn)行預(yù)測(cè)的輸出變量(y)。通過遍歷樹的拆分直到到達(dá)葉節(jié)點(diǎn)并在該葉節(jié)點(diǎn)輸出類值來進(jìn)行預(yù)測(cè)。
樹學(xué)習(xí)速度很快,做出預(yù)測(cè)的速度也非常快。它們對(duì)于許多問題通常也很準(zhǔn)確,不需要為數(shù)據(jù)做任何特殊預(yù)處理。
5-樸素貝葉斯
樸素貝葉斯(Naive Bayes)是一種簡(jiǎn)單但功能強(qiáng)大的預(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í),通常會(huì)假設(shè)一個(gè)高斯分布(鐘形曲線),以便可以輕松地估計(jì)這些概率。
樸素貝葉斯之所以被稱為樸素,是因?yàn)樗俣總€(gè)輸入變量都是獨(dú)立的。這是一個(gè)很強(qiáng)的假設(shè),對(duì)于真實(shí)數(shù)據(jù)來說是不現(xiàn)實(shí)的,盡管如此,該技術(shù)對(duì)于大量復(fù)雜問題非常有效。
6 - K近鄰
KNN算法非常簡(jiǎn)單且非常有效。KNN的模型表示是整個(gè)訓(xùn)練數(shù)據(jù)集。簡(jiǎn)單吧?
通過搜索整個(gè)訓(xùn)練集中的K個(gè)最相似實(shí)例并匯總這K個(gè)實(shí)例的輸出變量,可以對(duì)新數(shù)據(jù)點(diǎn)進(jìn)行預(yù)測(cè)。
對(duì)于回歸問題,這可能是平均輸出變量,對(duì)于分類問題,這可能是最常見的類別值。
訣竅在于如何確定數(shù)據(jù)實(shí)例之間的相似性。如果您的屬性都具有相同的比例(例如,都是距離數(shù)據(jù)),最簡(jiǎn)單的方法是使用歐幾里得距離,您可以根據(jù)每個(gè)輸入變量之間的差異直接計(jì)算一個(gè)數(shù)字。
KNN可能需要大量?jī)?nèi)存或空間來存儲(chǔ)所有數(shù)據(jù),因?yàn)樗阉袛?shù)據(jù)都遍歷了。您還可以隨著時(shí)間的訓(xùn)練數(shù)據(jù),以保持預(yù)測(cè)的準(zhǔn)確性。
距離或緊密度的概念可能會(huì)分解為非常高的維度(許多輸入變量),這可能會(huì)對(duì)問題的算法性能產(chǎn)生負(fù)面影響。所以對(duì)于數(shù)據(jù)的輸入就至關(guān)重要。
7- 矢量化學(xué)習(xí)
K最近的缺點(diǎn)是需要整個(gè)訓(xùn)練數(shù)據(jù)集。學(xué)習(xí)向量量化算法(簡(jiǎn)稱LVQ)是一種人工神經(jīng)網(wǎng)絡(luò)算法,可讓選擇要需要的訓(xùn)練實(shí)例數(shù)量。
LVQ的表示形式是向量的集合。這些是在最開始開始時(shí)隨機(jī)選擇的,適用于在學(xué)習(xí)算法的多次迭代中最好地總結(jié)訓(xùn)練數(shù)據(jù)集。
學(xué)習(xí)之后,可以像使用K近鄰一樣,使用數(shù)據(jù)進(jìn)行預(yù)測(cè)。通過計(jì)算每個(gè)向量與新數(shù)據(jù)實(shí)例之間的距離,可以找到最相似的數(shù)據(jù)向量(最佳匹配的向量)。然后返回最佳匹配的類值作為預(yù)測(cè)。記得數(shù)據(jù)歸一化,獲得的效果更好。
8-支持向量機(jī)
支持向量機(jī)可能是最受歡迎的機(jī)器學(xué)習(xí)算法之一。
超平面是分割輸入變量空間的線。
在SVM中,選擇一個(gè)超平面以按類別(類別0或類別1)最好地分隔輸入變量空間中的點(diǎn)。
在二維圖中,您可以將其可視化為一條線,并假設(shè)所有輸入點(diǎn)都可以被這條線完全隔開。SVM學(xué)習(xí)算法找到超平面對(duì)類進(jìn)行最佳分離的系數(shù)。
超平面和最近的數(shù)據(jù)點(diǎn)之間的距離稱為邊距。可以將這兩個(gè)類別分開的最佳或最佳超平面是邊距最大的線。
僅這些點(diǎn)與定義超平面和分類器的構(gòu)造有關(guān)。這些點(diǎn)稱為支持向量。
在實(shí)踐中,使用優(yōu)化算法來找到使余量最大化的系數(shù)的值。
SVM可能是功能最強(qiáng)大的即用型分類器之一,使用頻率很高。
9-BAGGING和隨機(jī)森林
隨機(jī)森林是最流行,功能最強(qiáng)大的機(jī)器學(xué)習(xí)算法之一。這是一種稱為Bootstrap聚類或BAGGING的集成機(jī)器學(xué)習(xí)算法。
您需要對(duì)數(shù)據(jù)進(jìn)行大量采樣,計(jì)算平均值,然后對(duì)所有平均值取平均值,以便更好地估算真實(shí)平均值。
在bagging中,使用相同的方法,但用于估計(jì)整個(gè)統(tǒng)計(jì)模型(最常見的是決策樹)。獲取訓(xùn)練數(shù)據(jù)的多個(gè)樣本,然后為每個(gè)數(shù)據(jù)樣本構(gòu)建模型。當(dāng)你需要對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)時(shí),每個(gè)模型都將進(jìn)行預(yù)測(cè),并對(duì)預(yù)測(cè)取平均值以對(duì)真實(shí)輸出值進(jìn)行更好的估計(jì)。
隨機(jī)森林是對(duì)這種方法的一種調(diào)整,在該方法中將創(chuàng)建決策樹,不是選擇最佳的拆分點(diǎn)。
因此,為每個(gè)數(shù)據(jù)樣本創(chuàng)建的模型與原先的模型相比,差異更大。將他們的預(yù)測(cè)結(jié)合起來可以更好地估計(jì)真實(shí)的基礎(chǔ)輸出值。
?
Boosting是一種集成技術(shù),嘗試從多個(gè)弱分類器創(chuàng)建強(qiáng)分類器。這是通過從訓(xùn)練數(shù)據(jù)構(gòu)建模型,然后創(chuàng)建第二個(gè)模型來嘗試糾正第一個(gè)模型中的錯(cuò)誤來完成的。添加模型,直到完美預(yù)測(cè)訓(xùn)練集或添加最大數(shù)量的模型為止。
AdaBoost是為二進(jìn)制分類開發(fā)的第一個(gè)真正成功的增強(qiáng)算法。這是了解增強(qiáng)的最佳起點(diǎn)。現(xiàn)代的增強(qiáng)方法基于AdaBoost,最著名的是隨機(jī)梯度增強(qiáng)機(jī).
具體細(xì)節(jié)可以看這個(gè)視頻.
AdaBoost與決策樹一起使用。
創(chuàng)建第一棵樹后,將在每個(gè)訓(xùn)練實(shí)例上使用該樹的性能來加權(quán)要?jiǎng)?chuàng)建的下一棵樹應(yīng)注意每個(gè)訓(xùn)練實(shí)例的關(guān)注程度。
難以預(yù)測(cè)的訓(xùn)練數(shù)據(jù)的權(quán)重更高,而易于預(yù)測(cè)的實(shí)例的權(quán)重更低。依次創(chuàng)建模型,每個(gè)模型都會(huì)更新訓(xùn)練實(shí)例上的權(quán)重,這些權(quán)重會(huì)影響序列中下一棵樹執(zhí)行的學(xué)習(xí)。構(gòu)建完所有樹之后,對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè),并根據(jù)訓(xùn)練數(shù)據(jù)的準(zhǔn)確性對(duì)每棵樹的性能進(jìn)行加權(quán)。
由于該算法在糾正錯(cuò)誤方面投入了很多精力,因此刪除異常值和數(shù)據(jù)去噪非常重要。
編輯:黃飛
?
評(píng)論
查看更多