1. 程式人生 > >機器學習筆記(2)——CART樹

機器學習筆記(2)——CART樹

而後 並不是 參數 生成 AS 最大值 介紹 ... 訓練數據

 CART樹


  CART樹與上一篇文章提到的ID3、C4.5的區別在於:

  (1)CART樹只能夠生成2個結點,即CART樹是一棵二叉決策樹,而後兩者在進行劃分時可以根據特征值的種類生成2個以上的結點。

  (2)CART分類樹的劃分依據是基尼指數(Gini index)最小化準則,而後兩者是根據熵的最小化準則。

  (3)CART樹可以實現回歸分類兩個功能,而後兩者只能用作分類。


  下面首先介紹回歸樹的生成

 回歸樹

  回歸樹的主要問題同樣是如何對輸入空間進行劃分。

  這裏采用了啟發式算法,選擇輸入空間中的第j個特征 Χj 以及這個特征中的一個取值 s ,將它們作為切分變量

切分點。樣本中 Χj > s 的被分為一個區域,余下的被分為另一個區域,每個區域的固定輸出值 cm 是這個區域中所有 yi 的平均值,劃分之後的任務就是求解這兩個區域中 yi 與 cm平方誤差之和 Σ(yi - c1)2+ Σ(yi - c2)2 ,尋找最優切分變量最優切分點的過程就是求解 min [ minΣ(yi - c1)2 + minΣ(yi - c2)2 ] 的過程。找到最優的切分變量 j 和最優切分點 s 之後,將輸入空間劃分為兩個區域。就這樣,對每個劃分後的區域重復上述劃分過程,直到滿足停止的條件為止,這樣就生成了一棵回歸樹,這樣的回歸通常稱為最小二乘回歸樹

  比較特殊的是,先前的分類樹中,輸入空間中的每一個特征只能夠被調用一次,一旦被調用之後就要從特征集合中去除。但是CART回歸樹不存在這種問題,在每次的劃分中,每個可以用來特征都要納入考慮,從中選出一個最優的劃分,也就是特征可以被重復利用


 分類樹

  分類樹用基尼指數選擇最優特征,同時決定該特征的最優二值切分點。

  (基尼指數) 分類問題中,假設有 K 個類,樣本點屬於第 k 類的概率為 pk,則概率分布的基尼指數定義為技術分享圖片

  而由於決策樹是一棵二叉樹,所以這裏涉及的分類問題多數情況下只有2類。

  如果樣本集合 D 根據特征 A 是否取某一可能值 a 被分割成 D1 和 D2 兩部分,則在特征 A 的條件下,集合 D 的基尼指數定義為

                    技術分享圖片

  基尼指數 Gini(D,A)表示經過A = a 分割後集合的不確定性,基尼指數越大,樣本集合的不確定性也就越大,這一點與熵相似。

  CART分類樹的構造   

  根據訓練數據集,從根結點開始,遞歸地對每個結點進行以下操作,構建二叉決策樹:

  (1)設結點的訓練數據集為 D ,對每一個特征 A ,對其可能的取值 a ,根據樣本點對 A = a ,的測試為“是”或“否”將 D 分割成 D1 和 D2 兩部分,計算 A = a 時的基尼指數。

  (2)在所有可能的 A 以及切分點 a 中,選擇使得基尼指數最小的特征及其對應的切分點,從現結點生成兩個子結點,將訓練數據集依特征分配到兩個子結點中去。

  (3)對兩個子結點遞歸地調用(1)、(2),直至滿足停止條件(結點中樣本個數小於閾值,或樣本集基尼系數小於預定閾值)。

  (4)生成CART決策樹。

  CART分類樹的剪枝

  CART分類樹的剪枝算法與ID3、C4.5有所不同。後兩者的剪枝需要人為調節 α 來使得決策樹最優,而CART分類樹的剪枝函數中的 α 是在函數中求得的,不需要人為賦值。

  CART樹剪枝是從生成算法產生的決策樹 T0 底端開始不斷剪枝,直到 T0 的根結點。

  書中提到了一個子樹序列{T0 , T1 , …… , Tn} 的概念。這裏的 n + 1 個子樹就是依次進行剪枝後形成的新決策樹。為了避免混淆,需要與後來的 Tt 區分開來。 Tt 實際指代的是決策樹中以其他結點 t 為根結點的子樹。

  在剪枝的過程中,我們是這樣計算子樹的損失函數的

  技術分享圖片

  其中C(T)為對訓練數據的預測誤差(如基尼指數),| Tt | 為子樹的結點個數,α 為參數。

  這裏 α 的大小決定了剪取子樹的大小。取極端情況,在 α = 0 時,T0 是最優的,不需要進行剪枝;當 α 接近無窮時,剪取的是以 T0 為根結點的子樹。

  那麽問題就是,在沒有給定 α 的情況下,我們該怎麽決定剪去哪一個子樹呢?這裏就需要用到一個概念

  Breiman證明:將 α 從小增大,0=α01<...n<+∞ ,在每個區間[αi,αi+1)中,子樹Ti 是這個區間裏最優的。

  就是說,將 α 劃分為多個區間,每個區間對應了一個最優的子樹。因為子樹的個數是有限的,所以區間的個數也是有限的。所以通過找出區間與其對應的最優子樹,我們就可以找出有限種剪枝的方法以及對應的參數 α ,在這個區間內,剪去與之對應的子樹是最優解。

  接下來的問題就是,怎麽找到這樣的參數 α

  計算 α 的方法

  我們每次剪的都是某個內部結點的子結點,是不會對其他的結點造成影響的,只會對整體決策樹的損失函數造成影響。所以對任意一個內部結點 t 會有兩種情況:

  剪枝之前:內部結點 t 會有 | Tt | 個結點

  設以 t 為根結點的子樹 Tt 的損失函數是

技術分享圖片

  剪枝之後只有內部結點 t 一個單結點

技術分享圖片

  當 α 較小時,1 式 < 2 式,也就是說,將所有葉子結點歸並到根結點之後,損失函數比原來更大了,此時顯然不會選擇剪枝。

  隨著 α 增大,一定會有 1 式 等於 2 式,這時,兩者的損失相等,又因為剪枝之後的構造更簡單,所以會選擇剪枝。

  兩式相等時, α 為

技術分享圖片

  所以當兩個式相等時,假設這一個 α 為 αi ,下一個結點求得的 α 為 αi+1,在區間[αi, αi+1) 中,剪去 Tt 之後能夠使損失減少,在這個區間內,剪去 Tt 是最優解。

  對於決策樹中的每一個內部結點 t ,計算

       技術分享圖片

  書上解釋說它表示的是剪枝後整體損失函數減少的程度,根據公式我們可以看出,它代表的是剪取這棵子樹後損失的增加減少的葉子結點個數的比值。很顯然,根據規則,每一個內部結點都對應了一個 g(t)。

  CART剪枝算法的整個過程是:

  從最初的決策樹T0 開始,設 α = +∞,T = T0

  R:對每個內部結點計算 g(t),選取其中最小的 g(t) 作為 α ,之後對 g(t) = α 的結點 t 進行剪枝, 得到一棵新的決策樹 T,並讓 T1 = T, α1 = α 。

  將新的決策樹 T 再放入步驟 R 中進行運算,一直到 T 成為只有一個根結點和兩個葉結點的樹。這時這個結點成為序列中的最後一個子樹 Tn ,對應 αn ,在 αn 到無窮的區間內, Tn 為最優子樹。

  關於書中提到的 選取其中最小的 g(t) 作為 α ,知乎上一位答主的回答我覺得幫助我理解了

技術分享圖片

  為什麽要選擇最小的g(t)呢?以圖中兩個點為例,結點1和結點2,g(t)2大於g(t)1, 假設在所有結點中g(t)1最小,g(t)2最大,兩種選擇方法:當選擇最大值g(t)2,即結點2進行剪枝,但此時結點1的不修剪的誤差大於修剪之後的誤差,即如果不修剪的話,誤差變大,依次類推,對其它所有的結點的g(t)都是如此,從而造成整體的累計誤差更大。反之,如果選擇最小值g(t)1,即結點1進行剪枝,則其余結點不剪的誤差要小於剪後的誤差,不修剪為好,且整體的誤差最小。從而以最小g(t)剪枝獲得的子樹是該alpha值下的最優子樹! 作者:無涯賢聖
鏈接:https://www.zhihu.com/question/22697086/answer/289513704
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

  在知道了各個 α 區間段中最優的子樹後,采用交叉驗證法在這些子樹中選取一個誤差最小的子樹作為最優子樹即可。

  到這裏,CART樹的學習應該告一段落了。總結學習過程中我比較困惑的主要是剪枝的過程。其中,子樹序列{T0 , T1 , …… , Tn} 與後面的以內部結點 t 為根結點的 Tt 其實並不是一類東西。

  


  以上就是關於CART樹學習的想法,其實自己還是不敢說完全理解了。在之後如果有了新的想法還會繼續補充,如果我的理解有錯誤歡迎指出!

機器學習筆記(2)——CART樹