Decision Tree 決策樹

決策樹(decision tree)是一種基本的分類與迴歸方法。《統計機器學習》主要介紹了用於分類的決策樹,《機器學習實戰》主要介紹了迴歸樹,二者結合能幫助很好地理解決策樹。node

在分類問題中,表示基於特徵對實例進行分類的過程。它能夠被認爲是if-then規則的集合,也能夠認爲是定義在特徵空間與類空間上的條件機率分佈。其主要有點是模型具備可讀性,分類速度快。學習時,利用訓練數據,根據損失函數最小化的原則創建決策樹模型。預測時,對新的數據,利用決策書模型進行分類。算法

決策樹學習一般包括3個步驟:特徵選擇、決策樹的生成修剪機器學習

這些思想主要來源與Quinlan在1986年提出的ID3算法和1992年提出的C4.5算法,以及遊Breiman等人在1984年提出的CART算法。函數

決策樹模型

分類決策樹模型是一種描述對實例進行分類的樹形結構。決策樹由結點(node)和有向邊(directed edge)組成。結點有兩種類型:內部節點(internal node)和葉節點(leaf node). 內部節點表示一個特徵或屬性,葉節點表示一個類。學習

用決策樹分類,從根節點開始,對實例的某一特徵進行測試,根據測試結果,將實例分配到其子節點;這時,每個子節點對應着該特徵的一個取值。如此遞歸地對實例進行測試並分配,直至到達葉節點。最後將實例分到葉節點的類中。測試

決策樹與if-then規則

能夠將決策樹當作一個if-then規則的集合。由決策樹的根節點到葉節點構建一條規則;內部節點的特徵對應着規則的條件,而葉節點的類對應着規則的結論。
決策樹的路徑或其對應的if-then規則集合有一個重要的性質:互斥而且完備。這就是說,沒一個實例都被一條路徑或一條規則所覆蓋,並且製備一條路徑或一條規則所覆蓋。優化

決策樹與條件機率分佈

決策樹的條件機率分佈定義在特徵空間的一個partition上。將特徵空間劃分爲互不相交的單元cell或區域region,而且在每一個單元上定義了一個類的機率分佈就構成了一個條件機率分佈。ui

決策樹的一條路徑就對應與劃分中的一個單元。決策樹所表示的條件機率分佈在由各個單元給定條件下類的條件機率分佈組成。
假設$X$爲表示特徵的隨機變量,$X$表示爲類的隨機變量,那麼這個條件機率分佈爲$P(Y|X)$.$X$取之於給定劃分下但與的集合,$Y$取值於類的結合。各葉節點上的條件機率通常在某一個類上機率最大。orm

決策樹的學習

決策樹學習是由訓練數據集估計條件機率模型。基於特徵空間劃分的類的條件機率模型有無窮多個。咱們選擇的條件機率模型應該不只對訓練數據有很好的擬合,並且對未知數據有很好的預測遞歸

決策樹學習用損失函數表示這一目標。決策樹學習的損失函數一般是正則化極大似然函數。決策樹學習的策略是以損失函數爲目標函數的最小化
當損失函數肯定之後,學習問題就變爲在損失函數意義下選擇最優的決策樹的問題。由於從可能的決策樹中選取最優決策樹是NP(Non-Polynomial)徹底問題,因此現實中決策樹學習算法一般採用啓發式(heuristic)方法,近似求解這一最優化問題。這樣獲得的決策樹一般是次最優(sub-optimal)的。

啓發式算法(Heuristic Algorithm)有不一樣的定義:一種定義爲,一個基於直觀或經驗的構造的算法,對優化問題的實例能給出可接受的計算成本(計算時間、佔用空間等)內,給出一個近似最優解,該近似解於真實最優解的偏離程度不必定能夠事先預計;另外一種是,啓發式算法是一種技術,這種技術使得在可接受的計算成本內去搜尋最好的解,但不必定能保證所得的可行解和最優解,甚至在多數狀況下,沒法闡述所得解同最優解的近似程度。我比較贊同第二種定義,由於啓發式算法如今尚未完備的理論體系,只能視做一種技術。

決策樹學習的算法一般是一個遞歸地選擇最優特徵,並根據該特徵對訓練數據進行分割,使得各個子數據集有一個最好的分類的過程。這一過程對應着對特徵空間的劃分,也對應着決策樹的構建。

決策樹學習算法包含特徵選擇、決策樹的生成與決策樹的剪枝過程。因爲決策樹表示一個條件機率分佈,因此深淺不一樣的決策樹對應這不一樣複雜度的機率模型。決策書的生成對應於模型的局部選擇,決策樹的剪枝對應於模型的全局選擇

特徵選擇

若是利用一個特徵進行分類的結果與隨機分類的記過沒有不好別則稱這個特徵沒有分類能力。經驗上扔掉這個特徵對決策書學習的精度影響不大。一般特徵選擇的準則是信息增益或信息增益比。

特徵選擇是決定用那個特徵來劃分特徵空間。信息增益(information gain)就可以很好地表示這一直觀的準則。

Information Gain

在信息論與機率統計中,上(entropy)是表示隨機變量不肯定性的度量。

隨機變量$X$的熵定義爲
$$H(X)=- \sum_{i=1}^{n}p_{i}log p_{i} $$

定義$0log0=0 $
熵只依賴於$X$的分佈,而與$X$的取值無關,因此也將$X$的熵記做
$$H(p)=- \sum_{i=1}^{n}p_{i}log p_{i} $$
熵越大,隨機變量的不肯定就越大。

當p=0或者p=1的時候,隨機變量徹底沒有不肯定性。當p=0.5時,$H(p)=1$,熵取值最大,隨機變量不肯定最大。

設有隨機變量$(X,Y)$,其聯合機率分佈爲
$P(X=x_{i},Y=y_{j})=p_{ij},i=1,2,...,n; j=1,2,...,m$

條件熵$H(Y|X)$表示在已知隨機變量$X$下隨機變量$Y$的不肯定性。定義爲X在給定條件下Y的條件機率分佈的熵對X的數學指望

$$H(Y|X)= \sum_{i=1}^{n} p_{i}H(Y|X=x_{i})$$

當熵和條件熵中的機率由數據估計(特別是極大似然估計)獲得時,所對應的上與條件熵分別稱爲經驗熵(empirical entropy)和經驗條件熵(empirical conditional entropy)。此時,若是有0機率,令$0long0=0$

信息增益(information gain)

表示得知特徵X的信息而使得類Y的信息的不肯定性減小的程度。
特徵A對訓練數據集的信息增益$g(D,A)$,定義爲集合D的經驗熵H(D)與特徵A在給定條件下D的經驗條件熵H(D|A)只差,即
$$g(D,A)=H(D)-H(D|A)$$

信息增益算法

輸入: 訓練數據集D和特徵A:
輸出:特徵A對訓練集D的信息增益g(D,A).

(1)計算數據集D的經驗熵H(D)

$$H(D)=-\sum_{k=1}^{K} \frac{|C_{k|}}{|D|}log_{2}\frac{|C_{k}|}{|D|}$$

(2)計算特徵A對數據集D的經驗條件熵H(D|A)

$$H(D|A)=\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}H(D_{i})=-\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}\sum_{k=1}^{K} \frac{|D_{ik|}}{|D_{i}}log_{2}\frac{|D_{ik}|}{|D_{i}|}$$

計算信息增益

$$g(D,A)=H(D)-H(D|A)$$

信息增益的缺點

在數據類別越多的屬性上信息增益越大,好比在主鍵上信息增益很是大,但明顯會致使overfitting,因此信息增益有必定缺陷

信息增益比

對於信息增益的問題,咱們採用信息增益比(information gain ratio)來對這一問題進行校訂。
$g_{R}(D,A)$ 定義爲信息增益和訓練集D關於特徵A的值的熵${H_{A}(D)}$之比

$$g_{R}(D,A)=\frac{g(D,A)}{H_{A}(D)}$$
其中$H_{A}(D)=-sum_{i=1}^{n} frac{|D_{i|}}{|D|}log_{2}frac{|D_{i}|}{|D_|}$,n是特徵A取值的個數。
$H_{A}(D)$能夠理解爲一個懲罰項。

ID3 算法

ID3 算法的核心是在決策樹各個結點上應用信息增益準則選擇特徵,遞歸地構建決策樹。具體方法是:從根節點(root node)開始,對結點計算全部的特徵的信息增益,選擇信息增益最大的特徵做爲結點的特徵,由該特徵的不一樣取值創建子結點;再對子結點遞歸地調用以上方法,構建決策樹;直到全部特徵的信息增益均很小(小於閾值$varepsilon$)沒有特徵能夠選擇爲止

ID3選用信息增益最大的特徵做爲結點的特徵。至關於用極大似然法進行機率模型的選擇

算法

輸入:訓練集D,特徵集A,閾值$varepsilon$

輸出:決策樹T.

(1)若D中全部實例屬於同一類$C_{k}$,則T爲單節點樹,並將$C_{k}$做爲該結點的類標記,返回T;

(2)若$A=phi$,則T爲單結點樹,並將D中實例數最大的類$C_{k}$做爲該結點的類標記,返回T

(3)不然,計算A中各特徵對D的信息增益,選擇信息增益最大的特徵$A_{g}$
(4)若是$A_{g}$的信息增益小於閾值$varepsilon$,則置T爲單結點樹,並將D中實例最大的類$C_{k}$做爲該結點的類標記,返回T;

(5)不然,對$A_{g}$的每一可能值$a_{i}$,依$A_{g}=a_{i}$將D分割爲若干非空子集$D_{i}$,將$D_{i}$中實例數最大的類做爲標記,構建子結點,由結點及其子結點構成樹T,返回T;

(6)對第i個子結點,以$D_{i}$爲訓練集,以$A-{A_{g}}$爲遞歸地調用(1)-(5)獲得子樹$T_{i}$,返回$T_{i}$

若是信息增益小於閾值$varepsilon$,或結點爲空時中止並返回

ID3只有樹的生成,因此改算法生成的樹容易產生過擬合。

並且只用信息增益每次容易選擇變量值多的feature。

C4.5 的生成算法

C4.5算法與ID3算法類似,C4.5算法對ID3作了改進,在生成的過程當中用信息增益比來選擇特徵。

算法

輸入:訓練集D,特徵集A,閾值$varepsilon$

輸出:決策樹T.

(1)若D中全部實例屬於同一類$C_{k}$,則T爲單節點樹,並將$C_{k}$做爲該結點的類標記,返回T;

(2)若$A=phi$,則T爲單結點樹,並將D中實例數最大的類$C_{k}$做爲該結點的類標記,返回T

(3)不然,計算A中各特徵對D的信息增益比,選擇信息增益比最大的特徵$A_{g}$
(4)若是$A_{g}$的信息增益比小於閾值$varepsilon$,則置T爲單結點樹,並將D中實例最大的類$C_{k}$做爲該結點的類標記,返回T;

(5)不然,對$A_{g}$的每一可能值$a_{i}$,依$A_{g}=a_{i}$將D分割爲若干非空子集$D_{i}$,將$D_{i}$中實例數最大的類做爲標記,構建子結點,由結點及其子結點構成樹T,返回T;

(6)對第i個子結點,以$D_{i}$爲訓練集,以$A-{A_{g}}$爲遞歸地調用(1)-(5)獲得子樹$T_{i}$,返回$T_{i}$

決策樹的剪枝

決策樹生成算法遞歸地產生決策樹,直到不能繼續下去爲止。這樣產生的樹每每訓練集很準確,但對未知測試數據卻不那麼準確,容易overfitting。
解決這個問題的辦法是考慮決策樹的複雜度,對已生成的決策樹進行簡化。

在決策樹學習中將已生成的樹進行簡化的過程稱爲剪枝(pruning)。具體地,剪枝從已生成的樹上裁掉一些子樹或葉結點,並將其父結點做爲新的葉節點,從而簡化分類樹模型。

決策樹的剪枝每每經過極小化決策樹總體的損失函數(loss function)或代價函數(cost function)來實現。

設樹T的葉節點個數爲|T|,t是樹T的葉結點,該葉結點有${N_{t}}$個樣本點,其中k類的樣本點有$N_{tk}$個,$H_{t}(T)$爲葉結點上t的經驗熵,$alphage0$爲參數,則決策樹學習的損失函數能夠定義爲

$$C_{\alpha}(T)=\sum_{t=1}^{|T|}N_{t}H_{t}(T)+\alpha|T| (5.11)$$
其中經驗熵爲
$$H_{t}(T)=-\sum_{k}\frac{N_{tk}}{N_{t}}log\frac{N_{tk}}{N_{t}} (5.12) $$

在損失函數中,將式(5.11)右端的第1項記做
$$C(T)=\sum_{t=1}^{|T|}N_{t}H_{t}(T)=-\sum_{t=1}^{|T|}\sum_{k}\frac{N_{tk}}{N_{t}}log\frac{N_{tk}}{N_{t}}) (5.13) $$

這時有
$$C_{\alpha}(T)=C(T)+\alpha|T| (5.14)$$

式(5.14)中,C(T)表示模型對訓練數據的預測偏差,即模型與訓練數據的擬合程度,|T|表示模型複雜度,參數$alphage0$控制二者之間的影響。較大的$alpha$促使選擇較簡單的模型(樹),較小的$alpha$促使選擇較複雜的模型(樹)。$alpha=0$意味着只考慮模型與訓練數據的擬合程度,不考慮模型的複雜度。

能夠看出,決策樹生成只考慮了經過提升信息增益(或信息增益比)對訓練數據進行更好的擬合。而決策樹剪枝經過優化損失函數還考慮了減少模型複雜度。決策樹生成學習局部的模型,而決策樹剪枝學習總體的模型。

式(5.11)或(5.14)定義的損失函數的極小化等價於正則化的極大似然估計。因此,利用損失函數最小原則進行剪枝就是用正則化的極大似然估計進行模型選擇。

剪枝算法

輸入: 生產算法產生的子樹,參數$alpha$
輸出:修剪後的子樹$T_{alpha}$

(1)計算每一個結點的經驗熵

(2)遞歸地從樹的葉結點向上往回縮

(3)若是退回後的樹的子樹$T_{B}$損失函數的值更小,則進行剪枝,返回(2),直到不能獲得損失函數更小的子樹$T_{A}$

CART算法

分類與迴歸樹(classification and regression tree, CART)模型由Breiman等人在1984年提出,是應用普遍的決策樹學習方法。CART一樣由特徵選擇、數的生成和剪枝組成,便可用於分類也可用於迴歸。

CART是在給定輸入隨機變量X條件下輸出隨機變量Y的條件機率分佈的學習方法。CART假設決策樹是二叉樹,內部結點特徵的取值爲"是"和"否",左分支是取值爲「是」的分支,右分支是取值爲「否」的分支。這樣的決策樹等價於遞歸地二分每一個特徵,將輸入空間即特徵空間劃分爲有限個單元,並在這些單元上肯定預測的機率分佈,也就是在輸入給定的條件下輸出條件機率分佈。

CART算法由如下兩步組成:
(1)決策樹生成:基於訓練數據生成決策樹,生成的決策樹要儘可能大;
(2)決策樹剪枝:用驗證數據集對已生成的樹進行剪枝並選擇最優子樹,這時用損失函數最小做爲剪枝的標準。

CART的生成

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

  1. 迴歸樹的生成
    假設X與Y分別爲輸入和輸出變量,而且Y是連續變量,給定訓練數據集考慮如何生成迴歸樹。

一個迴歸樹對應着輸入空間(即特徵空間)的一個劃分以及在劃分的單元上的輸出值。假設已將輸入空間劃分爲M個單元$R_{1},R_{2},...,R_{M}$,而且在每一個單元$R_{m}$上有一個固定的輸出值$C_{m}$,因而回歸樹模型可表示爲:
$$f(x)=\sum_{m=1}^{M}c_{m}I(x \in R_{m})$$

當輸入空間的劃分肯定時,能夠用平方偏差$sum_{x_{i}R_{m}}(y_{i}-f(x_{i}))^2$來表示迴歸樹對於訓練數據的預測偏差,用平方偏差最小的準則求解每一個單元上的最優輸出值。易知,單元$R_{m}$上的$C_{m}$的最優值$hat{ C_{m}}$是$R_{m}$上的全部輸入實例$x_{i}$對應的輸出$y_{i}$的均值,即
$$\hat{c_{m}}=ave(y_{i}|x_{i} \in R_{m})$$
問題是怎樣對輸入空間進行劃分。這裏採用啓發式的方法,選擇第j個變量$x^{(j)}$和它取的值s,做爲切分變量(splitting variable)和切分點(splitting point),並定義兩個區域:

$R_{1}(j,s)={x | x^{j} le s}$ 和 $R_{2}(j,s)={x | x^{j} ge s}$

而後尋找最優切分變量j和最優切分點s。具體地,求解:
$$\min\limits_{j,s} \left[ \min\limits_{c_{1}}\sum_{x_{i} \in R_{1}(j,s)}(y_{i}-c_{1})^2+\min\limits_{c_{2}}\sum_{x_{i} \in R_{2}(j,s)}(y_{i}-c_{2})^2 \right] $$

對固定輸入變量j能夠找到最優切分點s。

$hat{c_{1}}=ave(y_{i}|x_{i} in R_{1}(j,s))$ 和 $hat{c_{2}}=ave(y_{i}|x_{i} in R_{2}(j,s))$

遍歷全部輸入變量,找到最優的切分變量j,構成一個對(j,s).依次將輸入空間劃分爲兩個區域。接着,對每一個區域重複上述劃分過程,指導知足中止條件爲止。這樣就生成一個迴歸樹。這樣的迴歸樹一般稱爲最小二乘迴歸樹(least squares regression tree),現將算法敘述以下:

算法(最小二乘迴歸樹生成算法)

輸入:訓練數據集D:
輸出:迴歸樹$f(x)$
在訓練集所在的輸入空間中,遞歸地將每一個區域劃分爲兩個子區域並決定每一個子區域上的輸出值,構建二叉決策樹:
(1)選擇最優劃分變量j與切分點s,求解

$$\min\limits_{j,s} \left[ \min\limits_{c_{1}}\sum_{x_{i} \in R_{1}(j,s)}(y_{i}-c_{1})^2+\min\limits_{c_{2}}\sum_{x_{i} \in R_{2}(j,s)}(y_{i}-c_{2})^2 \right] (5.21)$$

遍歷變量j,對固定的切分變量j掃描切分點s,選擇使式(5.21)達到最小值的對(j,s).
(2)用選定的對(j,s)劃分區域並決定相應的輸出值

<center>$R_{1}(j,s)={x | x^{j} le s}$ 和 $R_{2}(j,s)={x | x^{j} ge s}$</center>

$$\hat{c_{m}}=\frac{1}{N_{m}}\sum_{x_{i} \in R_{m}(j,s)}y_{i},x \in R_{m}, m =1,2$$

繼續對兩個子區域調用步驟(1)(2),直到知足中止條件。
將輸入空間劃分爲M個區域$R_{1},R_{2},...,R_{M}$,生成決策樹:

$$f(x)=\sum_{m=1}^{M}\hat{c_{m}}I(X \in R_{m})$$

分類樹的生成

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

基尼係數

分類問題中,假設有K個類,樣本點屬於第k類的機率爲$p_{k}$,則機率分佈的基尼指數定義爲
$$Gini(p)=\sum_{k=1}^{K}p_{k}(1-p_{k})=1-\sum_{k=1}^{K}p_{k}^2 (5.22)$$

對於二分類問題,若樣本點屬於第1個類的機率是p,則機率分佈的基尼指數爲
$$Gini(p)=2p(1-p)$$

對於給定的樣本集合D,其基尼指數爲
$$Gini(D)=1-\sum_{k=1}^{K} \left( \frac{|C_{k}|}{|D|} \right)^2$$

這裏,$C_{k}$是D中屬於第k類的樣本子集,K是類的個數。
若是樣本集合D根據特徵A是否取某一可能值a被分割爲$D_{1}和D_{2}$兩部分,即
$$D_{1}=\{(x,y) \in D \, | \,A(x)=a\} ,\quad D_{2}= D-D_{1}$$

則在特徵A的條件下,集合D的基尼指數定義爲
$$Gini(D,A)=\frac{|D_{1}|}{|D|}Gini(D_{1})+\frac{|D_{2}|}{|D|}Gini(D_{2})$$

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

算法 5.6

輸入:訓練數據集D,中止計算的條件
輸出:CART決策樹
根據訓練數據集,從根結點開始,遞歸地對每一個結點進行如下操做,構建二叉決策樹:

(1)設結點的訓練數據集爲D,計算現有特徵對該數據集的基尼指數。此時,對每一特徵A,對其可能取的每一個值a,根據樣本點對A=a的測試爲「是」或「否」分割爲$D_{1}$和$D_{2}$兩部分,利用式(5.25)計算A=a時的基尼指數。

(2)在全部可能的特徵A以及他們全部可能的切分點a中,選擇基尼係數最小的特徵及其對應的切分點做爲最優特徵與最優切分點。依最優特徵與最優切分點,從現結點生成兩個子結點,將訓練數據集依特徵分配到兩個子結點中去。

(3)對兩個子結點遞歸地調用(1)(2),直至知足中止條件

(4)生成CART決策樹

算法中止計算的條件是節點中的樣本個數小於預約閾值,或樣本集的基尼指數小於預約閾值(樣本基本屬於同一類),或者沒有更多特徵。

CART 剪枝

1.剪枝,造成一個子樹序列

在剪枝過程當中,計算子樹的損失函數:
$$C_{\alpha}(T)=C(T)+\alpha |T|$$

其中,T爲任意子樹,C(T)爲對訓練數據的預測偏差(如基尼指數),|T|爲子樹的葉結點個數,$alpha ge 0$爲參數, $C_{alpha}(T)$爲參數是$alpha$時的子樹T的總體損失。參數α權衡訓練集的擬合程度與模型的複雜度。

對固定的α,必定存在使損失函數$C_{alpha}$最小的子樹,將其表示爲$T_{alpha}$。$T_{alpha}$在損失函數$C_{alpha}$最小的意義下是最優的。容易驗證這樣的最優子樹是惟一的。當α大的時候,最優子樹$T_{alpha}$偏小,當α小的時候,最優子樹$T_{alpha}$偏大。極端狀況下,α=0時,總體樹是最優的。當$alpha rightarrow infty$時,根節點組成的單結點是最優的。

Breiman等人證實:能夠用遞歸的方法對樹進行剪枝。將α從小增大,$0=alpha_{0}<alpha_{1}<cdots <alpha_{n}<+infty$,產生一系列的區間$[alpha_{i},alpha_{i+1}),i=0,1,cdots,n;$ 剪枝獲得的子樹序列對應着區間$[alpha_{i},alpha_{i+1}),i=0,1,cdots,n$的最優子樹序列${T_{0},T_{1},dots,T_{n}}$,序列中的子樹是嵌套的。

具體的,從總體書$T_{0}$開始剪枝。對$T_{0}$的任意內部結點t,以t爲單結點樹的損失函數是
$$C_{\alpha}(T_{t})=C(T_{t})+\alpha |T_{t}|$$

當α=0及α充分小時,有不等式
$$C_{\alpha}(T_{t}) <C _{\alpha}(t)$$

當α再增大時,不等式(5.29)方向。只要$alpha=frac{C(t)-C(T_{t})}{|T_{t}|-1}$,$T_{t}$與t有相同的損失函數值,而t的結點少,所以t比$T_{t}$更可取,對$T_{t}$進行剪枝。
爲此,對$T_{0}$中每一內部節點,計算
$$g(t)=\frac{C(t)-C(T_{t})}{|T_{t}|-1} (5.31)$$

它表示剪枝後總體損失函數減小的程度.在$T_{0}$中減去g(t)最小的$T_{t}$,將獲得的子樹做爲$T_{1}$,同時將最小的g(t)設爲$alpha_{1}$. $T_{1}$爲區間$ [alpha_{1},alpha_{2})$的最優子樹。

如此剪枝下去,直到獲得根結點。在這一過程當中,不斷地增長$alpha$的值,產生新的區間。

2. 在剪枝獲得的子樹序列${T_{0},T_{1},dots,T_{n}}$中經過交叉驗證選取最優子樹$T_{a}$

具體地,利用獨立的驗證數據集,測試子樹序列${T_{0},T_{1},dots,T_{n}}$中各棵子樹的平方偏差或基尼指數。平方偏差或基尼指數。平方偏差或基尼指數最小的決策樹被認爲是最優的決策樹。在子樹序列中,各棵子樹${T_{0},T_{1},dots,T_{n}}$都對應一個參數${alpha_{0},alpha_{1},dots,alpha_{n}}$。因此,當最優子樹$T_{k}$肯定是,對應的$alpha_{k}$也肯定了,即獲得最優決策樹$T_{alpha}$.

CART剪枝算法

輸入: CART算法生成的決策樹$T_{0}$

輸出: 最優決策樹$T_{alpha}$

(1) 設k=0,$T=T_{0}$

(2) 設$alpha=+infty$

(3) 自上而下地對各內部結點t計算$C(T_{t})$, $|T_{t}|$以及
$$g(t)=\frac{C_{t}-C(T_{t})}{|T_{t}|-1}$$
$$\alpha=\min (\alpha, g(t))$$

這裏, $T_{t}$表示以t爲根節結點的子樹,$C(T_{t})$是對訓練數據的預測偏差,$|T_{t}|$是$T_{t}$的葉結點個數。

(4) 對$g(t)=alpha$的內部節點t進行剪枝,並對葉結點t以多數表決發決定其類,獲得樹T

(5) 設k=k+1, $alpha_{k}=alpha$, $T_{k}=T$

(6) 若是$T_{k}$不是由根節點及兩個葉結點構成的書,則退回到步驟(3);不然令$T_{k}=T_{n}$

(7) 採用交叉驗證法在子樹序列${T_{0},T_{1},dots,T_{n}}$中選取最優子樹$T_{alpha}$

相關文章
相關標籤/搜索