在 CART 分類回歸樹(shù)的基礎(chǔ)之上兼吓,我們可以很容易的掌握隨機(jī)森林算法,它們之間的區(qū)別在于从隆,CART 決策樹(shù)較容易過(guò)擬合腹尖,而隨機(jī)森林可以在一定程度上解決該問(wèn)題根资。
隨機(jī)森林的主要思想是:使用隨機(jī)性產(chǎn)生出一系列簡(jiǎn)單的決策樹(shù)盼樟,并組合它們的預(yù)測(cè)結(jié)果為最終的結(jié)果,可謂三個(gè)臭皮匠賽過(guò)一個(gè)諸葛亮惕艳,下面我們就來(lái)具體了解一下搞隐。
產(chǎn)生隨機(jī)森林的具體步驟
產(chǎn)生隨機(jī)森林的步驟大致為三步
- 準(zhǔn)備樣本
- 產(chǎn)生決策樹(shù)
- 循環(huán)第 1 、2 步远搪,直到產(chǎn)生足夠的決策樹(shù)劣纲,一般為上百個(gè)
在第 1 步,它是一個(gè)可放回抽樣终娃,即所產(chǎn)生的樣本是允許重復(fù)的味廊,這種抽樣又被稱為 Bootstrap蒸甜,例如我們有以下 dummy 數(shù)據(jù)
胸口疼痛 | 血液循環(huán)正常 | 血管堵塞 | 體重 | 患心臟病 |
---|---|---|---|---|
No | No | No | 125 | No |
Yes | Yes | Yes | 180 | Yes |
Yes | Yes | No | 210 | No |
Yes | No | Yes | 167 | Yes |
在做完 Bootstrap 之后棠耕,可能的樣本數(shù)據(jù)如下
胸口疼痛 | 血液循環(huán)正常 | 血管堵塞 | 體重 | 患心臟病 |
---|---|---|---|---|
Yes | Yes | Yes | 180 | Yes |
No | No | No | 125 | No |
Yes | No | Yes | 167 | Yes |
Yes | No | Yes | 167 | Yes |
可見(jiàn)余佛,樣本數(shù)據(jù)中,第 3 條和第 4 條樣本是一樣的窍荧,都對(duì)應(yīng)的是原始數(shù)據(jù)中的第 4 條辉巡。
接下來(lái),就是要使用上面的樣本數(shù)據(jù)來(lái)產(chǎn)生決策樹(shù)了蕊退,產(chǎn)生決策樹(shù)的方法和 CART 基本一致郊楣,唯一的不同地方在于,節(jié)點(diǎn)的構(gòu)建不是來(lái)自于全部的候選特征瓤荔,而是先從中隨機(jī)的選擇 n 個(gè)特征净蚤,在這 n 個(gè)特征中找出一個(gè)作為最佳節(jié)點(diǎn)。
舉個(gè)例子输硝,假設(shè) n = 2今瀑,且我們隨機(jī)選擇了「血液循環(huán)正常」和「血管堵塞」這兩個(gè)特征來(lái)產(chǎn)生根節(jié)點(diǎn)点把,如下:
血液循環(huán)正常 | 血管堵塞 | 患心臟病 |
---|---|---|
Yes | Yes | Yes |
No | No | No |
No | Yes | Yes |
No | Yes | Yes |
我們將在上述兩個(gè)特征中選擇一個(gè)合適的特征作為根節(jié)點(diǎn)橘荠,假設(shè)在計(jì)算完 Gini 不純度之后,「血液循環(huán)正忱商樱」這個(gè)特征勝出哥童,那么我們的根節(jié)點(diǎn)便是「血液循環(huán)正常」褒翰,如下圖所示
接下來(lái)我們還需要構(gòu)建根節(jié)點(diǎn)下面的節(jié)點(diǎn)贮懈,下一個(gè)節(jié)點(diǎn)將會(huì)在剩下的「胸口疼痛」、「血管堵塞」和「體重」三個(gè)特征中產(chǎn)生优训,但我們依然不會(huì)計(jì)算所有這 3 個(gè)特征的 Gini 不純度错邦,而是從中隨機(jī)選擇 2 個(gè)特征,取這 2 個(gè)特征中的 Gini 不純度較低者作為節(jié)點(diǎn)型宙。
例如我們隨機(jī)選到了「胸口疼痛」和「體重」這兩列撬呢,如下:
胸口疼痛 | 體重 | 患心臟病 |
---|---|---|
Yes | 180 | Yes |
No | 125 | No |
Yes | 167 | Yes |
Yes | 167 | Yes |
假設(shè)此時(shí)「體重」的 Gini 不純度更低,那么第 2 個(gè)節(jié)點(diǎn)便是「體重」妆兑,如下圖:
繼續(xù)下去魂拦,我們便產(chǎn)生了一棵決策樹(shù)。
隨機(jī)森林是多棵決策樹(shù)搁嗓,在產(chǎn)生完一棵決策樹(shù)后芯勘,接著會(huì)循環(huán)執(zhí)行上述過(guò)程:Bootstrap 出訓(xùn)練樣本,訓(xùn)練決策樹(shù)腺逛,直到樹(shù)的數(shù)量達(dá)到設(shè)置值——通常為幾百棵樹(shù)荷愕。
隨機(jī)森林的預(yù)測(cè)
現(xiàn)在我們產(chǎn)生了幾百棵樹(shù)的隨機(jī)森林,當(dāng)我們要預(yù)測(cè)一條數(shù)據(jù)時(shí),該怎么做呢安疗?我們會(huì)聚合這些樹(shù)的結(jié)果抛杨,選擇預(yù)測(cè)結(jié)果最多的那個(gè)分類作為最終的預(yù)測(cè)結(jié)果。
例如我們現(xiàn)在有一條數(shù)據(jù):
胸口疼痛 | 血液循環(huán)正常 | 血管堵塞 | 體重 | 患心臟病 |
---|---|---|---|---|
Yes | No | No | 168 |
該條數(shù)據(jù)被所有樹(shù)預(yù)測(cè)的結(jié)果如下:
第幾顆樹(shù) | 預(yù)測(cè)結(jié)果 |
---|---|
1 | Yes |
2 | Yes |
... | ... |
100 | No |
上述結(jié)果聚合后為:
預(yù)測(cè)結(jié)果 | 次數(shù) |
---|---|
Yes | 82 |
No | 18 |
取最多的那項(xiàng)為最終的預(yù)測(cè)結(jié)果荐类,即 Yes——該病人被診斷為患有心臟病怖现。
以上,隨機(jī)森林的兩個(gè)過(guò)程:Bootstrap 和 Aggregate 又被稱為 Bagging玉罐。
總結(jié)
本文我們一起學(xué)習(xí)了隨機(jī)森林的算法屈嗤,和 CART 決策樹(shù)比起來(lái),它主要被用來(lái)解決過(guò)擬合問(wèn)題吊输,其主要的思想為 Bagging饶号,即隨機(jī)性有助于增強(qiáng)模型的泛化(Variance) 能力。
參考:
相關(guān)文章: