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