決策樹算法之分類迴歸樹 CART(Classification and Regression Trees)【2】

上一篇文章主要介紹了分類樹,下面咱們再一塊兒來看一下回歸樹,咱們知道,分類決策樹的葉子節點即爲分類的結果;同理,迴歸樹的葉子節點即是連續的預測值。那麼,一樣是迴歸算法,線性迴歸和決策樹迴歸有什麼區別呢?區別在於,前者擬合的是一條直線,然後者卻能夠擬合非線性的數據,以下圖中的數據就是用線性迴歸來擬合的:html

當數據呈現非線性分佈時,例以下面的數據,假設它統計了流行歌手的喜愛程度和年齡的關係,該係數值在 10 歲以前很低,接着在 10 到 20 歲時達到最高,但隨着年齡的增長,該興趣度會逐漸降低,如圖所示:算法

上面的數據若是用線性迴歸來擬合,是這樣的:學習

很明顯,這樣作會獲得較大的 Bias,那麼該數據就不該該使用線性迴歸這種簡單的模型來表徵,此時就須要用到非線性模型了,而回歸樹就是其中的一種。下邊左圖即是使用迴歸樹對該數據進行擬合的結果,而右邊是這棵樹具體的樣子:當 age 小於等於 13 時,結果爲 1.228;age 大於 31 時,結果是 0.41;age 在 (13, 21] 的區域,結果爲 100,剩下區域的結果爲 54。cdn

下面咱們具體看一下這棵迴歸樹是如何構建的htm

構建迴歸樹

首先,咱們在整個樣本空間中選擇一個閾值,該閾值能夠將樣本分爲兩部分,接下來分別對這兩部分求出它們的均值,以均值做爲預測值,計算全部數據的真實值到預測值之間的 SSR(Sum of Squared Residuals),SSR 本質上和 MSE(Mean Squared Error)的概念是一致的,都是衡量總體預測值和真實值之間的差別的,該差別越小越好。blog

以本數據爲例,剛開始咱們選擇的閾值 threshold 爲 1,則下圖中的樣本被閾值(虛線)分爲兩部分,而後分別對左右兩邊的數據求平均,結果如圖中兩條水平實線所示,以水平線做爲每一個區域的預測值,接着咱們對每一個點,求它們離均值之間的差的平方(偏差的平方),並把它們加起來,獲得的結果就是 SSR。遞歸

上圖中的 SSR 爲get

SSR = (0-0)^2 + (0-35.8)^2 + ... + (0-35.8)^2 = 31358

每算完一個 SSR,都要改變閾值,用一樣的方法在新的分類下算一個新的 SSR,如此循環下去,直到遍歷完全部可能的域值,此時咱們就能夠做出一個「域值-SSR」的關係圖,以下:it

以上過程的目的是爲了找一個閾值,可使得 SSR 達到最小,而可使 SSR 最小的域值就是咱們的樹根。反過來理解一下,即咱們須要在特徵空間(定義域)找到一個值,該值把樣本分爲兩類,分別對應了 2 個不一樣的預測結果,此預測結果和樣本真實值(值域)之間的差別要越小越好,在本例中,該值爲 13,示意圖以下:io

和分類樹同樣,只要肯定了樹根的構建算法,後面構造其餘節點實際上和構造樹根是如出一轍的,以上圖爲例,即分別以樹的左右兩邊的子樣本空間爲整個樣本空間,繼續構造子樣本空間的「樹根」,實際上這就是遞歸,同時在遞歸的過程當中,隨着樹的節點不斷分裂,咱們獲得的殘差(SSR)會愈來愈小。

須要注意的是,決策樹若是不設限制,它的節點能夠無限分裂下去,直到葉子節點中只包含 1 個元素爲止,此時整棵樹的殘差達到最小值 0,這樣作會讓咱們的模型在訓練時獲得很低的 Bias,但可想而知的是它的泛化能力很弱,即 Variance 很高,因而便過擬合了,這也是決策樹容易過擬合的緣由。

爲了防止過擬合,一般有 2 個參數能夠設置,一個是樹的高度,另外一個是葉子節點中最小樣本的個數,本文中的模型對這兩個參數的設置分別是 3 和 4;在真實環境中,葉子節點的樣本數通常會設在 20 以上。

多維度特徵的迴歸樹

上面例子是使用單特徵(年齡)來構建迴歸樹,真實項目每每會有多個特徵,此時咱們該如何作呢?咱們在原來的數據集中增長兩個特徵:性別和月支出,以下

年齡 性別 月支出 流行歌手喜愛度
3 male 300 0
7 female 300 5
13 female 500 90
17 male 500 85
18 female 500 99
25 male 4000 75
30 female 5000 40
35 male 7000 0

如今咱們知道了,構造決策樹的要點在於樹根的構造,多個特徵的話,咱們須要分別對每一個特徵,找出可使 SSR 最低的閾值,根據前面學到的知識,對年齡來講,可以使 SSR 最低的域值是 「age<=7」,此時 SSR_{age}=7137

同理,對月支出來講,可以使 SSR 最低的域值是 「expense<=300」,此時 SSR_{expense}=7143

而性別這個特徵比較特別,它只有一個閾值,其 SSR_{gender}=12287

以上三個數字,有興趣的同窗能夠根據上面的表格本身算一下,最終咱們選擇 SSR 最低的特徵及其閾值做爲根節點,即「age<=7」。

知道根節點如何產生後,後面節點的生成就好辦了,因而多維特徵的迴歸樹咱們也構建出來了。

總結

本文主要介紹迴歸決策樹的生成算法,及迴歸樹中比較重要的參數爲:樹的深度和葉子節點中最小的樣本數,這兩個參數能夠防止過擬合問題。

最後咱們一塊兒學習了從多個特徵維度來產生迴歸樹,它和單維度特徵的區別在於,每產生一個節點前,都須要計算每一個特徵的 SSR_{min} 及其對應的閾值,最後取其中最小的 SSR_{min} 對應的特徵和閾值做爲該節點。

參考資料:Regression Trees, Clearly Explained

相關文章:

相關文章
相關標籤/搜索