日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

回歸、分類與聚類:三大方向剖解機(jī)器學(xué)習(xí)算法的優(yōu)缺點(diǎn)(附Python和R實(shí)現(xiàn))

 taotao_2016 2017-05-20

選自EliteDataScience

機(jī)器之心編譯

參與:蔣思源、晏奇


在本教程中,作者對(duì)現(xiàn)代機(jī)器學(xué)習(xí)算法進(jìn)行一次簡(jiǎn)要的實(shí)戰(zhàn)梳理。雖然類似的總結(jié)有很多,但是它們都沒有真正解釋清楚每個(gè)算法在實(shí)踐中的好壞,而這正是本篇梳理希望完成的。因此本文力圖基于實(shí)踐中的經(jīng)驗(yàn),討論每個(gè)算法的優(yōu)缺點(diǎn)。而機(jī)器之心也在文末給出了這些算法的具體實(shí)現(xiàn)細(xì)節(jié)。


對(duì)機(jī)器學(xué)習(xí)算法進(jìn)行分類不是一件容易的事情,總的來(lái)看,有如下幾種方式:生成與判別、參數(shù)與非參數(shù)、監(jiān)督與非監(jiān)督等等。


然而,就實(shí)踐經(jīng)驗(yàn)來(lái)看,這些都不是實(shí)戰(zhàn)過程中最有效的分類算法的方式。因?yàn)閷?duì)于應(yīng)用機(jī)器學(xué)習(xí)而言,開發(fā)者一般會(huì)在腦海中有一個(gè)最終目標(biāo),比如預(yù)測(cè)一個(gè)結(jié)果或是對(duì)你的觀察進(jìn)行分類。


因此,我們想介紹另一種對(duì)算法進(jìn)行分類的路數(shù),其基于機(jī)器學(xué)習(xí)任務(wù)來(lái)分類。


沒有免費(fèi)午餐定理


在機(jī)器學(xué)習(xí)中,有個(gè)定理被稱為「沒有免費(fèi)的午餐」。簡(jiǎn)而言之,就是說沒有一個(gè)算法可以完美解決所有問題,而且這對(duì)于監(jiān)督學(xué)習(xí)(即對(duì)預(yù)測(cè)的建模)而言尤其如此。


舉個(gè)例子,你不能說神經(jīng)網(wǎng)絡(luò)就一定任何時(shí)候都比決策樹優(yōu)秀,反過來(lái)也是。這其中存在很多影響因素,比如你數(shù)據(jù)集的規(guī)模和結(jié)構(gòu)。



所以,當(dāng)你使用一個(gè)固定的數(shù)據(jù)測(cè)試集來(lái)評(píng)估性能,挑選最適合算法時(shí),你應(yīng)該針對(duì)你的問題嘗試多種不同的算法。


當(dāng)然,你所使用的算法必須要適合于你試圖解決的問題,這也就有了如何選擇正確的機(jī)器學(xué)習(xí)任務(wù)這一問題。做個(gè)類比,如果你需要打掃你的房子,你可能會(huì)用吸塵器、掃帚或者是拖把,但是你絕不會(huì)掏出一把鏟子然后開始挖地。


機(jī)器學(xué)習(xí)任務(wù)


在本次梳理中,我們將涵蓋目前「三大」最常見機(jī)器學(xué)習(xí)任務(wù):


  1. 回歸方法

  2. 分類方法

  3. 聚類方法


說明:


  • 本文的梳理不會(huì)涵蓋具體領(lǐng)域的問題,比如自然語(yǔ)言處理。

  • 本文也不會(huì)對(duì)每個(gè)算法都進(jìn)行梳理。因?yàn)楝F(xiàn)有太多算法,而且新的算法也層出不窮。然而,這份清單將向讀者展現(xiàn)對(duì)每個(gè)任務(wù)而言目前具有代表性的算法概覽。


1、回歸方法


回歸方法是一種對(duì)數(shù)值型連續(xù)隨機(jī)變量進(jìn)行預(yù)測(cè)和建模的監(jiān)督學(xué)習(xí)算法。使用案例一般包括房?jī)r(jià)預(yù)測(cè)、股票走勢(shì)或測(cè)試成績(jī)等連續(xù)變化的案例。


回歸任務(wù)的特點(diǎn)是標(biāo)注的數(shù)據(jù)集具有數(shù)值型的目標(biāo)變量。也就是說,每一個(gè)觀察樣本都有一個(gè)數(shù)值型的標(biāo)注真值以監(jiān)督算法。


1.1 線性回歸(正則化)


線性回歸是處理回歸任務(wù)最常用的算法之一。該算法的形式十分簡(jiǎn)單,它期望使用一個(gè)超平面擬合數(shù)據(jù)集(只有兩個(gè)變量的時(shí)候就是一條直線)。如果數(shù)據(jù)集中的變量存在線性關(guān)系,那么其就能擬合地非常好。



在實(shí)踐中,簡(jiǎn)單的線性回歸通常被使用正則化的回歸方法(LASSO、Ridge 和 Elastic-Net)所代替。正則化其實(shí)就是一種對(duì)過多回歸系數(shù)采取懲罰以減少過擬合風(fēng)險(xiǎn)的技術(shù)。當(dāng)然,我們還得確定懲罰強(qiáng)度以讓模型在欠擬合和過擬合之間達(dá)到平衡。


  • 優(yōu)點(diǎn):線性回歸的理解與解釋都十分直觀,并且還能通過正則化來(lái)降低過擬合的風(fēng)險(xiǎn)。另外,線性模型很容易使用隨機(jī)梯度下降和新數(shù)據(jù)更新模型權(quán)重。

  • 缺點(diǎn):線性回歸在變量是非線性關(guān)系的時(shí)候表現(xiàn)很差。并且其也不夠靈活以捕捉更復(fù)雜的模式,添加正確的交互項(xiàng)或使用多項(xiàng)式很困難并需要大量時(shí)間。


  • Python 實(shí)現(xiàn):http:///stable/modules/linear_model.html 

  • R 實(shí)現(xiàn):https://cran./web/packages/glmnet/index.html 


1.2 回歸樹(集成方法)


回歸樹(決策樹的一種)通過將數(shù)據(jù)集重復(fù)分割為不同的分支而實(shí)現(xiàn)分層學(xué)習(xí),分割的標(biāo)準(zhǔn)是最大化每一次分離的信息增益。這種分支結(jié)構(gòu)讓回歸樹很自然地學(xué)習(xí)到非線性關(guān)系。



集成方法,如隨機(jī)森林(RF)或梯度提升樹(GBM)則組合了許多獨(dú)立訓(xùn)練的樹。這種算法的主要思想就是組合多個(gè)弱學(xué)習(xí)算法而成為一種強(qiáng)學(xué)習(xí)算法,不過這里并不會(huì)具體地展開。在實(shí)踐中 RF 通常很容易有出色的表現(xiàn),而 GBM 則更難調(diào)參,不過通常梯度提升樹具有更高的性能上限。


  • 優(yōu)點(diǎn):決策樹能學(xué)習(xí)非線性關(guān)系,對(duì)異常值也具有很強(qiáng)的魯棒性。集成學(xué)習(xí)在實(shí)踐中表現(xiàn)非常好,其經(jīng)常贏得許多經(jīng)典的(非深度學(xué)習(xí))機(jī)器學(xué)習(xí)競(jìng)賽。

  • 缺點(diǎn):無(wú)約束的,單棵樹很容易過擬合,因?yàn)閱慰脴淇梢员A舴种Вú患糁Γ?,并直到其記住了?xùn)練數(shù)據(jù)。集成方法可以削弱這一缺點(diǎn)的影響。


  • 隨機(jī)森林 Python 實(shí)現(xiàn):http:///stable/modules/ensemble.html#random-forests

  • 隨機(jī)森林 R 實(shí)現(xiàn):https://cran./web/packages/randomForest/index.html

  • 梯度提升樹 Python 實(shí)現(xiàn):http:///stable/modules/ensemble.html#classification

  • 梯度提升樹 R 實(shí)現(xiàn):https://cran./web/packages/gbm/index.html


1.3 深度學(xué)習(xí)


深度學(xué)習(xí)是指能學(xué)習(xí)極其復(fù)雜模式的多層神經(jīng)網(wǎng)絡(luò)。該算法使用在輸入層和輸出層之間的隱藏層對(duì)數(shù)據(jù)的中間表征建模,這也是其他算法很難學(xué)到的部分。



深度學(xué)習(xí)還有其他幾個(gè)重要的機(jī)制,如卷積和 drop-out 等,這些機(jī)制令該算法能有效地學(xué)習(xí)到高維數(shù)據(jù)。然而深度學(xué)習(xí)相對(duì)于其他算法需要更多的數(shù)據(jù),因?yàn)槠溆懈髷?shù)量級(jí)的參數(shù)需要估計(jì)。


  • 優(yōu)點(diǎn):深度學(xué)習(xí)是目前某些領(lǐng)域最先進(jìn)的技術(shù),如計(jì)算機(jī)視覺和語(yǔ)音識(shí)別等。深度神經(jīng)網(wǎng)絡(luò)在圖像、音頻和文本等數(shù)據(jù)上表現(xiàn)優(yōu)異,并且該算法也很容易對(duì)新數(shù)據(jù)使用反向傳播算法更新模型參數(shù)。它們的架構(gòu)(即層級(jí)的數(shù)量和結(jié)構(gòu))能夠適應(yīng)于多種問題,并且隱藏層也減少了算法對(duì)特征工程的依賴。

  • 缺點(diǎn):深度學(xué)習(xí)算法通常不適合作為通用目的的算法,因?yàn)槠湫枰罅康臄?shù)據(jù)。實(shí)際上,深度學(xué)習(xí)通常在經(jīng)典機(jī)器學(xué)習(xí)問題上并沒有集成方法表現(xiàn)得好。另外,其在訓(xùn)練上是計(jì)算密集型的,所以這就需要更富經(jīng)驗(yàn)的人進(jìn)行調(diào)參(即設(shè)置架構(gòu)和超參數(shù))以減少訓(xùn)練時(shí)間。


  • Python 資源:https:///

  • R 資源:http:/// 


1.4 最近鄰算法


最近鄰算法是「基于實(shí)例的」,這就意味著其需要保留每一個(gè)訓(xùn)練樣本觀察值。最近鄰算法通過搜尋最相似的訓(xùn)練樣本來(lái)預(yù)測(cè)新觀察樣本的值。


而這種算法是內(nèi)存密集型,對(duì)高維數(shù)據(jù)的處理效果并不是很好,并且還需要高效的距離函數(shù)來(lái)度量和計(jì)算相似度。在實(shí)踐中,基本上使用正則化的回歸或樹型集成方法是最好的選擇。


2、分類方法


分類方法是一種對(duì)離散型隨機(jī)變量建模或預(yù)測(cè)的監(jiān)督學(xué)習(xí)算法。使用案例包括郵件過濾、金融欺詐和預(yù)測(cè)雇員異動(dòng)等輸出為類別的任務(wù)。


許多回歸算法都有與其相對(duì)應(yīng)的分類算法,分類算法通常適用于預(yù)測(cè)一個(gè)類別(或類別的概率)而不是連續(xù)的數(shù)值。


2.1 Logistic 回歸(正則化)


Logistic 回歸是與線性回歸相對(duì)應(yīng)的一種分類方法,且該算法的基本概念由線性回歸推導(dǎo)而出。Logistic 回歸通過 Logistic 函數(shù)(即 Sigmoid 函數(shù))將預(yù)測(cè)映射到 0 到 1 中間,因此預(yù)測(cè)值就可以看成某個(gè)類別的概率。



該模型仍然還是「線性」的,所以只有在數(shù)據(jù)是線性可分(即數(shù)據(jù)可被一個(gè)超平面完全分離)時(shí),算法才能有優(yōu)秀的表現(xiàn)。同樣 Logistic 模型能懲罰模型系數(shù)而進(jìn)行正則化。


  • 優(yōu)點(diǎn):輸出有很好的概率解釋,并且算法也能正則化而避免過擬合。Logistic 模型很容易使用隨機(jī)梯度下降和新數(shù)據(jù)更新模型權(quán)重。

  • 缺點(diǎn):Logistic 回歸在多條或非線性決策邊界時(shí)性能比較差。


  • Python 實(shí)現(xiàn):http:///stable/modules/linear_model.html#logistic-regression

  • R 實(shí)現(xiàn):https://cran./web/packages/glmnet/index.html


2.2 分類樹(集成方法)


與回歸樹相對(duì)應(yīng)的分類算法是分類樹。它們通常都是指決策樹,或更嚴(yán)謹(jǐn)一點(diǎn)地稱之為「分類回歸樹(CART)」,這也就是非常著名的 CART 的算法。


簡(jiǎn)單的隨機(jī)森林


  • 優(yōu)點(diǎn):同回歸方法一樣,分類樹的集成方法在實(shí)踐中同樣表現(xiàn)十分優(yōu)良。它們通常對(duì)異常數(shù)據(jù)具有相當(dāng)?shù)聂敯粜院涂蓴U(kuò)展性。因?yàn)樗膶蛹?jí)結(jié)構(gòu),分類樹的集成方法能很自然地對(duì)非線性決策邊界建模。

  • 缺點(diǎn):不可約束,單棵樹趨向于過擬合,使用集成方法可以削弱這一方面的影響。


  • 隨機(jī)森林 Python 實(shí)現(xiàn):http:///stable/modules/ensemble.html#regression

  • 隨機(jī)森林 R 實(shí)現(xiàn):https://cran./web/packages/randomForest/index.html

  • 梯度提升樹 Python 實(shí)現(xiàn):http:///stable/modules/ensemble.html#classification

  • 梯度提升樹 R 實(shí)現(xiàn):https://cran./web/packages/gbm/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è)通用目的的算法。


  • Python 資源:https:///

  • R 資源:http:/// 


2.4 支持向量機(jī)


支持向量機(jī)(SVM)可以使用一個(gè)稱之為核函數(shù)的技巧擴(kuò)展到非線性分類問題,而該算法本質(zhì)上就是計(jì)算兩個(gè)稱之為支持向量的觀測(cè)數(shù)據(jù)之間的距離。SVM 算法尋找的決策邊界即最大化其與樣本間隔的邊界,因此支持向量機(jī)又稱為大間距分類器。


支持向量機(jī)中的核函數(shù)采用非線性變換,將非線性問題變換為線性問題


例如,SVM 使用線性核函數(shù)就能得到類似于 logistic 回歸的結(jié)果,只不過支持向量機(jī)因?yàn)樽畲蠡碎g隔而更具魯棒性。因此,在實(shí)踐中,SVM 最大的優(yōu)點(diǎn)就是可以使用非線性核函數(shù)對(duì)非線性決策邊界建模。


  • 優(yōu)點(diǎn):SVM 能對(duì)非線性決策邊界建模,并且有許多可選的核函數(shù)形式。SVM 同樣面對(duì)過擬合有相當(dāng)大的魯棒性,這一點(diǎn)在高維空間中尤其突出。

  • 缺點(diǎn):然而,SVM 是內(nèi)存密集型算法,由于選擇正確的核函數(shù)是很重要的,所以其很難調(diào)參,也不能擴(kuò)展到較大的數(shù)據(jù)集中。目前在工業(yè)界中,隨機(jī)森林通常優(yōu)于支持向量機(jī)算法。


  • Python 實(shí)現(xiàn):http:///stable/modules/svm.html#classification

  • R 實(shí)現(xiàn):https://cran./web/packages/kernlab/index.html


2.5 樸素貝葉斯


樸素貝葉斯(NB)是一種基于貝葉斯定理和特征條件獨(dú)立假設(shè)的分類方法。本質(zhì)上樸素貝葉斯模型就是一個(gè)概率表,其通過訓(xùn)練數(shù)據(jù)更新這張表中的概率。為了預(yù)測(cè)一個(gè)新的觀察值,樸素貝葉斯算法就是根據(jù)樣本的特征值在概率表中尋找最大概率的那個(gè)類別。


之所以稱之為「樸素」,是因?yàn)樵撍惴ǖ暮诵木褪翘卣鳁l件獨(dú)立性假設(shè)(每一個(gè)特征之間相互獨(dú)立),而這一假設(shè)在現(xiàn)實(shí)世界中基本是不現(xiàn)實(shí)的。


  • 優(yōu)點(diǎn):即使條件獨(dú)立性假設(shè)很難成立,但樸素貝葉斯算法在實(shí)踐中表現(xiàn)出乎意料地好。該算法很容易實(shí)現(xiàn)并能隨數(shù)據(jù)集的更新而擴(kuò)展。

  • 缺點(diǎn):因?yàn)闃闼刎惾~斯算法太簡(jiǎn)單了,所以其也經(jīng)常被以上列出的分類算法所替代。


  • Python 實(shí)現(xiàn):http:///stable/modules/naive_bayes.html

  • R 實(shí)現(xiàn):https://cran./web/packages/naivebayes/index.html


3、聚類


聚類是一種無(wú)監(jiān)督學(xué)習(xí)任務(wù),該算法基于數(shù)據(jù)的內(nèi)部結(jié)構(gòu)尋找觀察樣本的自然族群(即集群)。使用案例包括細(xì)分客戶、新聞聚類、文章推薦等。


因?yàn)榫垲愂且环N無(wú)監(jiān)督學(xué)習(xí)(即數(shù)據(jù)沒有標(biāo)注),并且通常使用數(shù)據(jù)可視化評(píng)價(jià)結(jié)果。如果存在「正確的回答」(即在訓(xùn)練集中存在預(yù)標(biāo)注的集群),那么分類算法可能更加合適。


3.1 K 均值聚類


K 均值聚類是一種通用目的的算法,聚類的度量基于樣本點(diǎn)之間的幾何距離(即在坐標(biāo)平面中的距離)。集群是圍繞在聚類中心的族群,而集群呈現(xiàn)出類球狀并具有相似的大小。聚類算法是我們推薦給初學(xué)者的算法,因?yàn)樵撍惴ú粌H十分簡(jiǎn)單,而且還足夠靈活以面對(duì)大多數(shù)問題都能給出合理的結(jié)果。


  • 優(yōu)點(diǎn):K 均值聚類是最流行的聚類算法,因?yàn)樵撍惴ㄗ銐蚩焖?、?jiǎn)單,并且如果你的預(yù)處理數(shù)據(jù)和特征工程十分有效,那么該聚類算法將擁有令人驚嘆的靈活性。

  • 缺點(diǎn):該算法需要指定集群的數(shù)量,而 K 值的選擇通常都不是那么容易確定的。另外,如果訓(xùn)練數(shù)據(jù)中的真實(shí)集群并不是類球狀的,那么 K 均值聚類會(huì)得出一些比較差的集群。


  • Python 實(shí)現(xiàn):http:///stable/modules/clustering.html#k-means

  • R 實(shí)現(xiàn):https://stat./R-manual/R-devel/library/stats/html/kmeans.html


3.2 Affinity Propagation 聚類


AP 聚類算法是一種相對(duì)較新的聚類算法,該聚類算法基于兩個(gè)樣本點(diǎn)之間的圖形距離(graph distances)確定集群。采用該聚類方法的集群擁有更小和不相等的大小。


  • 優(yōu)點(diǎn):該算法不需要指出明確的集群數(shù)量(但是需要指定「sample preference」和「damping」等超參數(shù))。

  • 缺點(diǎn):AP 聚類算法主要的缺點(diǎn)就是訓(xùn)練速度比較慢,并需要大量?jī)?nèi)存,因此也就很難擴(kuò)展到大數(shù)據(jù)集中。另外,該算法同樣假定潛在的集群是類球狀的。


  • Python 實(shí)現(xiàn):http:///stable/modules/clustering.html#affinity-propagation

  • R 實(shí)現(xiàn):https://cran./web/packages/apcluster/index.html


3.3 層次聚類(Hierarchical / Agglomerative)


層次聚類是一系列基于以下概念的聚類算法:


  1. 最開始由一個(gè)數(shù)據(jù)點(diǎn)作為一個(gè)集群

  2. 對(duì)于每個(gè)集群,基于相同的標(biāo)準(zhǔn)合并集群

  3. 重復(fù)這一過程直到只留下一個(gè)集群,因此就得到了集群的層次結(jié)構(gòu)。


  • 優(yōu)點(diǎn):層次聚類最主要的優(yōu)點(diǎn)是集群不再需要假設(shè)為類球形。另外其也可以擴(kuò)展到大數(shù)據(jù)集。

  • 缺點(diǎn):有點(diǎn)像 K 均值聚類,該算法需要設(shè)定集群的數(shù)量(即在算法完成后需要保留的層次)。


  • Python 實(shí)現(xiàn):http:///stable/modules/clustering.html#hierarchical-clustering

  • R 實(shí)現(xiàn):https://stat./R-manual/R-devel/library/stats/html/hclust.html


3.4 DBSCAN


DBSCAN 是一個(gè)基于密度的算法,它將樣本點(diǎn)的密集區(qū)域組成一個(gè)集群。最近還有一項(xiàng)被稱為 HDBSCAN 的新進(jìn)展,它允許改變密度集群。


  • 優(yōu)點(diǎn):DBSCAN 不需要假設(shè)集群為球狀,并且它的性能是可擴(kuò)展的。此外,它不需要每個(gè)點(diǎn)都被分配到一個(gè)集群中,這降低了集群的異常數(shù)據(jù)。

  • 缺點(diǎn):用戶必須要調(diào)整「epsilon」和「min_sample」這兩個(gè)定義了集群密度的超參數(shù)。DBSCAN 對(duì)這些超參數(shù)非常敏感。


  • Python 實(shí)現(xiàn):http:///stable/modules/clustering.html#dbscan

  • R 實(shí)現(xiàn):https://cran./web/packages/dbscan/index.html


結(jié)語(yǔ)


本文從回歸問題、分類問題和聚類問題三個(gè)角度下初步了解了各個(gè)算法的優(yōu)缺點(diǎn),也基本了解了那些算法到底是什么。但以上每一個(gè)算法都有更多的概念和細(xì)節(jié)沒有展現(xiàn)出來(lái),我們不能知道它們的損失函數(shù)是什么、訓(xùn)練目標(biāo)是什么、權(quán)重更新策略是什么等等一些列問題。因此我們希望能從機(jī)器之心歷來(lái)文章中搜尋一些,為有興趣的讀者提供這些算法的具體細(xì)節(jié)。


線性回歸:



決策樹(集成方法):



支持向量機(jī):



深度學(xué)習(xí):



聚類算法:



最后,不論是基本概念還是具體算法,最重要的就是實(shí)踐。不實(shí)踐這些算法就永遠(yuǎn)不能發(fā)現(xiàn)哪些地方?jīng)]有掌握,因此希望本文能有助于各位讀者實(shí)踐自己的算法。


原文地址:https:///machine-learning-algorithms#regression



讀者福利:即日起至 GMIS 2017 大會(huì)前一天,讀者在頭條文章下留言,機(jī)器之心會(huì)在次日選出最專業(yè)或最有見解的一條評(píng)論贈(zèng)送 GMIS 2017 雙日票一張!


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多