推薦理由
對于機(jī)器學(xué)習(xí)算法的盤點(diǎn)艺智,網(wǎng)上屢見不鮮。但目前圾亏,還沒人能結(jié)合使用場景來把問題說明白十拣,而這一點(diǎn)正是本文的目的所在。
在文章中志鹃,作者將結(jié)合他的實(shí)際經(jīng)驗(yàn)父晶,細(xì)致剖析每種算法在實(shí)踐中的優(yōu)勢和不足。
本文的目的弄跌,是務(wù)實(shí)甲喝、簡潔地盤點(diǎn)一番當(dāng)前機(jī)器學(xué)習(xí)算法。盡管人們已做過不少盤點(diǎn)铛只,但始終未能給出每一種算法的真正優(yōu)缺點(diǎn)埠胖。在這里糠溜,我們依據(jù)實(shí)際使用中的經(jīng)驗(yàn),將對此詳加討論直撤。
歸類機(jī)器學(xué)習(xí)算法非竿,一向都非常棘手,常見的分類標(biāo)準(zhǔn)是這樣的:生成/判別谋竖、參數(shù)/非參數(shù)红柱、監(jiān)督/非監(jiān)督,等等蓖乘。
舉例來說锤悄,Scikit-Learn 對算法的分類是根據(jù)它們的學(xué)習(xí)機(jī)制,由此所產(chǎn)生的類別如下:
廣義線性模型
支持向量機(jī)
最近鄰
決策樹
神經(jīng)網(wǎng)絡(luò)
……
然而嘉抒,根據(jù)我們的經(jīng)驗(yàn)零聚,這都不是最實(shí)用的算法分類方式。這是因?yàn)樾┦蹋谑褂脵C(jī)器學(xué)習(xí)的時(shí)候隶症,你不會(huì)這么去想:“我今天想訓(xùn)練一個(gè)支持向量機(jī)出來!”
相反岗宣,你一般是想著那個(gè)最終的目標(biāo)蚂会,比如預(yù)測某個(gè)結(jié)果,或是將觀察結(jié)果進(jìn)行分類耗式。
因而胁住,我們想基于你的任務(wù)目標(biāo),來對機(jī)器學(xué)習(xí)算法進(jìn)行分類纽什。
天下沒有免費(fèi)的午餐
在機(jī)器學(xué)習(xí)領(lǐng)域,一個(gè)基本的定理就是“沒有免費(fèi)的午餐”躲叼。換言之芦缰,就是沒有算法能完美地解決所有問題,尤其是對監(jiān)督學(xué)習(xí)而言(例如預(yù)測建模)枫慷。
舉例來說让蕾,你不能去說神經(jīng)網(wǎng)絡(luò)任何情況下都能比決策樹更有優(yōu)勢,反之亦然或听。它們要受很多因素的影響探孝,比如你的數(shù)據(jù)集的規(guī)模或結(jié)構(gòu)誉裆。
其結(jié)果是顿颅,在用給定的測試集來評估性能并挑選算法時(shí),你應(yīng)當(dāng)根據(jù)具體的問題來采用不同的算法足丢。
當(dāng)然粱腻,所選的算法必須要適用于你自己的問題庇配,這就要求選擇正確的機(jī)器學(xué)習(xí)任務(wù)。作為類比绍些,如果你需要打掃房子捞慌,你可能會(huì)用到吸塵器、掃帚或是拖把柬批,但你絕對不該掏出鏟子來挖地啸澡。
機(jī)器學(xué)習(xí)的任務(wù)
這里,我們將首先討論當(dāng)前的「三大」最常見的機(jī)器學(xué)習(xí)任務(wù):
1氮帐、回歸(Regression)
2嗅虏、分類(Classification)
3、聚類(Clustering)
以及兩大數(shù)據(jù)降維(Dimensionality Reduction)問題:
4揪漩、特征選刃铡(Feature Selection)
5、特征提妊偃荨(Feature Extraction)
后續(xù)的文章冰更,我們還將討論密度估計(jì)(Density Estimation)和異常檢測()的任務(wù)。
說明:本文將不討論具體的細(xì)分領(lǐng)域昂勒,如自然語言處理蜀细。
本文也不會(huì)覆蓋到每一個(gè)具體的算法。畢竟當(dāng)前的算法數(shù)不勝數(shù)戈盈,而新的算法更是層出不窮奠衔。盡管如此,本文仍能針對每項(xiàng)任務(wù)給出當(dāng)下最有代表性的算法塘娶。
▌1.回歸
回歸是一種用于連續(xù)型數(shù)值變量預(yù)測和建模的監(jiān)督學(xué)習(xí)算法归斤,使用案例包括房地產(chǎn)價(jià)格、股價(jià)走勢或?qū)W生成績等的預(yù)測刁岸。
回歸任務(wù)的特征是具有數(shù)值型目標(biāo)變量的標(biāo)注數(shù)據(jù)集脏里。換言之,每一個(gè)用以監(jiān)督算法的觀察樣本虹曙,都有一個(gè)數(shù)值型真值迫横。
線性回歸
1.1 (正則化)線性回歸
線性回歸是回歸任務(wù)最常用的算法。它最簡的形式酝碳,是用一個(gè)連續(xù)的超平面來擬合數(shù)據(jù)集(比如矾踱,當(dāng)你僅有兩個(gè)變量時(shí)就用一條直線)。如果數(shù)據(jù)集內(nèi)的變量存在線性關(guān)系疏哗,擬合程度就相當(dāng)高呛讲。
在實(shí)踐中,簡單線性回歸通常會(huì)被其正則化形式(LASSO、Ridge 及彈性網(wǎng)絡(luò))所取代圣蝎。正則化是對過多回歸系數(shù)所采取的一種避免過擬合的懲罰技巧刃宵,同時(shí),懲罰的強(qiáng)度需要被平衡好徘公。
優(yōu)點(diǎn):線性回歸的理解和解釋都非常直觀牲证,還能通過正則化來避免過擬合。此外关面,線性模型很容易通過隨機(jī)梯度下降來更新數(shù)據(jù)模型坦袍。
缺點(diǎn):線性回歸在處理非線性關(guān)系時(shí)非常糟糕,在識(shí)別復(fù)雜的模式上也不夠靈活等太,而添加正確的相互作用項(xiàng)或多項(xiàng)式又極為棘手且耗時(shí)捂齐。
1.2 回歸樹(集成方法)
回歸樹,又名決策樹缩抡,通過將數(shù)據(jù)集重復(fù)分割成不同的分支來最大化每次分離的信息增益奠宜,從而讓回歸樹很自然地學(xué)到非線性關(guān)系。
集成的方法瞻想,如隨機(jī)森林(RF)或梯度提升樹(GBM)压真,則能結(jié)合許多獨(dú)立訓(xùn)練樹的預(yù)測。我們在這里不會(huì)詳述其中的機(jī)制蘑险,但在實(shí)踐中滴肿,隨機(jī)森林一般都有很出色的表現(xiàn),梯度提升樹則較難調(diào)參佃迄,但往往能有更高的性能上限泼差。
優(yōu)點(diǎn):決策樹能學(xué)習(xí)非線性關(guān)系,對異常值也具有很強(qiáng)的穩(wěn)健性呵俏。集成學(xué)習(xí)在實(shí)踐中表現(xiàn)優(yōu)異堆缘,經(jīng)常贏得經(jīng)典的(非深度學(xué)習(xí))機(jī)器學(xué)習(xí)競賽。
缺點(diǎn):由于無約束普碎,單棵樹容易過擬合吼肥,這是因?yàn)閱慰脴淇杀A舴种е敝劣涀∮?xùn)練的數(shù)據(jù)。不夠随常,集成方法可以弱化這一缺點(diǎn)潜沦。
1.3 深度學(xué)習(xí)
深度學(xué)習(xí)是指能夠?qū)W習(xí)極端復(fù)雜模式的多層神經(jīng)網(wǎng)絡(luò)萄涯。它們在輸入層和輸出層之間使用隱藏層來對數(shù)據(jù)的中間表征建模绪氛,這一點(diǎn)是其他算法很難做到的。
深度學(xué)習(xí)還有幾個(gè)重要的機(jī)制涝影,如卷積枣察、漏失等,這使該算法可以有效學(xué)習(xí)高維數(shù)據(jù)。然而序目,相對于其他算法臂痕,深度學(xué)習(xí)需要更多的數(shù)據(jù)來進(jìn)行訓(xùn)練,因?yàn)樵撃P托枰浪愀髷?shù)量級的參數(shù)猿涨。
優(yōu)點(diǎn):深度學(xué)習(xí)是當(dāng)前特定領(lǐng)域的最先進(jìn)技術(shù)握童,如計(jì)算機(jī)視覺與語音識(shí)別。深度神經(jīng)網(wǎng)絡(luò)在圖像叛赚、音頻和文本數(shù)據(jù)上表現(xiàn)優(yōu)異澡绩,也很容易通過反向傳播算法來更新數(shù)據(jù)模型。它們的架構(gòu)(即層級的數(shù)量和結(jié)構(gòu))能適用于多種問題俺附,同時(shí)隱藏層還能降低算法對特征工程的依賴肥卡。
缺點(diǎn):深度學(xué)習(xí)算法往往不適合用于通用目的,因?yàn)樗鼈冃枰罅康臄?shù)據(jù)事镣。事實(shí)上步鉴,對于經(jīng)典的機(jī)器學(xué)習(xí)問題,深度學(xué)習(xí)的表現(xiàn)并不比集成方法好璃哟。此外氛琢,由于訓(xùn)練所需的密集型計(jì)算,它們需要更多的專門知識(shí)才能進(jìn)行調(diào)參(如設(shè)定架構(gòu)與超參數(shù))沮稚。
實(shí)現(xiàn):
Python - https://keras.io/
R - http://mxnet.io/
1.4 榮譽(yù)獎(jiǎng):最近鄰算法
最近鄰算法是“基于實(shí)例的”艺沼,也就意味著它需要保留每一個(gè)訓(xùn)練觀察值。最近鄰算法通過搜尋最相似的訓(xùn)練樣本來預(yù)測新樣本的觀察值蕴掏。
它是內(nèi)存密集型算法障般,處理高維數(shù)據(jù)時(shí)的效果并不理想,同時(shí)還需要高效的距離函數(shù)來計(jì)算相似度盛杰。在實(shí)踐中挽荡,使用正則化的回歸或樹型集成方法通常是更好的選擇。
▌2.分類
分類是一種用于分類變量建模及預(yù)測的監(jiān)督學(xué)習(xí)算法即供,使用案例包括員工流失定拟、郵件過濾、金融欺詐等的預(yù)測逗嫡。
正如你所見青自,許多回歸算法都有其對應(yīng)的分類形式,分類算法往往適用于類別(或其可能性)的預(yù)測驱证,而非數(shù)值延窜。
邏輯回歸
2.1 (正則化)邏輯回歸
邏輯回歸是線性回歸所對應(yīng)的分類方法,基本概念由線性回歸推導(dǎo)而出抹锄。邏輯回歸通過邏輯函數(shù)將預(yù)測映射到 0 到 1 的區(qū)間逆瑞,因此預(yù)測值可被視為某一類別的概率荠藤。
該模型依舊是線性的,只有當(dāng)數(shù)據(jù)線性可分時(shí)(例如获高,數(shù)據(jù)可被某決策平面完全分離)哈肖,這一算法才會(huì)有很好的表現(xiàn)。邏輯回歸同樣能懲罰模型系數(shù)以進(jìn)行正則化念秧。
優(yōu)點(diǎn):輸出結(jié)果會(huì)有很好的概率解釋淤井,而算法也能通過正則化以避免過擬合。邏輯模型很容易通過隨機(jī)梯度下降來更新數(shù)據(jù)模型摊趾。
缺點(diǎn):邏輯回歸在面對多元或非線性決策邊界時(shí)性能較差庄吼。
實(shí)現(xiàn):
Python - http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
R - https://cran.r-project.org/web/packages/glmnet/index.html
2.2 分類樹(集成方法)
對應(yīng)于回歸樹的分類算法是分類樹。通常严就,它們都是指決策樹总寻,更為嚴(yán)謹(jǐn)?shù)恼f法是“分類回歸樹(CART)”,也就是非常有名的 CART 算法梢为。
優(yōu)點(diǎn):跟回歸方法一樣渐行,分類樹的集成方法在實(shí)踐中的表現(xiàn)同樣十分優(yōu)異。它們在應(yīng)對異常數(shù)據(jù)時(shí)有著相當(dāng)?shù)姆€(wěn)健性與可擴(kuò)展性铸董。由于其層級結(jié)構(gòu)祟印,分類樹的集成方法能夠很自然地對非線性決策邊界建模。
缺點(diǎn):不可約束粟害,單棵樹容易過擬合蕴忆,集成方法可削弱這一影響。
實(shí)現(xiàn):隨機(jī)森林
Python -?
R - https://cran.r-project.org/web/packages/randomForest/index.html
2.3 深度學(xué)習(xí)
深度學(xué)習(xí)同樣很容易適應(yīng)于分類問題悲幅。實(shí)際上套鹅,深度學(xué)習(xí)應(yīng)用地更多的是分類任務(wù),如圖像分類等汰具。
優(yōu)點(diǎn):深度學(xué)習(xí)非常適合于音頻卓鹿、文本與圖像數(shù)據(jù)的分類。
缺點(diǎn):與回歸方法一樣留荔,深度神經(jīng)網(wǎng)絡(luò)需要大量的數(shù)據(jù)進(jìn)行訓(xùn)練吟孙,所以也不是一個(gè)通用目的算法。
2.4 支持向量機(jī)
支持向量機(jī)使用一個(gè)名為核函數(shù)的技巧聚蝶,來將非線性問題變換為線性問題杰妓,其本質(zhì)是計(jì)算兩個(gè)觀測數(shù)據(jù)的距離。支持向量機(jī)算法所尋找的是能夠最大化樣本間隔的決策邊界碘勉,因此又被稱為大間距分類器巷挥。
舉例來說,使用線性核函數(shù)的支持向量機(jī)類似于邏輯回歸恰聘,但更具穩(wěn)健性句各。因而在實(shí)踐中,支持向量機(jī)最大用處是用非線性核函數(shù)來對非線性決策邊界進(jìn)行建模晴叨。
優(yōu)點(diǎn):支持向量機(jī)能對非線性決策邊界建模凿宾,又有許多可選的核函數(shù)。在面對過擬合時(shí)兼蕊,支持向量機(jī)有著極強(qiáng)的穩(wěn)健性初厚,尤其是在高維空間中。
缺點(diǎn):不過孙技,支持向量機(jī)是內(nèi)存密集型算法产禾,選擇正確的核函數(shù)就需要相當(dāng)?shù)膉技巧,不太適用較大的數(shù)據(jù)集牵啦。在當(dāng)前的業(yè)界應(yīng)用中亚情,隨機(jī)森林的表現(xiàn)往往要優(yōu)于支持向量機(jī)。
2.5 樸素貝葉斯
樸素貝葉斯是一種基于條件概率和計(jì)數(shù)的簡單算法哈雏,其本質(zhì)是一個(gè)概率表楞件,通過訓(xùn)練數(shù)據(jù)來更新其中的概率。它預(yù)測新觀察值的過程裳瘪,就是根據(jù)樣本的特征值在概率表中來尋找最為可能的類別土浸。
被稱為“樸素”原因,是其核心的特征條件獨(dú)立性假設(shè)(例如彭羹,每一項(xiàng)輸入特征都相互獨(dú)立)黄伊,在現(xiàn)實(shí)中幾乎是不成立的。
優(yōu)點(diǎn):即便條件獨(dú)立性假設(shè)很難成立派殷,但實(shí)踐中的樸素貝葉斯算法卻能表現(xiàn)得很好还最。該算法易于實(shí)現(xiàn)且能伴隨數(shù)據(jù)集更新。
缺點(diǎn):因?yàn)闃闼刎惾~斯的算法太過簡單毡惜,所以很容易被上述分類算法所取代憋活。
▌3.聚類
聚類是基于數(shù)據(jù)內(nèi)部結(jié)構(gòu)來尋找樣本自然族群(集群)的無監(jiān)督學(xué)習(xí)任務(wù),使用案例包括用戶畫像虱黄、電商物品聚類悦即、社交網(wǎng)絡(luò)分析等。
由于聚類屬于無監(jiān)督學(xué)習(xí)橱乱,也就不會(huì)輸出“正確的答案”辜梳,評價(jià)結(jié)果時(shí)往往要用到數(shù)據(jù)可視化。如果你需要“正確的答案”泳叠,亦即訓(xùn)練集中存在預(yù)標(biāo)注的集群作瞄,那么用分類算法會(huì)更加合適。
K 均值
3.1 K 均值
K 均值是基于樣本點(diǎn)間的幾何距離來度量聚類的通用目的算法危纫。由于集群圍繞在聚類中心宗挥,結(jié)果會(huì)接近于球狀并具有相似的大小乌庶。
我們之所以推薦該算法給初學(xué)者,是因?yàn)樗粌H足夠簡單契耿,而且足夠靈活瞒大,對于大多數(shù)問題都能給出合理的結(jié)果。
優(yōu)點(diǎn):K 均值是最為流行的聚類算法搪桂,因?yàn)樗銐蚩焖偻傅小⒆銐蚝唵危绻愕念A(yù)處理數(shù)據(jù)和特征工程都做得十分有效踢械,那它將具備令人驚嘆的靈活性酗电。
缺點(diǎn):該算法需要指定集群的數(shù)量,而 K 值的選擇通常都不是那么容易確定的内列。另外撵术,如果訓(xùn)練數(shù)據(jù)中的真實(shí)集群并不是類球狀的,那么 K 均值聚類會(huì)得出一些比較差的集群话瞧。
3.2 仿射傳播
仿射傳播是一種相對較新的聚類算法荷荤,它基于兩個(gè)樣本點(diǎn)之間的圖形距離來確定集群,其結(jié)果傾向于更小且大小不等的集群移稳。
優(yōu)點(diǎn):仿射傳播不需要指出明確的集群數(shù)量蕴纳,但需要指定“sample preference”和“damping”等超參數(shù)。
缺點(diǎn):仿射傳播的主要缺點(diǎn)是訓(xùn)練速度較慢个粱,且需要大量內(nèi)存古毛,因而難于擴(kuò)展到大數(shù)據(jù)集。此外都许,該算法同樣在假定潛在的集群要接近于球狀稻薇。
3.3 分層 / 層次
分層聚類,又名層次聚類胶征,其算法基于以下概念來實(shí)現(xiàn):
1) 每一個(gè)集群都從一個(gè)數(shù)據(jù)點(diǎn)開始塞椎;
2) 每一個(gè)集群都可基于相同的標(biāo)準(zhǔn)進(jìn)行合并;
3) 重復(fù)這一過程睛低,直至你僅剩下一個(gè)集群案狠,這就獲得了集群的層次結(jié)構(gòu)。
優(yōu)點(diǎn):層次聚類的最主要優(yōu)點(diǎn)钱雷,是集群不再假定為類球形骂铁。此外,它可以很容易擴(kuò)展到大數(shù)據(jù)集罩抗。
缺點(diǎn):類似于 K 均值拉庵,該算法需要選定集群的數(shù)量,即算法完成后所要保留的層次套蒂。
3.4 DBSCAN
DBSCAN 是一種基于密度的聚類算法钞支,它將樣本點(diǎn)的密集區(qū)域組成集群茫蛹;其最新進(jìn)展是HDBSCAN,它允許集群的密度可變烁挟。
優(yōu)點(diǎn):DBSCAN 不需要假定類球形集群婴洼,其性能可以擴(kuò)展。此外信夫,它不需要每個(gè)點(diǎn)都被分配到集群中,這就降低了集群的噪音卡啰。
缺點(diǎn):用戶必須要調(diào)整“epsilon”和“min_sample”這兩個(gè)超參數(shù)來定義集群密度静稻。DBSCAN 對此非常敏感。
維度災(zāi)難
在機(jī)器學(xué)習(xí)領(lǐng)域匈辱,“維度(Dimensionality)”通常指數(shù)據(jù)集中的特征數(shù)量(即輸入變量的個(gè)數(shù))振湾。
當(dāng)特征的個(gè)數(shù)特別大的時(shí)候(相對于數(shù)據(jù)集中觀測樣本的數(shù)量來說),訓(xùn)練出一個(gè)有效的模型亡脸,對算法要求就會(huì)特別高(即押搪,用現(xiàn)有的算法訓(xùn)練出一個(gè)有效的模型特別困難)纲熏。這就是所謂的“維度災(zāi)難(Curse of Dimensionality)”帝美,特別是對依賴于距離計(jì)算的聚類算法而言亚侠。
對于“維度災(zāi)難”咙轩,有位 Quora 用戶給出了一個(gè)非常好的類比:
假設(shè)有一條100碼的直線愤惰,而你在該直線的某處掉了一枚硬幣荸哟。要找回硬幣并不難嘱能,你只需沿著這條線走就行了擎浴,最多花上你2分鐘時(shí)間滥朱。
然后根暑,假設(shè)有一個(gè)長和寬都是100碼的廣場,而你是把硬幣掉在廣場的某個(gè)位置♂懔冢現(xiàn)在再想找回它排嫌,可就不容易了,這好比在兩個(gè)并排的足球場中找針缰犁,可能會(huì)耗上你幾天時(shí)間淳地。
再然后,假設(shè)是一個(gè)長帅容、寬薇芝、高都是100碼的立方體,那就好比是在30層樓高的大型體育場內(nèi)找zhen找針……
隨著維度的增加丰嘉,在空間中搜索的難度也會(huì)變得愈加困難夯到。
這就需要數(shù)據(jù)降維的辦法:特征選取和特征提取。
▌4.特征選取
特征選取是從你的數(shù)據(jù)集中過濾掉不相關(guān)或冗余的特征饮亏。特征選取與特征提取的關(guān)鍵區(qū)別在于:特征選取是從原特征集中選取一個(gè)子特征集耍贾,而特稱提取則是在原特征集的基礎(chǔ)上重新構(gòu)造出一些(一個(gè)或多個(gè))全新的特征阅爽。
需要注意的是,某些監(jiān)督式機(jī)器學(xué)習(xí)算法已經(jīng)具備了內(nèi)在的特征選取機(jī)制:比如正則回歸與隨機(jī)森林荐开。通常付翁,我們是建議一開始優(yōu)先嘗試這些算法,如果它們能匹配上你的問題的話晃听。對此我們已經(jīng)做過介紹百侧。
作為獨(dú)立的任務(wù),特征選取既可以是非監(jiān)督式的(如方差閾值)能扒,又可以是監(jiān)督式的(比遺傳算法)佣渴。有必要的話,你還可以把多種方法以某種合理的方式整合在一起初斑。
4.1 方差閾值
方差閾值會(huì)摒棄掉觀測樣本那些觀測值改變較小的特征(即辛润,它們的方差小于某個(gè)設(shè)定的閾值)。這樣的特征的價(jià)值極小见秤。
舉例來說砂竖,如果你有一份公共健康數(shù)據(jù),其中96%的人都是35歲的男性鹃答,那么去掉“年齡”和“性別”的特征也不會(huì)損失重要信息乎澄。
由于方差閾值依賴于特征值的數(shù)量級,你應(yīng)該對特征值先做歸一化處理测摔。
優(yōu)點(diǎn):使用方差閾值方式進(jìn)行數(shù)據(jù)降維只需一個(gè)非橙玻可靠的直覺:特征值不怎么改變的特征,不會(huì)帶來什么有用的信息避咆。這是在你建模初期進(jìn)行數(shù)據(jù)降維相對安全的一種方式舟肉。
缺點(diǎn):如果你正在解決的問題并不需要進(jìn)行數(shù)據(jù)降維,即便使用了方差閾值也幾乎沒有什么作用查库。此外路媚,你需要手工設(shè)置、調(diào)整方差閾值樊销,這個(gè)過程相當(dāng)具有技術(shù)含量整慎。我們建議從一個(gè)保守(也就是,較低)的閾值開始围苫。
4.2 相關(guān)性閾值
相關(guān)性閾值會(huì)去掉那些高度相關(guān)的特征(亦即裤园,這些特征的特征值變化與其他特征非常相似)。它們提供的是冗余信息剂府。
舉例來說拧揽,如果你有一個(gè)房地產(chǎn)數(shù)據(jù),其中兩個(gè)特征分別是“房屋面積(單位:平方英尺)”和“房屋面積(單位:平方米)”,那么淤袜,你就可以去掉其中的任何一個(gè)(這非常安全痒谴,也不會(huì)給你的模型帶來任何負(fù)面影響)。
問題是铡羡,你該去掉哪一個(gè)特征呢积蔚?首先,你應(yīng)該計(jì)算所有特征對的相關(guān)系數(shù)烦周。而后尽爆,如果某個(gè)特征對的相關(guān)系數(shù)大于設(shè)定的閾值,那你就可以去掉其中平均絕對相關(guān)系數(shù)較大的那一個(gè)读慎。
優(yōu)點(diǎn):使用相關(guān)性閾值同樣只需一個(gè)可靠的直覺:相似的特征提供了冗余的信息漱贱。對于某些含有強(qiáng)相關(guān)性特征較多的數(shù)據(jù)集,有些算法的穩(wěn)健性并不好贪壳,因此饱亿,去掉它們可以提升整個(gè)模型的性能(計(jì)算速度蚜退、模型準(zhǔn)確度闰靴、模型穩(wěn)健性,等等)钻注。
缺點(diǎn):同樣蚂且,你還是必須手動(dòng)去設(shè)置、調(diào)整相關(guān)性閾值幅恋,這同樣是個(gè)棘手且復(fù)雜的過程杏死。此外,如果你設(shè)置的閾值過低捆交,那么你將會(huì)丟失掉一些有用的信息淑翼。無論在什么時(shí)候,我們都更傾向于使用那些內(nèi)置了特征選取的算法品追。對于沒有內(nèi)置特征提取的算法玄括,主成分分析是一個(gè)很好的備用方案。
4.3 遺傳算法
遺傳算法是可用于不同任務(wù)的一大類算法的統(tǒng)稱肉瓦。它們受進(jìn)化生物學(xué)與自然選擇的啟發(fā)遭京,結(jié)合變異與交叉,在解空間內(nèi)進(jìn)行高效的遍歷搜索泞莉。這里有一篇非常棒的簡介:“遺傳算法背后的原理引入”哪雕。
在機(jī)器學(xué)習(xí)領(lǐng)域,遺傳算法主要有兩大用處鲫趁。
其一斯嚎,用于最優(yōu)化,比如去找神經(jīng)網(wǎng)絡(luò)的最佳權(quán)重。
其二孝扛,是用于監(jiān)督式特征提取列吼。這一用例中,“基因”表示單個(gè)特征苦始,同時(shí)“有機(jī)體”表示候選特征集寞钥。“種群體”內(nèi)的每一個(gè)有機(jī)體都會(huì)基于其適應(yīng)性進(jìn)行評分陌选,正如在測試數(shù)據(jù)集上進(jìn)行模型性能測試理郑。最能適應(yīng)環(huán)境的有機(jī)體將會(huì)生存下來,并不斷繁衍咨油,一直迭代您炉,直至最終收斂于某個(gè)最優(yōu)的解決方案。
優(yōu)點(diǎn):在窮舉搜索不可行的情況下役电,對高維數(shù)據(jù)集使用遺傳算法會(huì)相當(dāng)有效赚爵。當(dāng)你的算法需要預(yù)處理數(shù)據(jù)卻沒有內(nèi)置的特征選取機(jī)制(如最近鄰分類算法),而你又必須保留最原始的特征(也就是不能用任何主成分分析算法)法瑟,遺傳算法就成了你最好的選擇冀膝。這一情況在要求透明、可解釋方案的商業(yè)環(huán)境下時(shí)有發(fā)生霎挟。
缺點(diǎn):遺傳算法為你解決方案的實(shí)施帶來了更高的復(fù)雜度窝剖,而多數(shù)情況下它們都是不必要的麻煩。如果可能的話酥夭,主成分分析或其它內(nèi)置特征選取的算法將會(huì)更加高效和簡潔赐纱。
4.4 榮譽(yù)獎(jiǎng):逐步搜索
逐步搜索是一個(gè)基于序列式搜索的監(jiān)督式特征選取算法。它有兩種形式:前向搜索和反向搜索熬北。
對于前向逐步搜索疙描,你從沒有任何特征開始。接著讶隐,從候選特征集中起胰,選擇一個(gè)特征來訓(xùn)練模型;然后整份,保存模型性能最好對應(yīng)的那個(gè)特征待错;再往下,你不斷往訓(xùn)練模型的特征集中添加特征烈评,一次添加一個(gè)特征火俄,直到你模型的性能不再提升。
反向逐步搜索的過程相同讲冠,只不過順序相反:從把所有的特征都用于訓(xùn)練模型瓜客,接著一次性移除一個(gè)特征,直到模型的性能驟降。
我們提及這一算法純粹是源于某些歷史原因谱仪。盡管很多教科書都把逐步搜索算法作為一個(gè)有效的方法玻熙,但它所表現(xiàn)出來的性能總是不及其它監(jiān)督式方法,比如正則化疯攒。逐步搜索有很多明顯的缺陷嗦随,最致命的一點(diǎn)就是它是一個(gè)貪心算法,無法面對未來變化的沖擊敬尺。我們并不推薦這個(gè)算法枚尼。
▌5.特征提取
特征提取是用來創(chuàng)造一個(gè)新的、較小的特征集砂吞,但仍能保留絕大部分有用的信息署恍。值得再提的是,特征選取是用來保留原始特征集中的一部分子特征集蜻直,而特征提取則是創(chuàng)造全新的特征集盯质。
跟特征選取一樣,某些算法內(nèi)部已經(jīng)具有了特征提取的機(jī)制概而。最好的案例就是深度學(xué)習(xí)呼巷,它可以通過每一層隱神經(jīng)層,提取出越來越有用的能表征原始數(shù)據(jù)的特征到腥。我們在“深度學(xué)習(xí)”部分已給出相關(guān)的講解朵逝。
作為獨(dú)立的任務(wù)蔚袍,特征提取可以是非監(jiān)督式的(如主成分分析)或監(jiān)督式的(如線性判別分析)乡范。
5.1 主成分分析
主成分分析是一個(gè)非監(jiān)督式算法,它用來創(chuàng)造原始特征的線性組合啤咽。新創(chuàng)造出來的特征他們之間都是正交的晋辆,也就是沒有關(guān)聯(lián)性。具體來說宇整,這些新特征是按它們本身變化程度的大小來進(jìn)行排列的瓶佳。第一個(gè)主成分代表了你的數(shù)據(jù)集中變化最為劇烈的特征,第二個(gè)主成分代表了變化程度排在第二位的特征鳞青,以此類推霸饲。
因此,你可以通過限制使用主成分的個(gè)數(shù)來達(dá)到數(shù)據(jù)降維的目的臂拓。例如厚脉,你可以僅采用能使累積可解釋方差為90%的主成分?jǐn)?shù)量。
你需要在使用主成分分析之前胶惰,對數(shù)據(jù)進(jìn)行歸一化處理傻工。否則,原始數(shù)據(jù)中特征值數(shù)量級最大的那個(gè)特征將會(huì)主導(dǎo)你新創(chuàng)造出來的主成分特征。
優(yōu)點(diǎn):主成分分析是一項(xiàng)多用途技術(shù)中捆,實(shí)用效果非常好鸯匹。它部署起來快速、簡單泄伪,也就是說殴蓬,你可以很方便地測試算法性能,無論使用還是不使用主成分分析蟋滴。此外科雳,主成分分析還有好幾種變體和擴(kuò)展(如:核主成分分析(kernel PCA),稀疏主成分分析(sparse PCA))脓杉,用以解決特定的問題糟秘。
缺點(diǎn):新創(chuàng)造出來的主成分并不具備可解釋性,因而在某些情況下球散,新特征與應(yīng)用實(shí)際場景之間很難建立起聯(lián)系尿赚。此外,你仍然需要手動(dòng)設(shè)置蕉堰、調(diào)整累積可解釋方差的閾值凌净。
5.2 線性判別分析
線性判別分析不是隱含狄利克雷分布,它同樣用來構(gòu)造原始特征集的線性組合屋讶。但與主成分分析不同冰寻,線性判別分析不會(huì)最大化可解釋方差,而是最大化類別間的分離程度皿渗。
因此斩芭,線性判別分析是一種監(jiān)督式學(xué)習(xí)方式,它必須使用有標(biāo)記的數(shù)據(jù)集乐疆。那么划乖,線性判別分析與主成分分析,到底哪種方法更好呢挤土?這要視具體的情況而定琴庵,“沒有免費(fèi)的午餐”原理在這里同樣適用。
線性判別分析同樣依賴于特征值的數(shù)量級仰美,你同樣需要先對特征值做歸一化處理迷殿。
優(yōu)點(diǎn):線性判別分析是一種監(jiān)督式學(xué)習(xí),基于這種方式獲取到的特征可以(但并不總是能)提升模型性能咖杂。此外庆寺,線性判別分析還有一些變體(如二次線性判別分析),可用來解決特定的問題翰苫。
缺點(diǎn):與主成分分析一樣止邮,新創(chuàng)造出來的特征不具有可解釋性这橙。而且,你同樣要手動(dòng)設(shè)置导披、調(diào)整需要保留的特征數(shù)量屈扎。線性判別分析需要已經(jīng)標(biāo)記好的數(shù)據(jù),因此撩匕,這也讓它更加接地氣兒鹰晨。
5.3 自編碼機(jī)
自編碼機(jī)是一種人工神經(jīng)網(wǎng)絡(luò),它是用來重新構(gòu)建原始輸入的止毕。例如模蜡,圖像自編碼機(jī)是訓(xùn)練來重新表征原始數(shù)據(jù)的,而非用以區(qū)分圖片里面的小貓扁凛、小狗忍疾。
但這有用嗎?這里的關(guān)鍵谨朝,是在隱含層搭建比輸入層和輸出層更少數(shù)量的神經(jīng)元卤妒。這樣,隱含層就會(huì)不斷學(xué)習(xí)如何用更少的特征來表征原始圖像字币。
因?yàn)槭怯幂斎雸D像來作為目標(biāo)輸出则披,自編碼機(jī)被視為無監(jiān)督學(xué)習(xí)。它們可被直接使用(如:圖像壓縮)或按順序堆疊使用(如:深度學(xué)習(xí))洗出。
優(yōu)點(diǎn):自編碼機(jī)是人工神經(jīng)網(wǎng)絡(luò)中的一種士复,這表示它們對某些特定類型的數(shù)據(jù)表現(xiàn)會(huì)非常好,比如圖像和語音數(shù)據(jù)翩活。
缺點(diǎn):自編碼機(jī)是一種人工神經(jīng)網(wǎng)絡(luò)阱洪。這就是說,它們的優(yōu)化需要更多的數(shù)據(jù)來進(jìn)行訓(xùn)練隅茎。它們并不能作為一般意義上的數(shù)據(jù)降維算法來用澄峰。
實(shí)現(xiàn):
小結(jié)
基于我們的經(jīng)驗(yàn)嫉沽,以下是一些有用的建議:
練習(xí)辟犀,練習(xí),練習(xí)绸硕。要找到一些數(shù)據(jù)集堂竟,趁熱打鐵。了解這些算法只是一個(gè)開頭玻佩,掌握好它們就需要你不停地實(shí)踐出嘹。
掌握好基礎(chǔ)。掌握這里算法咬崔,能為你去運(yùn)用機(jī)器學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)税稼,因?yàn)槠渌械乃惴ǘ际腔谏鲜鏊惴ǖ囊恍┳冃畏持取Ee例來說,先掌握主成分分析和線性判別分析之前的區(qū)別郎仆,而后再去學(xué)習(xí)線性判別分析的相關(guān)細(xì)節(jié)以及二次線性判別分析之間的差別只祠,效果會(huì)更好。
鐵律扰肌,好的數(shù)據(jù)遠(yuǎn)勝于花哨的算法抛寝。在機(jī)器學(xué)習(xí)應(yīng)用領(lǐng)域,算法總是可以替換的曙旭;而有效的探索性分析盗舰、數(shù)據(jù)清洗與特征工程總是能大力提升你的結(jié)果。我們會(huì)經(jīng)常提及這一點(diǎn)桂躏,因?yàn)檫@就是該死的真相钻趋!
原文鏈接:
https://elitedatascience.com/machine-learning-algorithms
https://elitedatascience.com/dimensionality-reduction-algorithms
作者:AI科技大本營
鏈接:http://www.reibang.com/p/f4a564b56e3f
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處剂习。