決策樹是一種基本的分類與回歸方法。決策樹模型呈樹形結構,可以認為是if-then規則的集合,也可以認為是定義在特征空間與類空間上的條件概率分布。其主要優點是模型具有可讀性,分類速度快。學習時,利用訓練數據,根據損失函數最小化的原則建立決策樹模型。預測時,對新的數據,利用決策樹模型進行分類。決策樹學習通常包括3個步驟:特征選擇、決策樹的生成和決策樹的修剪。
定義(決策樹):決策樹由結點(node)和 有向邊(directed edge)組成。結點有兩種類型:內部結點(internal node)和葉節點(leaf node)。內部結點表示一個特征或屬性,葉節點表示一個類。
決策樹的路徑或其對應的if-then規則集合具有一個重要的性質:互斥並且完備。這就是說,每一個實例都被一條路徑或一條規則所覆蓋,而且只被一條路徑或一條規則所覆蓋。
決策樹學習的算法通常是一個遞歸地選擇最優特征,並根據該特征對訓練數據進行分割,使得對各個子數據集有一個最好的分類的過程。決策樹學習算法包括特征選擇、決策樹生成與決策樹的剪枝過程。決策樹學習常用的算法有ID3、C4.5與CART。
特征選擇
通常特征選擇的准則是信息增益或信息增益比。
特征增益
在信息論與概率統計中,熵(entropy)是表示隨機變量不確定性的度量。設X是一個取有限個值的離散隨機變量,其概率分布為
則隨機變量X的熵定義為
(1)
在式(1)中,若,則定義
。通常式(1)中的對數以2為底或以e為底(自然對數),這是熵的單位分別稱作比特(bit)或納特(nat)。由定義可知,熵只依賴與X的分布,而與X的取值無關,所以也可將X的熵記作
,即
(2)
熵越大,隨機變量的不確定性就越大。從定義可驗證
(3)
設有隨機變量,其聯合概率分布為
條件熵表示在已知隨機變量X的條件下隨機變量Y的不確定性。隨機變量X給定的條件下隨機變量Y的條件熵(conditional entropy)
,定義為X給定條件下Y的條件概率分布的熵對X的數學期望
(4)
這里,。
當熵和條件熵中的概率由數據估計(特別是極大似然估計)得到時,所對應的熵與條件熵分別稱為經驗熵(enpirical entropy)和經驗條件熵(empirical conditional entropy)。此時,如果有0概率,令。
信息增益(information gain)表示得知特征X的信息而使得類Y的信息的不確定性減少的程度。
定義(信息增益)特征A對訓練數據集D的信息增益,定義為集合D的經驗熵
與特征A給定條件下D的經驗條件熵
之差,即
(5)
一般地,熵與條件熵
之差稱為互信息(mutual information)。決策樹學習中的信息增益等價於訓練數據集中類與特征的互信息。
根據信息增益准則的特征選擇方法是:對訓練數據集(或子集)D,計算其每個特征的信息增益,並比較他們的大小,選擇信息增益最大的特征。
設訓練數據集為D,表示其樣本容量,即樣本個數。設有K個類
,
,
為屬於類
的樣本個數,
。設特征A有n個不同的取值
,根據特征A的取值將D划分為n個子集
,
為
的樣本個數,
。記子集
中屬於類
的樣本的集合為
,即
,
為
的樣本個數。於是信息增益的算法如下:
算法(信息增益)
輸入:訓練數據集D和特征A;
輸出:特征A對訓練數據集D的信息增益。
(1)計算數據集D的經驗熵
(6)
(2)計算特征A對數據集D的經驗條件熵
(7)
(3)計算信息增益
(8)
信息增益比
以信息增益作為划分訓練數據集的特征,存在偏向於選擇取值較多的特征的問題。使用信息增益比(information gain ratio)可以對這一問題進行校正。這是特征選擇的另一准則。
定義(信息增益比)特征A對訓練數據集D的信息增益比定義為其信息增益
與訓練數據集D關於特征A的值的熵
之比,即
(9)
其中,,n是特征A取值的個數。
決策樹的生成
決策樹的生成有ID3和C4.5兩種生成算法。
ID3算法
ID3算法的核心是在決策樹各個結點上應用信息增益准則選擇特征,遞歸地構建決策樹。
算法(ID3算法)
輸入:訓練數據集D,特征集A,閾值;
輸出:決策樹T。
(1)若D中所有實例屬於同一類,則T為單結點樹,並將類
作為該結點的類標記,返回T;
(2)若,則T為單結點樹,並將D中實例數最大的類
作為該結點的類標記,返回T;
(3)否則,按算法計算A中各特征對D的信息增益,選擇信息增益最大的特征;
(4)如果的信息增益小於閾值
,則置T為單結點樹,並將D中實例數最大的類
作為該結點的類標記,返回T;
(5)否則,對的每一可能值
,依
將D分割為若干非空子集
,將
中實例數最大的類作為標記,構建子結點,由結點及其子結點構成樹T,返回T;
(6)對第i個子結點,以為訓練集,以
為特征集,遞歸地調用步(1)~步(5),得到子樹
,返回
。
算法(C4.5的生成算法)
輸入:訓練數據集D,特征集A,閾值;
輸出:決策樹T。
(1)如果D中所有實例屬於同一類,則置T為單結點樹,並將
作為該結點的類,返回T;
(2)如果,則置T為單結點樹,並將D中實例數最大的類
作為該結點的類,返回T;
(3)否則,按式(9)計算A中各特征對D的信息增益比,選擇信息增益比最大的特征;
(4)如果的信息增益比小於閾值
,則置T為單結點樹,並將D中實例數最大的類
作為該結點的類,返回T;
(5)否則,對的每一個可能值
,依
將D分割為子集若干非空
,將
中實例數最大的類作為標記,構建子結點,由結點及其子結點構成樹T,返回T;
(6) 對結點i,以為訓練集,以
為特征集,遞歸地調用步(1)~步(5),得到子樹
,返回
。
決策樹的剪枝
決策樹生成算法遞歸地產生決策樹,知道不能繼續下去為止。這樣產生的樹往往對訓練數據的分類很准確,但對未知的測試數據的分類卻沒有那么准確,即出現過擬合現象。解決這個問題的方法是考慮決策樹的復雜度,對已生成的決策樹進行簡化。在決策樹學習中將已生成的樹進行簡化的過程稱為剪枝(pruning)
下面介紹一種簡單的決策樹學習的剪枝算法。
決策樹的剪枝往往通過極小化決策樹整體的損失函數(loss function)或代價函數(cost function)來實現。設樹T的葉結點個數為,t是樹T的葉結點,該葉結點有
個樣本點,其中k類的樣本點有
個,
,
為葉結點t上的經驗熵,
為參數,則決策樹學習的損失函數可以定義為
(10)
其中經驗熵為
(11)
在損失函數中,將式(10)右端的第一項記作
(12)
這時有
(13)
式(13)中,表示模型對訓練數據的預測誤差,即模型與訓練數據的擬合程度,
表示模型復雜度,參數
控制兩者之間的影響。較大的
促使選擇較簡單的模型(樹),較小的
促使選擇較復雜的模型(樹)。
意味着只考慮模型與訓練數據的擬合程度,不考慮模型的復雜度。決策樹生成學習局部的模型,而決策樹剪枝學習整體的模型。式(10)或式(13)定義的損失函數最小原則進行剪枝就是用正則化的極大似然估計進行模型選擇。
算法(樹的剪枝算法)
輸入:生成算法產生的整個樹T,參數;
輸出:修剪后的子樹。
(1)計算每個結點的經驗熵。
(2)遞歸地從樹的葉結點向上回縮。
設一組葉結點回縮到其父結點之前與之后的整體樹分別為與
,其對應的損失函數值分別是
則進行剪枝,即將父結點變為新的葉結點。
(3)返回(2),直至不能繼續為止,得到損失函數最小的子樹。
CART算法
分類與回歸樹(classification and regression tree, CART)模型是應用廣泛的決策樹學習方法。CART同樣由特征選擇、樹的生成及剪枝組成,既可以用於分類也可以用於回歸。以下將用於分類與回歸的樹統稱為決策樹。
CART假設決策樹是二叉樹,內部結點特征的取值為“是”和“否”,左分支是取值為“是”的分支,右分支是取值為“否”的分支。
CART算法由以下兩步組成:
(1)決策樹生成:基於訓練數據集生成決策樹,生成的決策樹要盡量大;
(2)決策樹剪枝:用驗證數據集對已生成的樹進行剪枝並選擇最優子樹,這時用損失函數最小作為剪枝的標准。
CART生成
決策樹的生成就是遞歸地構建二叉決策樹的過程。對回歸樹用平方誤差最小化准則,對分類樹用基尼指數(Gini index)最小化准則,進行特征選擇,生成二叉樹。
1、回歸樹的生成
算法(最小二乘回歸樹生成算法)
輸入:訓練數據集D;
輸出:回歸樹。
在訓練數據集所在的輸入空間中,遞歸地將每個區域划分為兩個子區域並決定每個子區域上的輸出值,構建二叉決策樹:
(1)選擇最優切分變量j與切分點s,求解
(14)
遍歷變量j,對固定的切分變量j掃描切分點s,選擇使式(14)達到最小值的對(j,s)。
(2)用選定的對(j,s)划分區域並決定相應的輸出值:
(3)繼續對兩個子區域調用步驟(1),(2),直至滿足停止條件。
(4)將輸入空間划分為M個區域 ,生成決策樹:
2、分類樹的生成
分類樹用基尼指數選擇最優特征,同時決定該特征的最優二值切分點。
定義(基尼指數)分類問題中,假設有K個類,樣本點屬於第k類的概率為,則概率分布的基尼指數定義為
(15)
對於二類分類問題,若樣本點屬於第一類的概率是p,則概率分布的基尼指數為
(16)
對於給定的樣本集合D,其基尼指數為
(17)
這里,是D中屬於第k類的樣本子集,K是類的個數。
如果樣本集合D根據特征A是否取某一可能值a被分割成和
兩部分,即
則在特征A的條件下,集合D的基尼指數定義為
(18)
基尼指數Gini(D)表示集合D的不確定性,基尼指數Gini(D,A)表示經分割后集合D的不確定性。基尼指數值越大,樣本集合的不確定性也就越大,這一點與熵相似。
算法(CART生成算法)
輸入:訓練數據集D,停止計算的條件;
輸出:CART決策樹。
根據訓練數據集,從根節點開始,遞歸地對每個結點進行以下操作,構建二叉決策樹:
(1)設結點的訓練數據集為D,計算現有特征對該數據集的基尼指數。此時,對每一個特征A,對其可能取的每個值a,根據樣本點對的測試為“是”或“否”將D分割成
和
兩部分,利用式(18)計算
時的基尼指數。
(2)在所有可能的特征A以及它們所有可能的切分點a中,選擇基尼指數最小的特征及其對應的切分點作為最優特征與最優切分點。依最優特征與最優切分點,從現結點生成兩個子結點,將訓練數據集依特征分配到兩個子結點中去。
(3)對兩個子結點遞歸地調用(1),(2),直至滿足停止條件。
(4)生成CART決策樹。
算法停止計算的條件是結點中的樣本個數小於預定閾值,或樣本集的基尼指數小於預定閾值(樣本基本屬於同一類),或者沒有更多特征。
CART剪枝
CART剪枝算法由兩步組成:首先從生成算法產生的決策樹低端開始不斷剪枝,直到
的根節點,形成一個子樹序列
;然后通過交叉驗證法在獨立的驗證數據集上對子樹序列進行測試,從中選擇最優子樹。
1、剪枝,形成一個子樹序列
在剪枝過程中,計算子樹的損失函數:
(19)
其中,T為任意子樹,為對訓練數據的預測誤差(如基尼指數),
為子樹的葉結點個數,
為參數,
為參數是
時的子樹T的整體損失。參數
權衡訓練數據的擬合程度與模型的復雜度。
當大的時候,最優子樹
偏小;當
小的時候,最優子樹
偏大。極端情況,當
時,整體樹是最優的。當
時,根節點組成的單結點樹是最優的。
從整體樹開始剪枝。對
的任意內部結點t,以t為單結點樹的損失函數是
(20)
以t為根節點的子樹的損失函數是
(21)
當及
充分小時,有不定式
(22)
當增大時,在某一
有
(23)
當再增大時,不等式(22)反向。只要
,
與t有相同的損失函數值,而t的結點少,因此t比
更可取,對
進行剪枝。
為此,對中每一內部結點t,計算
(24)
它表示剪枝后整體損失函數減少的程度。在中剪去
最小的
,將得到的子樹作為
,同時將最小的
設為
。
為區間
的最優子樹。
如此剪枝下去,直至得到根節點。在這一過程中,不斷地增加的值,產生新的區間。
2、在剪枝得到的子樹序列中通過交叉驗證選取最優子樹
算法(CART剪枝算法)
輸入:CART算法生成的決策樹;
輸出:最優決策樹。
(1)設,
(2)設
(3)自上而下地對各內部結點t計算,
以及
這里,表示以t為根節點的子樹,
是對訓練數據的預測誤差,
是
的葉結點個數。
(4)對的內部結點t進行剪枝,並對葉結點t以多數表決法決定其類,得到樹T。
(5)設,
,
(6)如果不是由根節點及兩個葉結點構成的樹,則回到步驟(3);否則令
(7)采用交叉驗證法在子樹序列中選取最優子樹