【機器學習】決策樹詳解之分類與迴歸樹(CART)

版權聲明:本文爲博主原創文章,未經博主允許不得轉載https://blog.csdn.net/pxhdky/article/details/84203421

在上一篇博客【機器學習】決策樹詳解(ID3、C4.5)中,我們詳細描述了決策樹的原理、劃分準則、生成、剪枝、連續值處理、缺失值處理,這篇博客我們主要講述決策樹算法中的CART算法。

1. CART算法

分類與迴歸樹(Classification and regression tree,CART)模型既可用於分類,也可用於迴歸。

CART假設決策樹是二叉樹,內部結點特徵的取值爲“是”和“否”,左分支是取值爲“是”的分支,右分支是取值爲“否”的分支,這樣的決策樹等價於遞歸地二分每個特徵,將輸入空間即特徵空間劃分爲有限個單元,並在這些單元上確定預測的概率分佈,也就是在輸入給定的條件下輸出的條件概率分佈。

2. CART生成

CART生成就是遞歸地構建二叉決策樹的過程,對迴歸樹用平方誤差最小化準則,對決策樹用基尼係數最小化準則,進行特徵選擇,生成二叉樹。

與ID3和C4.5不同的是,CART構建的是二叉樹,所以在劃分選擇時,ID3和C4.5只需要選擇最優劃分特徵,而CART不僅需要選擇最優劃分特徵,還需要選擇特徵的最優劃分點。

一棵迴歸樹對應着輸入空間的一個劃分以及在劃分單元上的輸出值。假設已經把輸入空間劃分爲中號個單元{R_1},{R_2},\ cdots,{R_M},並且在每個單元{R M}上有一個固定的輸出值釐米。於是迴歸樹模型可以表示爲:

                                                                 f \ left(x \ right)= \ sum \ limits_ {m = 1} ^ M {{c_m} I}          (1)

其中,I = \left\{ {\begin{array}{*{20}{c}} 1&{x \in {R_m}}\\ 0&{x \notin {R_m}} \end{array}} \right.

當輸入空間的劃分確定時,可以用平方誤差\ sum \ limits _ {{x_i} \ in {R_m}} {{{\ left({{y_i}  -  f \ left({{x_i}} \ right)} \ right)} ^ 2}}來表示迴歸樹對於訓練數據的預測誤差,用平方誤差最小的準則求解每個單元上的最優輸出值。

對於一個固定的切分變量Ĵ,切分點小號按照特徵Ĵ的值將輸入空間劃分爲兩個區域R_1R_2。如果Ĵ是連續特徵,則將輸入空間劃分爲{R_1} \ left({j,s} \ right)= \ left \ {{x \ left |  {{x ^ j} \ le s} \ right。} \ right \}{R_2} \ left({j,s} \ right)= \ left \ {{x \ left |  {{x ^ j}> s} \ right。} \ right \}。如果Ĵ是離散特徵,則將輸入空間劃分爲  {R_1}\left( {j,s} \right) = \left\{ {x\left| {{x^j} = s} \right.} \right\} 和{R_2} \ left({j,s} \ right)= \ left \ {{x \ left |  {{x ^ j} \ ne s} \ right。} \ right \}

2.1迴歸樹生成

爲了尋找最優切分變量Ĵ和最優切分點小號,需要遍歷所有變量Ĵ,並對每一個切分變量Ĵ掃描其所有切分點,找到該變量的最優切分點小號,以構成\ left({j,s} \ right)對。然後在所有的\ left({j,s} \ right)對中找到最優的\ left({j,s} \ right)對,也就是求解以下公式:

                               \ mathop {\ min} \ limits_ {j,s} \ left [{\ mathop {\ min} \ limits _ {{c_1}} \ sum \ limits _ {{x_1} \ in {R_1} \ left({j,s } \})} {{{\ left({{y_i}  -  {c_1}} \ right)} ^ 2} + \ mathop {\ min} \ limits _ {{c_2}} \ sum \ limits _ {{x_2} \在{R_2} \ left({j,s} \ right)} {{{\ left({{y_i}  -  {c_2}} \ right)} ^ 2}}}} \ right]          (2)

找到最優切分變量Ĵ和最優切分點小號之後,區域R_1R_2的最優輸出值{\ widehat c_m}就是R M上所有輸入樣本X_I對應的輸出義的均值,即:

                                                    {\ widehat c_m} = \ frac {1} {{{N_m}}} \ sum \ limits _ {{x_i} \ in {R_m} \ left({j,s} \ right)} {{y_i}},m = 1,2          (3)

接下來,對每個區域都重複上述劃分過程,直到滿足停止條件爲止,這樣就生成了一棵迴歸樹。這樣的迴歸樹通常稱爲最小二乘迴歸樹(最小二乘迴歸樹)。

2.2分類樹生成

分類樹和迴歸樹唯一的區別在於,分類樹採用基尼係數作爲劃分準則,\ left({j,s} \ right)對的求解公式也就變成了:

                                                    \ mathop {\ min} \ limits_ {j,s} \ left [{Gini \ left({D,{R_1}} \ right)+ Gini \ left({D,{R_2}} \ right)} \ right]          (4)

3. CART算法流程

輸入:訓練集D,特徵集A,閾值\epsilon

過程:函數TreeGenerate( D , a )

       1.生成結點node

       2.如果D中樣本全部具有相同輸出值C,則置node的輸出值爲C;並返回node

       3.如果A = \emptyset或者D中所有樣本在A上取值都相同,則將node置爲葉結點,其輸出爲D中樣本數最多的類或者D中所有樣本的平均值,返回node

       4. (與上篇中提到的ID3和C4.5相比,只有這一步有區別)否則,遍歷A中所有變量,並對每一個切分變量掃描所有其切分點,將輸入空間劃分爲兩個區域R_1R_2找到該變量的最優切分點小號,構成一個\ left({j,s} \ right)對。然後在所有的\ left({j,s} \ right)對中找到最優的\ left({j,s} \ right)對。

       (1)對於迴歸樹而言,求解:

                                       \ mathop {\ min} \ limits_ {j,s} \ left [{\ mathop {\ min} \ limits _ {{c_1}} \ sum \ limits _ {{x_1} \ in {R_1} \ left({j,s } \})} {{{\ left({{y_i}  -  {c_1}} \ right)} ^ 2} + \ mathop {\ min} \ limits _ {{c_2}} \ sum \ limits _ {{x_2} \在{R_2} \ left({j,s} \ right)} {{{\ left({{y_i}  -  {c_2}} \ right)} ^ 2}}}} \ right] 

              根據選定的最優\ left({j,s} \ right)劃分兩個子區域,並決定相應的輸出值:

                                                    {\ widehat c_m} = \ frac {1} {{{N_m}}} \ sum \ limits _ {{x_i} \ in {R_m} \ left({j,s} \ right)} {{y_i}},m = 1,2

       (2)對於分類樹而言,求解:

                                                    \ mathop {\ min} \ limits_ {j,s} \ left [{Gini \ left({D,{R_1}} \ right)+ Gini \ left({D,{R_2}} \ right)} \ right]

              根據選定的最優\ left({j,s} \ right)劃分兩個子區域,並將類別標記爲其樣本數最多的類。

       5.如果特徵Ĵ的不確定性提升(如信息增益,信息增益比)小於閾值\epsilon,則將node置爲葉結點,返回node

       6.否則,每個子區域R_m(I = 1,2)對應構建一個子結點,其輸出爲樣本數最多的類或者所有樣本的平均值,返回結點node及其子結點構成的樹;

       7.最後,對兩個分支結點,以R M爲訓練集,A  -  \ left \ {{j} \ right \}爲特徵集,遞歸調用TreeGenerate \ left({{R_m},A  -  \ left \ {{j} \ right \}} \ right),得到子樹Tm值,其並將結合到T上。

輸出:一棵以node爲根結點的迴歸樹T:f \ left(x \ right)= \ sum \ limits_ {m = 1} ^ M {{c_m} I} \ left({x \ in {R_m}} \ right)或者分類樹。

參考文獻:

1.《統計學習方法》第五章決策樹——李航

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