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