李宏毅機器學習10(CART)

迴歸樹

迴歸樹和分類樹都是決策樹的一種,但是迴歸樹用平方誤差最小化準則進行特徵選擇,來生成二叉樹,而分類樹則是用基尼指數(Gini index)最小化準則

迴歸樹生成

假設X與Y分別爲輸入和輸出變量,並且Y是連續變量,在給定訓練數據集
D={(x1,y1),(x2,y2), ,(xN,yN)} D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\}
在這個條件下,看看如何生成迴歸樹。
一個迴歸樹對應着輸入空間的一個劃分以及在劃分的單元上的輸出值。假設劃分的單元是R1R_1RMR_M,並且每個單元的輸出值是固定的輸出值cmc_m,那麼迴歸樹模型的表示如下
f(x)=m=1McmI(xRm) f(x)=\sum_{m=1}^{M} c_{m} I\left(x \in R_{m}\right)
然後可以用平方誤差最小的準則來求解每個單元上的最優輸出值。易知,單元RmR_m上的cmc_m的最優值c^m\hat{c}_mRmR_m上的所有輸入實例xix_i對應的輸出yiy_i的均值,即
c^m=ave(yixiRm) \hat{c}_{m}=\operatorname{ave}\left(y_{i} | x_{i} \in R_{m}\right)
然後採用啓發式方法來對輸入空間劃分,選擇第j個變量x(j)x^{(j)}和它取的值s,作爲切分變量和切分點,並定義兩個區域:
R1(j,s)={xx(j)s}R2(j,s)={xx(j)>s} R_{1}(j, s)=\left\{x | x^{(j)} \leqslant s\right\} 和 R_{2}(j, s)=\left\{x | x^{(j)}>s\right\}
然後尋找最優切分變量j和最優切分點s。具體地,求解
minj,s[minc1xiR1(j,s)(yic1)2+minc2xkR2(J,s)(yic2)2] \min _{j, s}\left[\min _{c_{1}} \sum_{x_{i} \in R_{1}(j, s)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x_{k} \in R_{2}(J, s)}\left(y_{i}-c_{2}\right)^{2}\right]
對固定輸入變量j可以找到最優切分點s。
c^1=ave(yixiR1(j,s))c^2=ave(yixiR2(j,s)) \hat{c}_{1}=\operatorname{ave}\left(y_{i} | x_{i} \in R_{1}(j, s)\right) 和 \hat{c}_{2}=\operatorname{ave}\left(y_{i} | x_{i} \in R_{2}(j, s)\right)
遍歷所有輸入變量,找到最優的切分變量j,構成一個對(j, s)。以此將輸入空間劃分爲兩個區域。接着對每個區域重複上述劃分過程,直到滿足停止條件爲止。這樣就生成一課迴歸樹。這生成的迴歸樹也稱爲最小二乘迴歸樹。

分類樹

分類樹則是用基尼指數(Gini index)最小化準則進行特徵選擇,來生成二叉樹

基尼指數

分類問題中,假設有K個類,樣本點屬於第k類的概率爲pkp_k,則概率分佈的基尼指數定義爲:
Gini(p)=k=1Kpk(1pk)=1k=1Kpk2 \operatorname{Gini}(p)=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2}
對於二類分類問題,若樣本點屬於第1個類的概率是p,則概率分佈的基尼指數爲
Gini(p)=2p(1p)Gini(p) = 2p(1-p)
對於給定的樣本集合D,其基尼指數爲:
Gini(D)=1k=1K(CkD)2 \operatorname{Gini}(D)=1-\sum_{k=1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2}
這裏,ckc_k是D中屬於第k類的樣本子集,K是類的個數。
如果樣本集合D根據特徵A是否取某一可能值a被分割成D1D_1D2D_2兩部分,即
D1={(x,y)DA(x)=a},D2=DD1 D_{1}=\{(x, y) \in D | A(x)=a\}, \quad D_{2}=D-D_{1}
則在特徵A的條件下,集合D的基尼指數定義爲:
Gini(D,A)=D1DGini(D1)+D2DGini(D2) \operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right)
基尼指數Gini(D)表示集合D的不確定性,基尼指數Gini(D,A)表示經A = a 分割後集合D的不確定性。基尼指數值越大,樣本集合的不確定性也就越大,和熵類似。

樹的剪枝

對於CART(就是分類樹和迴歸樹)剪枝,就是從“完全生長”的決策樹的底端剪去一些子樹,使決策樹變小(模型變簡單),從而能夠對未知數據有更準確的預測。步驟由兩步:首先從生成算法產生的決策樹T0T_0底端開始不斷剪枝,直到T0T_0的根節點,形成一個子樹序列T0,T1,...,Tn{T_0, T_1, ..., T_n};然後通過交叉驗證法在獨立的驗證數據集上對子樹序列進行測試,從中選擇最優子樹。
具體步驟如下:
輸入:CART算法生成的決策樹T0T_0;
輸出:最優決策樹TαT_{\alpha}
(1)設k=0, T = T0T_0.
(2)設α=+\alpha=+\infty.
(3)自下而上地對各內部結點t計算C(Tt)C(T_t)Tt\left|T_{t}\right|以及
g(t)=C(t)C(Tt)Tt1α=min(α,g(t)) \begin{array}{c}{g(t)=\frac{C(t)-C\left(T_{t}\right)}{\left|T_{t}\right|-1}} \\ {\alpha=\min (\alpha, g(t))}\end{array}
這裏,TtT_t表示以t爲根節點的子樹,C(Tt)C(T_t)是對訓練數據的預測誤差,Tt\left|T_{t}\right|TtT_t的葉結點個數。
(4)自上而下地訪問內部結點t,如果有g(t) = α\alpha,進行剪枝,並對葉結點t以多數表決法決定其類,得到樹T。
(5)設k=k+1,αk=α,Tk=Tk=k+1, \quad \alpha_{k}=\alpha, \quad T_{k}=T
(6)如果T不是由根節點單獨構成的樹,則回到步驟(4)。
(7)採用交叉驗證法在子樹序列T0,T1, ,TnT_{0}, T_{1}, \cdots, T_{n}中選取最優子樹TαT_{\alpha}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章