决策树 随机森林 xgboost_决策树算法之随机森林
在 CART 分類回歸樹的基礎之上,我們可以很容易的掌握隨機森林算法,它們之間的區別在于,CART 決策樹較容易過擬合,而隨機森林可以在一定程度上解決該問題。
隨機森林的主要思想是:使用隨機性產生出一系列簡單的決策樹,并組合它們的預測結果為最終的結果,可謂三個臭皮匠賽過一個諸葛亮,下面我們就來具體了解一下。
產生隨機森林的具體步驟
產生隨機森林的步驟大致為三步
在第 1 步,它是一個可放回抽樣,即所產生的樣本是允許重復的,這種抽樣又被稱為 Bootstrap,例如我們有以下 dummy 數據
在做完 Bootstrap 之后,可能的樣本數據如下
可見,樣本數據中,第 3 條和第 4 條樣本是一樣的,都對應的是原始數據中的第 4 條。
接下來,就是要使用上面的樣本數據來產生決策樹了,產生決策樹的方法和 CART 基本一致,唯一的不同地方在于,節點的構建不是來自于全部的候選特征,而是先從中隨機的選擇 n 個特征,在這 n 個特征中找出一個作為最佳節點。
舉個例子,假設 n = 2,且我們隨機選擇了「血液循環正常」和「血管堵塞」這兩個特征來產生根節點,如下:
我們將在上述兩個特征中選擇一個合適的特征作為根節點,假設在計算完 Gini 不純度之后,「血液循環正常」這個特征勝出,那么我們的根節點便是「血液循環正常」,如下圖所示
接下來我們還需要構建根節點下面的節點,下一個節點將會在剩下的「胸口疼痛」、「血管堵塞」和「體重」三個特征中產生,但我們依然不會計算所有這 3 個特征的 Gini 不純度,而是從中隨機選擇 2 個特征,取這 2 個特征中的 Gini 不純度較低者作為節點。
例如我們隨機選到了「胸口疼痛」和「體重」這兩列,如下:
假設此時「體重」的 Gini 不純度更低,那么第 2 個節點便是「體重」,如下圖:
繼續下去,我們便產生了一棵決策樹。
隨機森林是多棵決策樹,在產生完一棵決策樹后,接著會循環執行上述過程:Bootstrap 出訓練樣本,訓練決策樹,直到樹的數量達到設置值——通常為幾百棵樹。
隨機森林的預測
現在我們產生了幾百棵樹的隨機森林,當我們要預測一條數據時,該怎么做呢?我們會聚合這些樹的結果,選擇預測結果最多的那個分類作為最終的預測結果。
例如我們現在有一條數據:
該條數據被所有樹預測的結果如下:
上述結果聚合后為:
取最多的那項為最終的預測結果,即 Yes——該病人被診斷為患有心臟病。
以上,隨機森林的兩個過程:Bootstrap 和 Aggregate 又被稱為 Bagging。
總結
本文我們一起學習了隨機森林的算法,和 CART 決策樹比起來,它主要被用來解決過擬合問題,其主要的思想為 Bagging,即隨機性有助于增強模型的泛化(Variance) 能力。
參考:
- Random Forests (http://1t.click/bh8X)
相關文章:
- 決策樹算法之分類回歸樹 CART(Classification and Regression Trees)【1】(http://1t.click/bhSm)
- 決策樹算法之分類回歸樹 CART(Classification and Regression Trees)【2】(http://1t.click/bhSn)
總結
以上是生活随笔為你收集整理的决策树 随机森林 xgboost_决策树算法之随机森林的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ 优先队列_什么是队列?(Pyth
- 下一篇: word2vec代码_Word2Vec-