用通俗易懂的方式剖析隨機(jī)森林
點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號
重磅干貨,第一時間送達(dá)
0. 引言
隨機(jī)森林是現(xiàn)在比較流行的一個算法。對于回歸和分類問題有很好的效果。大家有可能有過這樣的經(jīng)歷,辛辛苦苦搭好神經(jīng)網(wǎng)絡(luò),最后預(yù)測的準(zhǔn)確率還不如隨機(jī)森林。既然隨機(jī)森林這么好用,那它的內(nèi)在的機(jī)理到底是什么呢?接下來將會用通俗易懂的方式講一講隨機(jī)森林。
1. 什么是隨機(jī)森林
隨機(jī)森林分解開來就是“隨機(jī)”和“森林”。“隨機(jī)”的含義我們之后講,我們先說“森林”,森林是由很多棵樹組成的,因此隨機(jī)森林的結(jié)果是依賴于多棵決策樹的結(jié)果,這是一種集成學(xué)習(xí)的思想。森林里新來了一只動物,森林舉辦森林大會,判斷這到底是什么動物,每棵樹都必須發(fā)表意見,票數(shù)最多的結(jié)果將是最終的結(jié)果。
隨機(jī)森林最終的模型見下圖示:

森林中的每棵樹是怎么構(gòu)建出來的,是不是每棵樹都是判斷正確的樹,這是我們需要考慮的一些問題。接下來我們就來看一看森林中的每棵樹是怎么來的?怎么選出“優(yōu)秀”的樹?
2. 如何構(gòu)建一棵樹
假設(shè)共有N個樣本,M個特征。
這里我們講“隨機(jī)”的含義。對于每棵樹都有放回的隨機(jī)抽取訓(xùn)練樣本,這里抽取隨機(jī)抽取
的樣本作為訓(xùn)練集,再有放回的隨機(jī)選取m個特征作為這棵樹的分枝的依據(jù),這里要注意
。這就是“隨機(jī)”兩層含義,一個是隨機(jī)選取樣本,一個是隨機(jī)選取特征。這樣就構(gòu)建出了一棵樹,需要注意的是這里生成的樹都是完全生長的樹(關(guān)于為什么是要完全生長的樹,我認(rèn)為的原因是便于計(jì)算每個特征的重要程度,剪枝的話將無法進(jìn)行計(jì)算)。
一棵樹的構(gòu)建方式如下圖所示:

按照這種方法,可以構(gòu)建出很多棵樹,那么這么多棵樹綜合評判的結(jié)果可以作為最后的結(jié)果嗎?當(dāng)然不是的,隨機(jī)森林真正厲害的地方不在于它通過多棵樹進(jìn)行綜合得出最終結(jié)果,而是在于通過迭代使得森林中的樹不斷變得優(yōu)秀(森林中的樹選用更好的特征進(jìn)行分枝)。上面的一個森林相當(dāng)于第一次迭代得到的森林。那么隨機(jī)森林是怎么往后迭代的呢?
3. 如何選出優(yōu)秀的特征
隨機(jī)森林的思想是構(gòu)建出優(yōu)秀的樹,優(yōu)秀的樹需要優(yōu)秀的特征。那我們需要知道各個特征的重要程度。
對于每一棵樹都有m個特征,要知道某個特征在這個樹中是否起到了作用,可以隨機(jī)改變這個特征的值,使得“這棵樹中有沒有這個特征都無所謂”,之后比較改變前后的測試集誤差率,誤差率的差距作為該特征在該樹中的重要程度,測試集即為該樹抽取
樣本之后剩余的樣本(袋外樣本)(由袋外樣本做測試集造成的誤差稱為袋外誤差)。
在一棵樹中對于各特征都計(jì)算一次,就可以算出各特征在該樹中的重要程度。我們可以計(jì)算出所有樹中的特征在各自樹中的重要程度,但這只能代表這些特征在樹中的重要程度不能代表特征在整個森林中的重要程度。那我們怎么計(jì)算各特征在森林中的重要程度呢?每個特征在多棵數(shù)中出現(xiàn),取這個特征值在多棵樹中的重要程度的均值即為該特征在森林中的重要程度。
如下式:

其中ntree表示特征 Ai 在森林中出現(xiàn)的次數(shù)。errOOBt1 表示第 t 棵樹中 Ai 屬性值改變之后的袋外誤差,errOOBt2 表示第t棵樹中正常 Ai 值的袋外誤差。
可以用下圖來表示:

這樣就得到了所有特征在森林中的重要程度。將所有的特征按照重要程度排序,去除森林中重要程度低的部分特征,得到新的特征集。這時相當(dāng)于我們回到了原點(diǎn),這算是真正意義上完成了一次迭代。
4. 如何選出最優(yōu)秀的森林
按照上面的步驟迭代多次,逐步去除相對較差的特征,每次都會生成新的森林,直到剩余的特征數(shù)為止。最后再從所有迭代的森林中選出最好的森林。
迭代的過程如下圖所示:

得到了每次迭代出的森林之后,我們需要選擇出最優(yōu)秀的森林(隨機(jī)森林畢竟是集成學(xué)習(xí),所以最后的森林不一定是最優(yōu)的,一個諸葛亮不一定頂?shù)纳先齻€臭皮匠)。那么我們怎么比較這些森林的好壞呢?這時我們需要引入一個指標(biāo)OOB來評價一個森林的好壞,上面的OOB用于評價套外樣本在樹中的誤差率,這里的評價套外樣本在森林中的誤差率。(因?yàn)槎际抢锰淄鈽颖?,所以名字都是OOB(out-of-bag))
每個樣本在多棵樹中是套外樣本,通過多棵樹的預(yù)測這個樣本的結(jié)果。預(yù)測方式如下圖所示:

預(yù)測出所有所有樣本的結(jié)果之后與真實(shí)值進(jìn)行比較,就可以得到這個森林的套外誤差率。
選擇套外誤差率最小的森林作為最終的隨機(jī)森林模型,即本文的第一張圖。
以上就是我對隨機(jī)森林的理解,希望可以幫助到大家。如果有講的不清楚或者不對的地方,還請各位大佬指正!
原文鏈接:https://blog.csdn.net/cg896406166/article/details/83796557
本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。
