
在 CART 分類回歸樹的基礎之上,我們可以很容易的掌握隨機森林算法,它們之間的區(qū)別在于,CART 決策樹較容易過擬合,而隨機森林可以在一定程度上解決該問題。
隨機森林的主要思想是:使用隨機性產生出一系列簡單的決策樹,并組合它們的預測結果為最終的結果,可謂三個臭皮匠賽過一個諸葛亮,下面我們就來具體了解一下。
產生隨機森林的具體步驟
產生隨機森林的步驟大致為三步
- 準備樣本
- 產生決策樹
- 循環(huán)第 1 、2 步,直到產生足夠的決策樹,一般為上百個
在第 1 步,它是一個可放回抽樣,即所產生的樣本是允許重復的,這種抽樣又被稱為 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 |
可見,樣本數(shù)據(jù)中,第 3 條和第 4 條樣本是一樣的,都對應的是原始數(shù)據(jù)中的第 4 條。
接下來,就是要使用上面的樣本數(shù)據(jù)來產生決策樹了,產生決策樹的方法和 CART 基本一致,唯一的不同地方在于,節(jié)點的構建不是來自于全部的候選特征,而是先從中隨機的選擇 n 個特征,在這 n 個特征中找出一個作為最佳節(jié)點。
舉個例子,假設 n = 2,且我們隨機選擇了「血液循環(huán)正?!购汀秆芏氯惯@兩個特征來產生根節(jié)點,如下:
| 血液循環(huán)正常 | 血管堵塞 | 患心臟病 |
|---|---|---|
| Yes | Yes | Yes |
| No | No | No |
| No | Yes | Yes |
| No | Yes | Yes |
我們將在上述兩個特征中選擇一個合適的特征作為根節(jié)點,假設在計算完 Gini 不純度之后,「血液循環(huán)正?!惯@個特征勝出,那么我們的根節(jié)點便是「血液循環(huán)正?!?,如下圖所示

接下來我們還需要構建根節(jié)點下面的節(jié)點,下一個節(jié)點將會在剩下的「胸口疼痛」、「血管堵塞」和「體重」三個特征中產生,但我們依然不會計算所有這 3 個特征的 Gini 不純度,而是從中隨機選擇 2 個特征,取這 2 個特征中的 Gini 不純度較低者作為節(jié)點。
例如我們隨機選到了「胸口疼痛」和「體重」這兩列,如下:
| 胸口疼痛 | 體重 | 患心臟病 |
|---|---|---|
| Yes | 180 | Yes |
| No | 125 | No |
| Yes | 167 | Yes |
| Yes | 167 | Yes |
假設此時「體重」的 Gini 不純度更低,那么第 2 個節(jié)點便是「體重」,如下圖:

繼續(xù)下去,我們便產生了一棵決策樹。
隨機森林是多棵決策樹,在產生完一棵決策樹后,接著會循環(huán)執(zhí)行上述過程:Bootstrap 出訓練樣本,訓練決策樹,直到樹的數(shù)量達到設置值——通常為幾百棵樹。
隨機森林的預測
現(xiàn)在我們產生了幾百棵樹的隨機森林,當我們要預測一條數(shù)據(jù)時,該怎么做呢?我們會聚合這些樹的結果,選擇預測結果最多的那個分類作為最終的預測結果。
例如我們現(xiàn)在有一條數(shù)據(jù):
| 胸口疼痛 | 血液循環(huán)正常 | 血管堵塞 | 體重 | 患心臟病 |
|---|---|---|---|---|
| Yes | No | No | 168 |
該條數(shù)據(jù)被所有樹預測的結果如下:
| 第幾顆樹 | 預測結果 |
|---|---|
| 1 | Yes |
| 2 | Yes |
| ... | ... |
| 100 | No |
上述結果聚合后為:
| 預測結果 | 次數(shù) |
|---|---|
| Yes | 82 |
| No | 18 |
取最多的那項為最終的預測結果,即 Yes——該病人被診斷為患有心臟病。
以上,隨機森林的兩個過程:Bootstrap 和 Aggregate 又被稱為 Bagging。
總結
本文我們一起學習了隨機森林的算法,和 CART 決策樹比起來,它主要被用來解決過擬合問題,其主要的思想為 Bagging,即隨機性有助于增強模型的泛化(Variance) 能力。
參考:
相關文章: