決策樹(三) CART演算法

2021-09-27 10:34:51 字數 2320 閱讀 3216

cart(分類與回歸樹),也就是說cart演算法既可以用於分類,也可以用於回歸,它是在給定輸入隨機變數x條件下輸出隨機變數y的條件概率分布的學習方法,其也和回歸樹一樣是二叉樹。

是cart演算法,也是分為:特徵選擇,樹的生成,樹的剪枝。其實感覺前兩步可以合併為一步,因為樹的生成過程中就是不斷的進行特徵的選擇。

李航《統計學習方法》中說,決策樹生成階段,生成的決策樹要盡可能的大,也就是生成階段,模型要複雜。為什麼這麼說,我覺得因為後面還是剪枝的過程,在複雜的模型上剪枝優化得到最優模型,這是最合理也是最有可能得到最優模型的方式。

1.回歸樹的生成

2.分類樹的生成

cart演算法生成的是二叉樹,而分類樹適用的是標稱型資料,每個特徵有好多個特徵值,所以怎麼生成二叉樹是個問題。之前計算分類樹某個節點的劃分標準的時候是計算某個特徵的資訊增益,而cart中計算每個特徵值的基尼係數,找出基尼係數最小的,即選擇最優特徵,作為劃分值,等於那個特徵對應的特徵值放到左子樹,其餘的放到右子樹。

假設有k個分類,樣本點資料第k類的概率為pk,則概率分布的基尼指數定義為:

所以對於給定的樣本集合d,其基尼指數為:

其中ck是d中屬於第k類的樣本子集,k是類的個數。

下面一段話及公式是李航書的原來內容,我感覺不太好理解:

如果樣本集合d根據特徵a是否取某一可能值a被分割成d1和d2兩部分,即

則在特徵a的條件下,集合d的基尼指數定義為

怎麼理解上述公式?我們其它文章介紹過,條件資訊熵是針對整個特徵求的熵,而基尼指數是需要計算某個特徵的某個特徵值的基尼指數,所以我們這裡就不要考慮特徵值之間的關係了。假設我們根據特徵a的某個特徵值a,將整個資料集分為d1和d2兩個部分,d1是特徵a是a的資料集合,而d2是特徵a不是a的集合;|d1|/|d|就是特徵a的值是a的資料集個數佔總集合個數的比例,|d2|/|d|亦然;再看基尼指數的計算公式gini(d1)=1-

其實從上面我麼就可以看出和資訊增益演算法的區別:資訊增益如果選擇了某個特徵分類,是按照所有兄弟種類分的,而cart演算法因為是二叉樹,所以會選擇某個特徵的某個值去分,所以分的子集是特徵值是a的分乙個子集,特徵值不是a的是乙個子集。

這裡有個容易忽略的點,看李航書中的cart生成演算法第(3)步,有這麼一句話:對兩個子節點遞迴呼叫(1),(2),直至滿足停止條件。所以說特徵值等於a的分出來的子集還是需要進行再切分的;另外書上沒有說停止條件,但是前面我們說過生成樹盡可能要複雜,可以參考這個條件,怎麼複雜我覺得可以自己把握,例如基尼指數都小於某個閾值什麼的。

3.cart剪枝

cart演算法的第一階段我們得到的是乙個比較複雜的決策樹,所以第二步我們就需要對生成的決策樹進行剪枝,從而得到泛化能力更強的決策樹。

cart剪枝演算法會生成好多個子樹,然後用交叉驗證的方式選出損失最少的決策樹,作為最終的決策樹。

cart剪枝演算法中用到的損失函式,和其它剪枝演算法的損失函式的基本表示式是一樣的:cα(t) = c(t)+α|t|,其中c(t)是基本的損失函式,參考決策樹生成過程中的誤差計算概念,我們可以理解為資料的混亂程度(如基尼指數,資訊熵),|t|是樹的葉子節點的個數,是模型的複雜度(葉子節點越多,模型越複雜),α>=0是引數,權衡訓練資料的擬合程度與模型的複雜程度。

當α固定時,則一定存在一棵樹,損失是最小的,用tα表示;當α較大時,|t|較小的話整體損失就會達到乙個較大的值,所以偏向選擇模型較簡單(葉子節點較少)的模型;當α較小時,|t|取到較大的值,所以偏向選擇模型相對複雜(葉子節點較多)的模型。

cart演算法對於乙個子樹來說需要定義兩個損失函式:

對於樹內部的任意節點t,以t為單節點數的損失函式是:

以t為根節點的子樹tt的損失函式是:

當α=0及α充分小時,有不等式

就拿以t為根節點的子樹來說,所有分到t節點的樣本,對於這個子樹來說就是這個子樹的所有樣本,也就是還沒有開始往下分類的樣本。對於這個子樹來說,較小的α偏向選擇較複雜的模型,也就是有一定的葉子節點(非根節點t),那麼就是對於根節點t來說就是有分支結構的,那麼就是更加細分了,整體損失就更小了,就會有

所以根據以上等式,我們可以得到

我們要保證α從小到大增加,所以對cart第一階段生成的樹的每個節點計算上述值,然後選擇最小的α,然後將其對應的子樹剪枝,得到子樹t1,然後在t1基礎上再重複上述過程,直到剪枝到根節點。最後得到一系列子樹t1,t2,t3,…,tn並且對應一些列引數α1,α2,α3,…,αn。得到這些子樹後,採用交叉驗證的方式在一系列子樹中選取最優子樹tα。

通過以上過程,我們可以看到cart剪枝比一般剪枝演算法還是複雜一些的;最起碼普通的剪枝演算法,不需要生成那麼多的樹,只需要在一棵樹上不斷計算剪枝前後的誤差,然後決定是否剪枝,思路也相對好理解,cart剪枝就不那麼好理解了。

決策樹(CART演算法)

分類問題中,假設有k個類,樣本點屬於第k類的概率為p kp k pk 則概率分布的基尼指數定義為 其中p kp k pk 表示選中的樣本屬於k kk類別的概率,則這個樣本被分錯的概率為 1 pk 1 p k 1 pk 對於給定的樣本集合d,其基尼指數為 這裡的c kc k ck 是d中屬於第k類的樣...

決策樹和CART決策樹

首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...

決策樹之CART

本系列分享由三篇部落格組成,建議從前往後閱讀學習。決策樹之id3 決策樹之c4.5 決策樹之cart 前面我們講到了決策樹演算法id3,和c4.5。c4.5是在id3的基礎上發展而來的,c4.5還存在的缺陷有 1 c4.5不能解決回歸的問題。2 c4.5需要進行多個對數計算,效率比較低。3 對於離散...