隨機(jī)森林,指的是利用多棵樹(即決策樹)對(duì)樣本進(jìn)行訓(xùn)練并預(yù)測(cè)的一種多分類器。它是一種集成學(xué)習(xí)方法,是bagging算法的特化進(jìn)階版算法。故本文會(huì)先介紹集成學(xué)習(xí)以及其一個(gè)分支:bagging算法,再引出隨機(jī)森林算法的基本思想。
1) 集成學(xué)習(xí)思想:訓(xùn)練若干個(gè)弱學(xué)習(xí)器,然后通過(guò)一定的策略將其結(jié)合起來(lái)成為一個(gè)強(qiáng)學(xué)習(xí)器
2) Bagging算法:弱學(xué)習(xí)器之間沒(méi)有依賴關(guān)系,可以并行生成,采用有放回的隨機(jī)采樣獲取每個(gè)弱學(xué)習(xí)器的訓(xùn)練集。
3) 決策樹算法:詳細(xì)內(nèi)容可見(jiàn)第一章決策樹的講解。
4) 隨機(jī)森林算法:重點(diǎn)區(qū)分隨機(jī)森林中的決策樹與普通決策樹的不同
在介紹隨機(jī)森林之前,我們需要先了解一下集成學(xué)習(xí),因?yàn)殡S機(jī)森林就是集成學(xué)習(xí)思想下的產(chǎn)物,將許多棵決策樹整合成森林,并合起來(lái)用來(lái)預(yù)測(cè)最終結(jié)果。
1.1 集成學(xué)習(xí)概述[2]
對(duì)于訓(xùn)練數(shù)據(jù),我們通過(guò)訓(xùn)練若干個(gè)學(xué)習(xí)器,然后通過(guò)一定的策略將其結(jié)合起來(lái)成為一個(gè)強(qiáng)學(xué)習(xí)器,從而達(dá)到很好的學(xué)習(xí)效果。
從圖中可以發(fā)現(xiàn),集成學(xué)習(xí)是由兩個(gè)部分構(gòu)成,一個(gè)是若干個(gè)學(xué)習(xí)器,這些學(xué)習(xí)器都是弱學(xué)習(xí)器,在有的框架中又稱初級(jí)學(xué)習(xí)器。另一個(gè)是選擇合適的結(jié)合策略。
1.1.1 學(xué)習(xí)器
學(xué)習(xí)器通俗點(diǎn)講就是我們?cè)跈C(jī)器學(xué)習(xí)中所學(xué)的算法,這些常用算法我已在0章構(gòu)建機(jī)器學(xué)習(xí)框架時(shí)羅列出來(lái)了。
多個(gè)學(xué)習(xí)器的構(gòu)成一般有兩種選擇方式。
第一種就是所有的個(gè)體學(xué)習(xí)器都是使用同一種算法,如:在一個(gè)集成學(xué)習(xí)中構(gòu)建5個(gè)學(xué)習(xí)器,每個(gè)學(xué)習(xí)器使用的都是決策樹算法,即5個(gè)決策樹學(xué)習(xí)器。
第二種就是所有個(gè)體學(xué)習(xí)器使用的算法不全是一種類型,如:在一個(gè)集成學(xué)習(xí)中構(gòu)建5個(gè)學(xué)習(xí)器,有兩個(gè)學(xué)習(xí)器是使用決策樹,一個(gè)使用樸素貝葉斯算法,一個(gè)使用支持向量機(jī)算法,還有一個(gè)是使用k近鄰算法。
這兩種方法中都存在多個(gè)分類器,它們各抒己見(jiàn),故為了綜合它們的意見(jiàn),需通過(guò)某種合適的方法來(lái)最終確定強(qiáng)學(xué)習(xí)器。
目前,在集成學(xué)習(xí)中使用相同個(gè)體學(xué)習(xí)器的應(yīng)用比較廣泛。根據(jù)相同個(gè)體學(xué)習(xí)器之間是否存在依賴關(guān)系可以分為兩類,一類是存在強(qiáng)依賴關(guān)系,個(gè)體學(xué)習(xí)器基本上需要串行生成,這樣的代表算法是boosting算法,另一類是不存在強(qiáng)依賴關(guān)系,個(gè)體學(xué)習(xí)器可并行生成,其代表算法是bagging算法。
3)學(xué)習(xí)法
上面兩種方法比較簡(jiǎn)單,但也容易導(dǎo)致學(xué)習(xí)誤差較大,于是就有了學(xué)習(xí)法。對(duì)于學(xué)習(xí)法,代表方法是stacking。當(dāng)使用stacking的結(jié)合策略時(shí),我們不是對(duì)弱學(xué)習(xí)器的結(jié)果做簡(jiǎn)單的邏輯處理,而是再加上一層學(xué)習(xí)器,也就是說(shuō),我們將訓(xùn)練集放到弱學(xué)習(xí)器中學(xué)習(xí),學(xué)習(xí)出的結(jié)果作為特征輸入,訓(xùn)練集的輸出作為輸出,再重新訓(xùn)練一個(gè)學(xué)習(xí)器來(lái)得到最終的結(jié)果。
Stacking原理[4]
假設(shè)我們有兩個(gè)個(gè)體學(xué)習(xí)器,也稱初級(jí)學(xué)習(xí)器model1,model2。
(1) 對(duì)初級(jí)學(xué)習(xí)器model1,利用訓(xùn)練集D進(jìn)行訓(xùn)練,然后用訓(xùn)練好的model1預(yù)測(cè)訓(xùn)練集D和測(cè)試集T的標(biāo)簽列,結(jié)果為P1,T1。
(2) 對(duì)初級(jí)學(xué)習(xí)器model2,重復(fù)步驟(1),得到預(yù)測(cè)標(biāo)簽結(jié)果P2,T2。
(3) 將兩個(gè)初級(jí)學(xué)習(xí)器的結(jié)果合并,得到次級(jí)學(xué)習(xí)器model3的訓(xùn)練集P3=(P1,P2)和測(cè)試集T3=(T1,T2)。也就是說(shuō),有多少個(gè)初級(jí)學(xué)習(xí)器,次級(jí)學(xué)習(xí)器的訓(xùn)練集和測(cè)試集就有多少列(特征)
用P3訓(xùn)練次學(xué)習(xí)器model3,并預(yù)測(cè)T3,得到最終的預(yù)測(cè)結(jié)果。
例[3]:
該圖就是一個(gè)stacking學(xué)習(xí)法。以5折交叉驗(yàn)證為例,先解釋一下,k折交叉驗(yàn)證的思想:將數(shù)據(jù)集A 分為訓(xùn)練集(training set)B和測(cè)試集(test set)C,在樣本量不充足的情況下,為了充分利用數(shù)據(jù)集對(duì)算法效果進(jìn)行測(cè)試,將數(shù)據(jù)集A隨機(jī)分為k份,每次將其中一個(gè)份作為測(cè)試集,剩下k-1份作為訓(xùn)練集進(jìn)行訓(xùn)練。
前面有講到集成學(xué)習(xí)中,根據(jù)各學(xué)習(xí)器之間是否存在強(qiáng)依賴關(guān)系而劃分兩個(gè)流派,有強(qiáng)依賴性的是boosting算法派系,無(wú)則是bagging算法派系。我們今天要講的隨機(jī)森林就是建立在bagging算法之上的。
bagging算法的個(gè)體弱學(xué)習(xí)器的訓(xùn)練集是通過(guò)隨機(jī)采樣得到的,通過(guò)m次隨機(jī)采樣,我們就可以得到m個(gè)訓(xùn)練樣本,重復(fù)這一行為n次,可得到n個(gè)訓(xùn)練樣本集。對(duì)于這n個(gè)采樣集,我們可以分別獨(dú)立的訓(xùn)練出n個(gè)弱學(xué)習(xí)器,再對(duì)這n個(gè)弱學(xué)習(xí)器通過(guò)結(jié)合策略來(lái)得到強(qiáng)學(xué)習(xí)器。
解釋一下:這里的隨機(jī)采樣采用的是自助采樣法,即對(duì)于M個(gè)樣本集的原始訓(xùn)練集,我們每次先隨機(jī)采集一個(gè)樣本放入采樣集中進(jìn)行記錄,之后將該樣本放回原訓(xùn)練集中,也就是說(shuō),下次采樣時(shí)該樣本還有可能被采集到。就這樣采集m次,最終可以得到m個(gè)樣本作為一個(gè)采樣集(對(duì)于bagging算法,一般會(huì)隨機(jī)采集和訓(xùn)練樣本一樣個(gè)數(shù)的樣本量,即M=m),重復(fù)n次,可得n個(gè)采樣集。由于是隨機(jī)采樣,所以n個(gè)采樣集也是大概率呈現(xiàn)不同的,可得到多個(gè)不同的弱學(xué)習(xí)器。
隨機(jī)森林是bagging的一個(gè)特化進(jìn)階版,所謂的特化是因?yàn)殡S機(jī)森林的弱學(xué)習(xí)器都是決策樹。所謂的進(jìn)階是隨機(jī)森林在bagging的樣本隨機(jī)采樣基礎(chǔ)上,又加上了特征的隨機(jī)選擇,其基本思想沒(méi)有脫離bagging的范疇。
先要說(shuō)明一下,隨機(jī)森林的樣本采樣同bagging算法一樣,有放回隨機(jī)采樣m個(gè)樣本作為一個(gè)采樣集,然后重復(fù)這一行為T次,可得T個(gè)采樣集。第二,隨機(jī)森林中所使用的弱學(xué)習(xí)器為決策樹(使用了其他算法作為弱學(xué)習(xí)器的就不是隨機(jī)森林),這里所用到的決策樹與我們之前講的決策樹有了一些不同。之前所講的決策樹會(huì)在所有特征N中選擇一個(gè)最優(yōu)特征作為結(jié)點(diǎn)來(lái)劃分左右子樹。但在隨機(jī)森林中,我們會(huì)先隨機(jī)選擇一部分樣本特征n(這個(gè)數(shù)量應(yīng)該小于N),再?gòu)倪@些特征中選擇一個(gè)最優(yōu)特征作為決策樹的結(jié)點(diǎn)劃分左右子樹。這種做法也進(jìn)一步增強(qiáng)了模型的泛化能力。
注:當(dāng)n=N時(shí),隨機(jī)森林中的決策樹和普通的決策樹是一樣的。當(dāng)n越小時(shí),模型約健壯,當(dāng)對(duì)于訓(xùn)練集的擬合效果比較差,也就是說(shuō)n越小,模型方差越小,但偏差會(huì)越大。故n的選擇也需要慎重,一般會(huì)通過(guò)交叉驗(yàn)證調(diào)參來(lái)獲得較為合適的n值。
4.1 隨機(jī)森林的優(yōu)點(diǎn)
1)訓(xùn)練可以并行化,在大數(shù)據(jù)時(shí)代中訓(xùn)練大樣本上速度具有較大的優(yōu)勢(shì)。
2)由于可以隨機(jī)選擇決策樹結(jié)點(diǎn)的劃分特征,故可在樣本特征維度很高時(shí)依舊能高效訓(xùn)練模型。
3)訓(xùn)練后,可以輸出各個(gè)特征對(duì)于輸出的重要性。
4)采用隨機(jī)采用,訓(xùn)練模型方差小,泛化能力強(qiáng)。
5)實(shí)現(xiàn)比較簡(jiǎn)單。
6)對(duì)缺失的部分特征不敏感。
4.2 隨機(jī)森林的主要缺點(diǎn):
1)在某些噪音比較大的樣本集上,隨機(jī)森林容易陷入過(guò)擬合。
2)對(duì)于取值劃分較多的特征容易對(duì)隨機(jī)森林的決策產(chǎn)生很大的影響,從而影響擬合的模型的效果。
1.乳房腫瘤類型的判斷
2.Titanic中的應(yīng)用
3.基因表達(dá)數(shù)據(jù)分析中的應(yīng)用
4.量化選股中的應(yīng)用
參考文獻(xiàn)
[1] https://www.cnblogs.com/pinard/p/6156009.html
[2] https://www.cnblogs.com/pinard/p/6131423.html
[3] https://blog.csdn.net/wstcjf/article/details/77989963
[4] https://blog.csdn.net/pxhdky/article/details/85175406
[5] https://blog.csdn.net/kylinxu70/article/details/23065651
[6] https://blog.csdn.net/haiyu94/article/details/79400589
(部分文字、圖片來(lái)自網(wǎng)絡(luò),如涉及侵權(quán),請(qǐng)及時(shí)與我們聯(lián)系,我們會(huì)在第一時(shí)間刪除或處理侵權(quán)內(nèi)容。電話:4006770986 負(fù)責(zé)人:張明)