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