機(jī)器學(xué)習(xí)算法雖多,卻沒有什么普適的解決方案。決策樹、隨機(jī)森林、樸素貝葉斯、深度網(wǎng)絡(luò)等等等等,是不是有時(shí)候覺得挑花了眼呢?福利來(lái)啦~本文將教你慧眼識(shí)精,快速挑選出滿意的算法!
機(jī)器學(xué)習(xí)既是一門科學(xué),也是一種藝術(shù)。縱觀各類機(jī)器學(xué)習(xí)算法,并沒有一種普適的解決方案或方法。事實(shí)上,有幾個(gè)因素會(huì)影響你對(duì)機(jī)器學(xué)習(xí)算法的選擇。
有些問題是非常特別的,需要用一種特定的解決方法。例如,如果你對(duì)推薦系統(tǒng)有所了解,你會(huì)發(fā)現(xiàn)它是一類很常用的機(jī)器學(xué)習(xí)算法,用來(lái)解決一類非常特殊的問題。而其它的一些問題則非常開放,可能需要一種試錯(cuò)方法(例如:強(qiáng)化學(xué)習(xí))。監(jiān)督學(xué)習(xí)、分類、回歸等問題都是非常開放的,可以被用于異常檢測(cè)或建立更加廣泛的預(yù)測(cè)模型。
此外,我們?cè)谶x擇機(jī)器學(xué)習(xí)算法時(shí)所做出的一些決定與算法的優(yōu)化或技術(shù)層面關(guān)系并不大,而更多地與業(yè)務(wù)決策相關(guān)。下面,讓我們一起來(lái)看看有哪些因素能幫你縮小機(jī)器學(xué)習(xí)算法的選擇范圍。
數(shù)據(jù)科學(xué)過(guò)程
在你開始研究不同的機(jī)器學(xué)習(xí)算法前,你需要對(duì)自己擁有的數(shù)據(jù)、面對(duì)的問題及相關(guān)約束有清晰的了解。
理解你的數(shù)據(jù)
當(dāng)我們決定使用哪種算法時(shí),我們所擁有的數(shù)據(jù)的類型和形態(tài)起著關(guān)鍵性的作用。有些算法可以利用較小的樣本集合工作,而另一些算法則需要海量的樣本。特定的算法對(duì)特定類型的數(shù)據(jù)起作用。例如,樸素貝葉斯算法對(duì)處理待分類的輸入特別有效,但是對(duì)于缺失值則一點(diǎn)都不敏感。
因此,你需要做到:
了解你的數(shù)據(jù)
1. 查看總結(jié)統(tǒng)計(jì)和數(shù)據(jù)可視化的結(jié)果
2. 數(shù)據(jù)可視化
數(shù)據(jù)清洗
1. 處理缺失值。缺失的數(shù)據(jù)對(duì)于某些模型的影響比對(duì)其它模型更大。即使是對(duì)于那些被用于處理缺失數(shù)據(jù)的模型來(lái)說(shuō),它們也可能對(duì)缺失數(shù)據(jù)很敏感(某些變量的缺失數(shù)據(jù)可能導(dǎo)致預(yù)測(cè)性能變差)
2. 選擇處理異常值的方法
3. 數(shù)據(jù)需要被聚合嗎?
數(shù)據(jù)增強(qiáng)
1. 特征工程是從原始數(shù)據(jù)中產(chǎn)生能夠被用于建模的數(shù)據(jù)的過(guò)程,可以起到以下幾種作用:
2. 不同的模型可能有不同的特征工程的要求。有的模型有內(nèi)置的特征工程。
對(duì)問題進(jìn)行分類
下一步是對(duì)問題進(jìn)行分類。這是一個(gè)需要分兩步實(shí)現(xiàn)的過(guò)程
1. 根據(jù)輸入分類:
2. 根據(jù)輸出分類:
理解你要滿足的約束條件
尋找可用的算法
當(dāng)對(duì)自己的任務(wù)環(huán)境有了一個(gè)清晰的認(rèn)識(shí)后,你就可以使用你所掌握的工具確定適用于待解決的問題并切實(shí)可行的算法。一些影響你選擇模型的因素如下:
模型的復(fù)雜度是一個(gè)影響算法選擇的重要標(biāo)準(zhǔn)。一般來(lái)說(shuō),一個(gè)更復(fù)雜的模型具備下列特征:
除此之外,同樣的機(jī)器學(xué)習(xí)算法可以基于參數(shù)的個(gè)數(shù)和某些超參數(shù)的選擇而變得更加復(fù)雜。例如:
將相同的算法變得更加復(fù)雜增加了發(fā)生過(guò)擬合的幾率。
常用的機(jī)器學(xué)習(xí)算法
線性回歸
這可能是機(jī)器學(xué)習(xí)中最簡(jiǎn)單的算法。例如,當(dāng)你想要計(jì)算一些連續(xù)值,而不是將輸出分類時(shí),可以使用回歸算法。因此,當(dāng)你需要預(yù)測(cè)一個(gè)正在運(yùn)行的過(guò)程未來(lái)的值時(shí),你可以使用回歸算法。然而,當(dāng)特征冗余,即如果存在多重共線性()時(shí),線性回歸就不太穩(wěn)定。
在下列情況下可以考慮使用線性回歸:
回歸
回歸執(zhí)行二進(jìn)制分類,因此輸出二值標(biāo)簽。它將特征的線性組合作為輸入,并且對(duì)其應(yīng)用非線性函數(shù)(),因此它是一個(gè)非常小的神經(jīng)網(wǎng)絡(luò)的實(shí)例。
回歸提供了許多方法對(duì)你的模型進(jìn)行正則化處理,因此正如在樸素貝葉斯算法中那樣,你不必?fù)?dān)心你的特征是否相關(guān)。該模型還有一個(gè)很好的概率化的解釋。不像在決策樹或者支持向量機(jī)中那樣機(jī)器學(xué)習(xí)防止過(guò)擬合,你可以很容易地更新你的模型以獲取新的數(shù)據(jù)。如果你想要使用一個(gè)概率化的框架,或者你希望在未來(lái)能夠快速地將更多的訓(xùn)練數(shù)據(jù)融合到你的模型中,你可以使用 回歸算法。 回歸還可以幫助你理解預(yù)測(cè)結(jié)果背后起作用的因素機(jī)器學(xué)習(xí)防止過(guò)擬合,它不完全是一個(gè)黑盒方法。
在下列情況下可以考慮使用 回歸算法:
決策樹
決策樹很少被單獨(dú)使用,但是不同的決策樹可以組合成非常高效的算法,例如隨機(jī)森林或梯度提升樹算法。
決策樹很容易處理特征交互,并且決策樹是一種非參數(shù)模型,所以你不必?fù)?dān)心異常值或者數(shù)據(jù)是否是線性可分的。決策樹算法的一個(gè)缺點(diǎn)是,它們不支持在線學(xué)習(xí),因此當(dāng)你要使用新的樣本時(shí),你不得不重新構(gòu)建決策樹。決策樹的另一個(gè)缺點(diǎn)是,它很容易發(fā)生過(guò)擬合,而這就是像隨機(jī)森林(或提升樹)這樣的集成學(xué)習(xí)方法能夠派上用場(chǎng)的地方。決策樹也需要大量的內(nèi)存空間(擁有的特征越多,你的決策樹可能會(huì)越深、越大)
決策樹能夠很好地幫助你在諸多行動(dòng)路徑中做出選擇:
K-均值
有時(shí),你完全沒有數(shù)據(jù)的標(biāo)簽信息,并且你的目的是根據(jù)對(duì)象的特征來(lái)為其打上標(biāo)簽。這種問題被稱為聚類任務(wù)。聚類算法可以在這種情況下被使用:例如,當(dāng)你有一大群用戶,你希望根據(jù)他們共有的一些屬性將其劃分到一些特定的組中。
如果在你的問題聲明中有這樣的問題:例如,找出一群個(gè)體的組織形式,或?qū)⒛承〇|西分組,或找出特定的組。這時(shí),你就應(yīng)該使用聚類算法。
該方法最大的缺點(diǎn)是,K-均值算法需要提前知道你的數(shù)據(jù)會(huì)有多少簇,因此這可能需要進(jìn)行大量的試驗(yàn)去「猜測(cè)」我們最終定義的簇的最佳個(gè)數(shù)——K。
主成分分析(PCA)
主成分分析能夠?qū)?shù)據(jù)進(jìn)行降維。有時(shí),你擁有各種各樣的特征,這些特征之間的相關(guān)性可能很高,而模型如果使用如此大量的數(shù)據(jù)可能會(huì)產(chǎn)生過(guò)擬合現(xiàn)象。這時(shí),你可以使用主成分分析(PCA)技術(shù)。
主成分分析(PCA)能夠起作用的關(guān)鍵因素是:除了低維的樣本表征,它還提供了各種變量的一種同步的低維表征。同步的樣本和變量的表征提供了一種能夠可視化地找到能夠表示一組樣本的特征的變量的方法。
支持向量機(jī)
支持向量機(jī)(SVM)是一種在模式識(shí)別和分類問題中被廣泛應(yīng)用的監(jiān)督機(jī)器學(xué)習(xí)技術(shù)——當(dāng)你的數(shù)據(jù)恰好有兩類時(shí)。
支持向量機(jī)準(zhǔn)確率高,對(duì)于防止過(guò)擬合很好的理論保障。當(dāng)你使用一個(gè)合適的核函數(shù)時(shí),即使你的數(shù)據(jù)在基(低維)特征空間中是線性不可分的,他們也可以很好地工作。支持向量機(jī)在文本分類問題中非常流行,在該問題中,輸入是一個(gè)維度非常高的空間是很正常的。然而,SVM 是一種內(nèi)存密集型算法,它很難被解釋,并且對(duì)其進(jìn)行調(diào)優(yōu)十分困難。
在下列現(xiàn)實(shí)世界的應(yīng)用中,你可以使用支持向量機(jī):
樸素貝葉斯
這是一種基于貝葉斯定理的分類技術(shù),它很容易構(gòu)建,非常適用于大規(guī)模數(shù)據(jù)集。除了結(jié)構(gòu)簡(jiǎn)單,據(jù)說(shuō)樸素貝葉斯的表現(xiàn)甚至比一些復(fù)雜得多的分類方法更好。當(dāng) CPU 和內(nèi)存資源有限時(shí),樸素貝葉斯算法也是一個(gè)很好的選項(xiàng)。
樸素貝葉斯非常簡(jiǎn)單,你僅僅是在做大量的計(jì)數(shù)工作。如果樸素貝葉斯的條件獨(dú)立假設(shè)確實(shí)成立,樸素貝葉斯分類器的收斂速度會(huì)比 回歸這樣的判別模型更快,因此需要的訓(xùn)練數(shù)據(jù)更少。即使樸素貝葉斯的假設(shè)不成立,樸素貝葉斯分類器往往也能很好地完成任務(wù)。如果你想使用一種快速的、簡(jiǎn)單的、性能也不錯(cuò)的模型,樸素貝葉斯是一個(gè)很好的選擇。這種算法最大的缺點(diǎn)就是它不能學(xué)習(xí)到特征之間的相互作用。
在下列真實(shí)世界的應(yīng)用中,你可以使用樸素貝葉斯:
隨機(jī)森林
隨機(jī)森林是一種決策樹的集成方法。它能夠同時(shí)解決具有大規(guī)模數(shù)據(jù)集的回歸問題和分類問題,還有助于從數(shù)以千計(jì)的輸入變量中找出最重要的變量。隨機(jī)森林具有很強(qiáng)的可伸縮性,它適用于任何維數(shù)的數(shù)據(jù),并且通常具有相當(dāng)不錯(cuò)的性能。此外,還有一些遺傳算法,它們可以在具有最少的關(guān)于數(shù)據(jù)本身的知識(shí)的情況下,很好地?cái)U(kuò)展到任何維度和任何數(shù)據(jù)上,其中最簡(jiǎn)單的實(shí)現(xiàn)就是微生物遺傳算法。然而,隨機(jī)森林學(xué)習(xí)的速度可能會(huì)很慢(取決于參數(shù)設(shè)置),并且這種方法不能迭代地改進(jìn)生成模型。
在下列現(xiàn)實(shí)世界的應(yīng)用中,你可以使用隨機(jī)森林:
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)中包含著神經(jīng)元之間連接的權(quán)重。這些權(quán)重是平衡的,逐次對(duì)數(shù)據(jù)點(diǎn)進(jìn)行學(xué)習(xí)。當(dāng)所有的權(quán)重都被訓(xùn)練好后,如果需要對(duì)新給定的數(shù)據(jù)點(diǎn)進(jìn)行回歸,神經(jīng)網(wǎng)絡(luò)可以被用于預(yù)測(cè)分類結(jié)果或一個(gè)具體數(shù)值。利用神經(jīng)網(wǎng)絡(luò),可以對(duì)特別復(fù)雜的模型進(jìn)行訓(xùn)練,并且將其作為一種黑盒方法加以利用,而在訓(xùn)練模型之前,我們無(wú)需進(jìn)行不可預(yù)測(cè)的復(fù)雜特征工程。通過(guò)與「深度方法」相結(jié)合,甚至可以采用更加不可預(yù)測(cè)的模型去實(shí)現(xiàn)新任務(wù)。例如,最近人們已經(jīng)通過(guò)深度神經(jīng)網(wǎng)絡(luò)大大提升了物體識(shí)別任務(wù)的結(jié)果。深度學(xué)習(xí)還被應(yīng)用于特征提取這樣的非監(jiān)督學(xué)習(xí)任務(wù),也可以在人為干預(yù)更少的情況下,從原始圖像或語(yǔ)音中提取特征。
另一方面,神經(jīng)網(wǎng)絡(luò)很難被解釋清楚,其參數(shù)設(shè)置也復(fù)雜地讓人難以置信。此外,神經(jīng)網(wǎng)絡(luò)算法也都是資源密集型和內(nèi)存密集型的。
參考手冊(cè)
為大家提供了一個(gè)非常深入的、解釋地很清楚的流程圖,它能夠幫助你選擇正確的算法。我認(rèn)為此圖十分方便。
結(jié)論
一般來(lái)說(shuō),你可以根據(jù)上面介紹的要點(diǎn)來(lái)篩選出一些算法,但是要想在一開始就知道哪種方法最好是很難的。你最好多迭代幾次選擇算法的過(guò)程。將你的數(shù)據(jù)輸入給那些你確定的潛在優(yōu)秀機(jī)器學(xué)習(xí)算法,通過(guò)并行或串行的方式運(yùn)行這些算法,最終評(píng)估算法性能,從而選擇出最佳的算法。
在最后,我想告訴你:為現(xiàn)實(shí)生活中的問題找到正確的解決方案,通常不僅僅是一個(gè)應(yīng)用數(shù)學(xué)方法的問題。這要求我們對(duì)業(yè)務(wù)需求、規(guī)則和制度、相關(guān)利益者的關(guān)注點(diǎn)有所了解,并且具備大量的專業(yè)知識(shí)。在解決一個(gè)機(jī)器學(xué)習(xí)問題的同時(shí),能夠結(jié)合并平衡這些問題是至關(guān)重要的,那些能做到這一點(diǎn)的人可以創(chuàng)造最大的價(jià)值。
End.