天天看點

決策樹之随機森林

在 CART 分類回歸樹

的基礎之上,我們可以很容易的掌握随機森林算法,它們之間的差別在于,CART 決策樹較容易過拟合,而随機森林可以在一定程度上解決該問題。

随機森林的主要思想是:使用随機性産生出一系列簡單的決策樹,并組合它們的預測結果為最終的結果,可謂三個臭皮匠賽過一個諸葛亮,下面我們就來具體了解一下。

産生随機森林的具體步驟

産生随機森林的步驟大緻為三步

  1. 準備樣本
  2. 産生決策樹
  3. 循環第 1 、2 步,直到産生足夠的決策樹,一般為上百個

在第 1 步,它是一個可放回抽樣,即所産生的樣本是允許重複的,這種抽樣又被稱為 Bootstrap,例如我們有以下 dummy 資料

胸口疼痛 血液循環正常 血管堵塞 體重 患心髒病
No 125
Yes 180
210
167

在做完 Bootstrap 之後,可能的樣本資料如下

可見,樣本資料中,第 3 條和第 4 條樣本是一樣的,都對應的是原始資料中的第 4 條。

接下來,就是要使用上面的樣本資料來産生決策樹了,産生決策樹的方法和 CART 基本一緻,唯一的不同地方在于,節點的建構不是來自于全部的候選特征,而是先從中随機的選擇 n 個特征,在這 n 個特征中找出一個作為最佳節點。

舉個例子,假設 n = 2,且我們随機選擇了「血液循環正常」和「血管堵塞」這兩個特征來産生根節點,如下:

我們将在上述兩個特征中選擇一個合适的特征作為根節點,假設在計算完 Gini 不純度之後,「血液循環正常」這個特征勝出,那麼我們的根節點便是「血液循環正常」,如下圖所示

決策樹之随機森林

接下來我們還需要建構根節點下面的節點,下一個節點将會在剩下的「胸口疼痛」、「血管堵塞」和「體重」三個特征中産生,但我們依然不會計算所有這 3 個特征的 Gini 不純度,而是從中随機選擇 2 個特征,取這 2 個特征中的 Gini 不純度較低者作為節點。

例如我們随機選到了「胸口疼痛」和「體重」這兩列,如下:

假設此時「體重」的 Gini 不純度更低,那麼第 2 個節點便是「體重」,如下圖:

決策樹之随機森林

繼續下去,我們便産生了一棵決策樹。

随機森林是多棵決策樹,在産生完一棵決策樹後,接着會循環執行上述過程:Bootstrap 出訓練樣本,訓練決策樹,直到樹的數量達到設定值——通常為幾百棵樹。

随機森林的預測

現在我們産生了幾百棵樹的随機森林,當我們要預測一條資料時,該怎麼做呢?我們會聚合這些樹的結果,選擇預測結果最多的那個分類作為最終的預測結果。

例如我們現在有一條資料:

168

該條資料被所有樹預測的結果如下:

第幾顆樹 預測結果
1
2
...
100

上述結果聚合後為:

次數
82
18

取最多的那項為最終的預測結果,即 Yes——該病人被診斷為患有心髒病。

以上,随機森林的兩個過程:Bootstrap 和 Aggregate 又被稱為 Bagging。

總結

本文我們一起學習了随機森林的算法,和 CART 決策樹比起來,它主要被用來解決過拟合問題,其主要的思想為 Bagging,即随機性有助于增強模型的泛化(Variance) 能力。

參考:

相關文章:

繼續閱讀