當前位置:
首頁 > 最新 > 決策樹進階版之隨機森林

決策樹進階版之隨機森林

在使用R語言建立一個決策樹回歸模型中,我們建立了兩個回歸決策樹模型,我們發現兩個模型的預測結果偏差較大,但如果我們把兩個結果綜合來看,那結果會不會更為準確呢?沒錯,隨機森林就是使用類似的思路。

隨機森林

隨機森林是一類專門為決策樹分類器設計的組合方法。從名字上就可以看出來,隨機森林是由多棵決策樹組成的,從一棵樹變成了多棵樹,所以形象的稱為森林。隨機又是什麼意思呢?隨機指地是其每棵數都是基於隨機向量的一個獨立集合的值產生的,即每棵決策樹都使用一個從固定概率分布產生的隨機向量。每一棵決策樹都有一個預測結果,那麼隨機森林則會產生多個預測結果,最終的結果則由這些預測結果組合而成。對於分類問題,最終結果的組合方法是投票法,對於預測問題,則取每棵決策樹的平均值

隨機森林生成過程:

圖1:摘自《數據挖掘導論》

在圖1中,細心的我們發現了步驟1和步驟2都使用隨機向量。在隨機森林的生長過程中,我們有多種方法將隨機向量合併到單個樹生長中。常見的方法是:將隨機向量運用到數據集中的行與列,即樣本隨機與特徵隨機。這樣做的好處是:通過對數據集的行與列的隨機採樣,我們有效地降低了單棵決策樹過擬合的問題。按這種演算法得到的每一棵決策樹,預測效果是很弱的,但組合起來就很強大。

R語言建立隨機森林

現在,我們使用隨機森林來建立模型,解決決策樹預測結果不理想的問題。

數據集詳情請點擊這裡查看。

廢話不多說,我們直接建立第一個模型來看看。

模型建立也很簡單,ntree參數指定我們要生成多少棵數。我們先從10棵慢慢增加,看看結果如何。

ps:由於樹是隨機生成的,所以預測結果pred跟你運行的結果會不一樣。

我們第一個隨機森林模型預測為154K,很好,跟面試者的要求很接近。

當生成的樹增加到100時,預測結果為162K,離我們的面試者的要求更近了。

當增加到500時,我們發現預測結果已經很接近面試者的要求了。

我們試著把第三個模型繪製出來:

跟單棵決策樹相比,我們發現隨機森林「台階」變多了,即每一個類的區間也變小了,分類更加詳細了,所以我們的結果更加準確了。

到這裡,我們使用隨機森林做預測崗位的年薪就完成,相信通過隨機森林模型的預測結果,HR可以做出合理的判斷。

隨機森林模型性能

接下來,我們繼續討論一下隨機森林模型性能提升。

Bagging

裝袋(Bagging)又稱自助聚集(boot strap aggregating),是一種根據均勻概率分布從數據集中重複抽樣(有放回的)的技術。每一個自助樣本集都與原數據集一樣大,由於是有放回的抽樣,故有些觀測可能重複出現,而有些觀測可能未被抽到。

很明顯,隨機森林演算法就是:決策樹 + Bagging演算法的組合。在這裡,決策樹稱為基分類器。Bagging通過降低基分類器方差改善了泛化誤差。Bagging的性能依賴於基分類器的穩定性,當基分類器不穩定時,Bagging有助於減低訓練集的隨機波動導致的誤差;如果基分類器穩定,Bagging對模型的性能提升不大,甚至會降低模型性能。決策樹加上Bagging演算法,有效地降低了單個決策樹的方差,從而得到隨機森林。

隨機森林

對於一個隨機森林模型,我們希望:

每棵樹生長越茂盛,模型效果越好;

每棵樹之間的相關性越低,模型效果越好;

那麼對應評價隨機森林模型的重要參數有兩個:

每個決策樹的特徵變數數;

決策樹的個數;

當特徵變數數減少時,每一棵樹的相關性就會相應地減少,每一棵樹的分類效果也相應降低;反之亦然,所以選擇一個「最優」特徵變數數就很關鍵了。

決策樹的個數越大,模型的效果會提升,但是計算量也增加。

上面兩個參數對應到randomForest()函數中,就是mtry參數和ntree參數。

對於mtry參數,一般是逐一嘗試,直到找到「最優」值;

當有多個變數時,我們逐一嘗試選擇誤差率最小的mtry值:

上面參考了

黑_太狼de數據

的代碼,基於模型的誤差率來選擇「最優」mtry值。

對於ntree參數,則可以通過plot()函數繪製出模型的誤差圖來大致判斷。

根據誤差圖,我們大致判斷出ntree在100之後就趨於穩定了。那麼我們就可以選擇ntree = 100。

randomForest包還提供了importance()函數用於計算模型變數的重要性。

importance()函數返回了一個變數矩陣:

「%IncMSE」:相對重要性,基於OOB錯誤率;

IncNodePurity:節點純度,基於Gini指數;

值越大說明變數的重要性越強。

ps:需要在建立模型時,randomForest()函數中設置importance = T。

總結

了解了隨機森林的基本概念,演算法的思路、Bagging技術。使用R建立了模型,通過改變樹的數量,改進了模型。最後了解了隨機森林模型評價因素,如何調節模型參數優化模型。

參考:

R語言之Random Forest隨機森林:

https://www.cnblogs.com/nxld/p/6374945.html

R語言︱決策樹族——隨機森林演算法:

隨機森林演算法介紹及R語言實現:

R語言實現隨機森林:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數據龜 的精彩文章:

使用R語言建立一個決策樹回歸模型

TAG:數據龜 |