決策樹模型和學習
決策樹模型
分類決策樹模型是一種描述對實例進行分類的樹形結構。決策樹由節點(node)和有向邊(directed edge)組成。有向邊有兩種類型:內部節點(internal node)和葉節點(leaf node)。內部節點表示一個特征或屬性, 葉節點表示一個類。
決策樹學習
決策樹學習的損失函數通常是正則化的極大似然函數,決策樹學習的策略是以損失函數為目標函數的最小化。
選擇最優決策樹是NP完全問題,現實中通常采用啟發式方法,近似求解問題,得到次最優(sub-optimal)的決策樹。
決策樹學習的算法通常是一個遞歸地選擇最優特征,並根據特征對訓練數據進行分割。這一過程對應特征空間的划分和決策樹的構建。
為了避免過擬合,使其具有更好的泛化能力,可以對已生成的決策樹進行剪枝。
決策樹與條件概率分布
決策樹生成將特征空間划分成互不相交的單元,每個單元定義一個類的概率分布,構成一個條件概率分布。
決策樹的一條路徑對應於划分中的一個單元,決策樹表示的條件概率分布由各個單元給定條件下的類的條件概率分布組成。
決策樹分類時將節點的實例強行分到條件概率最大的類中去。
特征選擇
選擇對訓練數據具有分類能力的特征,提高決策樹學習的效率。
信息增益
隨機變量X的熵(entropy):

熵只依賴於X的分布,與X取值無關,故也可記為:

熵越大,隨機變量的不確定性越大。可以驗證:
![]()
隨機變量X給定條件下隨機變量Y的條件熵(conditional entropy)H(Y|X),定義為X給定下Y的條件概率分布的熵對X的期望:

當熵與條件熵由數據統計(特別是極大似然估計)得到時,分別稱為經驗熵(empirical entropy)和經驗條件熵(empirical conditional entropy)。
信息增益:
特征A對訓練數據集D的信息增益g(D,A),定義為集合D的經驗熵H(D)與特征A在給定條件下D的經驗條件熵H(D|A)之差:
![]()
一般地,上H(Y)和條件熵H(Y|X)之差稱為互信息(mutual information)。決策樹學習的信息增益等價於訓練集中類與特征的互信息。
選擇特征方法:對訓練集D,計算每個特征的信息增益,比價大小,選擇信息增益最大的特征。
設訓練數據集為D,|D|表示樣本容量。設有K個類
為屬於類
的樣本個數,
。設特征A有n個不同的取值
,根據特征A的取值將D划分為n個子集
,|Di|為Di的樣本個數,
。記子集Di中屬於類Ck的樣本集合為
,即
, |Dik|是Dik的樣本個數。
信息增益算法:
輸入:訓練數據集和特征A
輸出:特征A對訓練數據集D的信息增益g(D,A)
(1)計算數據集D的經驗熵H(D)

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

(3)計算信息增益
![]()
信息增益比
采用信息增益方法,存在偏向於選擇取值較多的特征的問題。 使用信息增益比進行校正。
信息增益比:
特征A對訓練數據集D的信息增益比定義為其信息增益對訓練數據關於特征A的值的熵之比,即
![]()
其中,
,n是特征A取值個數。
決策樹的生成
ID3算法
輸入:訓練數據集D,特征集A閾值e
輸出:決策樹T
(1)若D中所有實例屬於同一類Ck,則T為單節點樹,並將類Ck作為該節點的類標記,返回T;
(2)若A = ∅,則T為單節點樹,並將D中實例最大的類Ck作為該節點的類標記,返回T;
(3)否則,計算A中各特征對D的信息增益,選擇特征信息增益最大的特征Ag;
(4)如果Ag的信息增益小於閾值e,則置T為單節點樹,並將D中實例數最大的類Ck作為該節點的類標記,返回T;
(5)否則,對Ag的每一個可能值ai,依Ag=ai將D分割為若干非空子集Di,將Di中實例數最大的類作為標記,構建子節點,由節點及其子節點構成數T,返回T;
(6)對第i個節點,以Di為訓練集,{A - Ag}為特征集,遞歸電泳(1)~(5),得到子樹Ti,返回Ti。
C4.5算法
輸入:訓練數據集D,特征集A閾值e
輸出:決策樹T
(1)若D中所有實例屬於同一類Ck,則T為單節點樹,並將類Ck作為該節點的類標記,返回T;
(2)若A = ∅,則T為單節點樹,並將D中實例最大的類Ck作為該節點的類標記,返回T;
(3)否則,計算A中各特征對D的信息增益比,選擇特征信息增益最大的特征Ag;
(4)如果Ag的信息增益比小於閾值e,則置T為單節點樹,並將D中實例數最大的類Ck作為該節點的類標記,返回T;
(5)否則,對Ag的每一個可能值ai,依Ag=ai將D分割為若干非空子集Di,將Di中實例數最大的類作為標記,構建子節點,由節點及其子節點構成數T,返回T;
(6)對第i個節點,以Di為訓練集,{A - Ag}為特征集,遞歸電泳(1)~(5),得到子樹Ti,返回Ti。
決策樹的剪枝
決策樹的剪枝往往通過極小化決策樹整體損失函數或代價函數來實現。決策樹生成學習局部的模型,決策樹剪枝學習整體的模型。
設樹T的葉節點個數為|T|,t是樹T的葉節點,該葉節點有Nt個樣本點,其中k類的樣本點有Ntk個,k = 1,2,…,K,Ht(T)為葉節點t上的經驗熵,\alpha>=0為參數,則損失函數定義為:

其中經驗熵為:
![]()
在損失函數中,右端第一項可以記為:

有:
![]()
C(T)表示模型與訓練數據的擬合程度,|T|表示模型復雜度,參數a >= 0控制兩者之間的影響。a較大促使選擇較簡單的模型,較小選擇較復雜的模型。
以上定義的損失函數極小化等價於正則化的極大似然估計,利用損失函數最小原則進行剪枝就是用正則化的極大似然估計進行模型選擇。
決策樹剪枝算法:
輸入:生成算法產生的整個樹T,參數a;
輸出:修剪后的子樹Ta。
(1)計算每個節點的經驗熵
(2)遞歸地從樹的葉節點向上回縮
設一組葉節點回縮到父節點之前與之后的整體樹分別為
和
,其對應的損失函數值分別為
和
,如果:
![]()
則進行剪枝,即將父節點變為新的葉節點。
(3)返回(2),直到不能繼續為止,得到損失函數最小的子樹Ta。
注:剪枝過程只需在局部考慮兩個子樹的差,故可用動態規划實現。
CART算法(未完待更)
分類和回歸樹(classification and regerssion tree, CART)是在給定隨機變量X條件下輸出隨機變量Y的條件概率分布的學習方法。CART假設決策樹是二叉樹,內部節點的取值為“是”或“否”,左分支是取值為“是”的分支,右分支是取值為“否”的分支。這樣的決策樹等價於遞歸地二分每個特征,將輸入空間(特征空間)划分為有限個單元,並在這些單元上預測概率分布。
決策樹的生成就是遞歸地構建二叉決策樹的過程。對回歸樹用平方誤差最小化准則,對分類樹用基尼指數(Gini index)最小化准則,進行特征選擇,生成二叉樹。
回歸樹的生成(最小二乘回歸樹生成算法)
輸入:訓練數據集D;
輸出:回歸樹f(x)
在訓練數據集所在的輸入空間中,遞歸地將每個區域划分為兩個子區域並決定每個子區域上輸出的值,構建二叉決策樹:
(1)選擇最優切分變量j與切分點s,求解

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

(3)繼續對兩個子區域調用步驟(1)(2)直至滿足條件。
(4)將輸入空間划分為M個區域

分類樹的生成(CART生成算法)
輸入:訓練數據集D,停止計算條件
輸出:CART決策樹
根據訓練集,從根結點為止,遞歸地對每個結點進行以下操作,構建二叉決策樹:
