決策樹是一種基本的分類與回歸方法。ID3和C4.5決策樹可以用于分類记某,CART(分類與回歸樹)既可以用于分類偎痛,也可以用于回歸旱捧。決策樹的學習通常包括3個步驟:特征選擇、決策樹的生成和決策樹的修剪踩麦。這里主要介紹分類決策樹枚赡。附上機器學習實戰(zhàn)的書中決策樹代碼。
定義
分類決策樹模型是一種描述對實例進行分類的樹形結構谓谦,決策樹由結點和有向邊組成贫橙。結點由兩種類型:內部結點和葉結點。內部結點表示一個特征或屬性反粥,葉結點表示一個類卢肃。
由決策樹的根結點到葉結點的每一條路徑構建一條規(guī)則:路徑上內部結點的特征對應著規(guī)則的條件,而葉結點的類對應著規(guī)則的結論星压。決策樹的路徑對應的規(guī)則互斥且完備践剂,每一個實例都只被一條路徑所覆蓋鬼譬。
決策樹還能表示給定特征條件下類
的條件概率分布
娜膘。
決策樹的學習
決策樹學習,假設給定訓練數據集
其中优质,為輸入實例(特征向量)竣贪,
為特征個數,
為類標記巩螃,
演怎,
為樣本容量,學習的目的是根據給定的訓練數據集構建一個決策樹模型避乏,使它能夠對實例進行正確的分類爷耀。
決策樹學習的算法通常是一個遞歸的選擇最優(yōu)特征,并根據該特征對訓練數據進行分割拍皮,使得對各個子數據集有一個最好的分類的過程歹叮,這一過程對應著對特征空間的劃分,也對應著決策樹的構建铆帽。在構建完成后咆耿,決策樹對訓練數據有了很好的劃分,但是一般不具備很好的泛化能力爹橱,容易出現過擬合萨螺,于是可以通過剪枝算法剪去一些子樹來提高泛化能力。剪枝的結果不是唯一的,需要選擇一個最優(yōu)的決策樹最為最終的模型慰技。這一最優(yōu)化問題是NP完全問題椭盏,通常采用啟發(fā)式算法求解,得到的決策樹是次最優(yōu)的惹盼。
NP完全問題=NPC問題庸汗,這種問題存在的現象就是生成問題的一個解比驗證一個給定解花費的時間多得多。
特征選擇
特征選擇在于選取對訓練數據具有分類能力的特征手报。這樣可以提高決策樹學習的效率蚯舱。通常特征選擇的準則是信息增益或信息增益比。
信息增益
首先定義熵和條件熵
熵
熵是表示隨機變量不確定性的度量掩蛤,設是一個取有限個值的離散隨機變量枉昏,其概率分布為
則隨機變量的熵定義為
當隨機變量越確定時,熵越小揍鸟。例如0,1分布兄裂,的熵隨概率
的曲線:
當時,最不確定0還是1阳藻,此時熵最大晰奖。
條件熵
設隨機變量,其聯合概率分布為
條件熵表示在一直隨機變量
的條件下隨機變量
的不確定性腥泥。隨機變量
給定的條件下隨機變量
的條件熵
匾南,定義為
給定條件下
的條件概率分布的熵對
的期望
當熵和條件熵中的概率有數據估計(特別是極大似然估計)得到時,所對應的熵與條件熵分別稱為經驗熵和經驗條件熵蛔外,此時蛆楞,如果有0概率,令夹厌。
信息增益定義
特征對訓練數據集
的信息增益
豹爹,定義為集合
的經驗熵
與特征
給定條件下
的經驗條件熵
之差,即
表示通過特征劃分矛纹,數據集
分類不確定性減少的程度臂聋。
信息增益的算法
輸入:訓練數據集和特征
;
輸出:特征對訓練數據集
的信息增益
或南。
(1)計算數據集的經驗熵
其中是訓練集中屬于
類的樣本個數孩等,
是訓練集樣本總數
(2)計算特征對數據集
的經驗條件熵
其中是訓練集
根據特征
的第
個取值劃分得到的子集,
迎献,
是子集
中屬于
類的樣本的集合
(3)計算信息增益
信息增益比
以信息增益作為劃分訓練數據集的特征瞎访,存在偏向于選擇取值較多的特征的問題,使用信息增益比可以對這一問題進行校正吁恍。
信息增益比定義
特征對訓練數據集
的信息增益比
定義為其信息增益
與訓練數據集
關于特征
的值的熵
之比扒秸,即
其中播演,,
是特征
取值的個數伴奥。熵
是針對數據集
的分類
的写烤,這里
是針對數據集
的特征
的。
決策樹的生成
ID3的生成算法
輸入:訓練數據集拾徙,特征集
洲炊,閾值
;
輸出:決策樹尼啡。
(1)若中所有實例屬于同一類
暂衡,則
為單結點樹,并將類
作為該結點的類標記崖瞭,返回
狂巢;
(2)若,則
為單結點樹书聚,并將
中實例數最大的類
作為該結點的類標記唧领,返回
;
(3)否則雌续,按信息增益算法計算中各特征對
的信息增益斩个,選擇信息增益最大的特征
;
(4)如果的信息增益小于閾值
驯杜,則置
為單結點樹受啥,并將
中實例數最大的類
作為該結點的類標記,返回
艇肴;
(5)否則腔呜,對的每一個可能值
叁温,依
將
分割為若干非空子集
再悼,將
中實例數最大的類作為標記,構建子結點膝但,由結點及其子結點夠成樹
冲九,返回
;
(6)對第個子結點跟束,以
為訓練集莺奸,以
為特征集忍啤,遞歸的調用步(1)-(5)跺撼,得到子樹
,返回
聪建。
C4.5的生成算法
輸入:訓練數據集略贮,特征集
甚疟,閾值
仗岖;
輸出:決策樹。
(1)若中所有實例屬于同一類
览妖,則
為單結點樹轧拄,并將類
作為該結點的類標記,返回
讽膏;
(2)若檩电,則
為單結點樹,并將
中實例數最大的類
作為該結點的類標記府树,返回
俐末;
(3)否則,按公式(2)計算中各特征對
的信息增益比奄侠,選擇信息增益比最大的特征
鹅搪;
(4)如果的信息增益小于閾值
,則置
為單結點樹遭铺,并將
中實例數最大的類
作為該結點的類標記丽柿,返回
;
(5)否則魂挂,對的每一個可能值
甫题,依
將
分割為若干非空子集
,將
中實例數最大的類作為標記涂召,構建子結點坠非,由結點及其子結點夠成樹
,返回
果正;
(6)對第個子結點炎码,以
為訓練集,以
為特征集秋泳,遞歸的調用步(1)-(5)潦闲,得到子樹
,返回
迫皱。
兩個算法的區(qū)別僅在于ID3使用信息增益最大為標準選擇劃分特征歉闰,而C4.5使用信息增益比最大為標準選擇劃分特征。
決策樹的剪枝
生成算法產生的決策樹對訓練數據有很好的劃分卓起,但是容易出現過擬合和敬,這時候就需要對生成的決策樹進行剪枝,提高模型的泛化能力戏阅。
剪枝通過極小化決策樹整體的損失函數或代價函數來實現昼弟。設樹的葉結點個數為
,
是樹
的葉結點奕筐,該葉結點有
個樣本點舱痘,其中
類的樣本點有
個蚕键,
,
為葉結點
上的經驗熵衰粹,
為參數锣光,則決策樹學習的損失函數可以定義為
其中經驗熵為
在損失函數,將公式(3)中右端第一項記做
這時有
上式中表示模型對訓練數據的預測誤差铝耻,
表示模型復雜度誊爹。參數
控制兩者之間的影響,較大的
促使選擇簡單的模型瓢捉,較小的
促使選擇復雜的模型频丘,
表示不考慮模型復雜度。該損失函數的極小化等價于正則化的極大似然估計泡态。
樹的剪枝算法
輸入:生成算法產生的整個樹搂漠,參數
;
輸出:修剪后的子樹某弦。
(1)計算每個結點的經驗熵
(2)遞歸的從樹的葉結點向上回縮桐汤。設一組葉結點回縮到父結點之前與之后的整體樹分別為與
,其對應的損失函數值分別是
與
靶壮,如果
則進行剪枝怔毛,即將父結點變?yōu)樾碌娜~結點。
(3)返回(2)腾降,直至不能繼續(xù)位置拣度,得到損失函數最小的子樹。
剪枝算法可以通過動態(tài)規(guī)劃的算法實現螃壤。
CART算法
CART是分類與回歸樹的簡寫抗果,即既可以實現分類,也可以實現回歸的樹奸晴。CART是二叉樹冤馏,內部結點有兩個分支,左邊是“是”蚁滋,右邊是“否”宿接,對特征進行遞歸的二分赘淮。
CART算法由以下兩步組成:
(1)決策樹生成:基于訓練數據集生成決策樹辕录,生成的決策樹要盡量大;
(2)決策樹剪枝:用驗證數據集對已生成的樹進行剪枝并選擇最優(yōu)子樹梢卸,這時用損失函數最小作為剪枝的標準走诞。
CART生成
回歸樹生成
假設和
分別為輸入和輸出變量,并且
是連續(xù)變量蛤高,給定訓練數據集
考慮如何生成回歸樹蚣旱。
一個回歸樹對應著輸入空間(即特征空間)的一個劃分以及在劃分的單元的輸出值碑幅。假設已將輸入空間劃分為個單元
,并且在每個單元
有一個固定的輸出值
塞绿,于是回歸樹模型可表示為
當輸入空間的劃分確定時沟涨,可以用平方誤差來表示回歸樹對訓練數據的預測誤差,用平方誤差最小的準則求解每個單元上的最優(yōu)輸出值异吻。易知裹赴,單元
上的
的最優(yōu)值
是
上的所有輸入實例
對應的輸出
的均值,即
問題是怎樣對輸入空間進行劃分诀浪。這里采用啟發(fā)式的方法棋返,選擇第個變量
和它的取值
,作為切分變量和切分點并定義兩個區(qū)域:
然后尋找最優(yōu)切分變量和最優(yōu)切分點
雷猪。具體的睛竣,求解
對固定輸入變量可以找到最優(yōu)切分點
。
遍歷所有輸入變量求摇,找到最優(yōu)的切分變量射沟,構成一個對
,以此將輸入空間劃分為兩個區(qū)域与境。接著躏惋,對每個區(qū)域重復上述劃分過程,直到滿足停止條件(例如結點中的樣本個數小于預定閾值)為止嚷辅。這樣就生成一顆回歸樹簿姨,這樣的回歸樹通常稱為最小二乘回歸樹。
最小二乘回歸樹生成算法
輸入:訓練數據集簸搞;
輸出:回歸樹扁位。
在訓練數據集所在的輸入空間中,遞歸的將每個區(qū)域劃分為兩個子區(qū)域并決定每個子區(qū)域上的輸出值趁俊,構建二叉決策樹:
(1)選擇最優(yōu)切分變量與切分點
域仇,求解
遍歷變量,對固定的切分變量
掃描切分點
寺擂,選擇使公式(7)達到最小的值的對
(2)用選定的對劃分區(qū)域并決定相應的輸出值:
(3)繼續(xù)對兩個子區(qū)域調用步驟(1)暇务,(2),直至滿足停止條件怔软。
(4)將輸入空間劃分為個區(qū)域
垦细,生成決策樹:
分類樹的生成
分類樹用基尼指數選擇最優(yōu)特征,同時決定該特征的最優(yōu)二值切分點挡逼。
基尼指數的定義
分類問題中括改,假設有個類,樣本點屬于第
類的概率為
家坎,則概率分布的基尼指數定義為
對于給定樣本集嘱能,其基尼指數為
這里吝梅,是
中屬于第
類的樣本子集。
如果樣本集合根據特征
是否取某一可能值
被分割成
和
兩部分惹骂,則在特征
的條件下苏携,集合
的基尼指數定義為
基尼指數表示集合
的不確定性,基尼指數越大对粪,不確定性越高兜叨,和熵有相似的性質●媒模基尼指數
表示按特征
劃分后的不確定性国旷。
CART生成算法
輸入:訓練數據集,停止計算的條件茫死;
輸出:CART決策樹跪但。
根據訓練數據集,從根結點開始峦萎,遞歸的對每個結點進行以下操作屡久,構建二叉決策樹:
(1)設結點的訓練數據集為,計算現有特征對該數據集的基尼指數爱榔。此時對每一個特征
被环,對其可能取的每個值
,根據樣本點對
的測試為“是”或“否”將
分割成
和
兩部分详幽,利用
計算時的基尼指數筛欢。
(2)在所有可能的特征以及它們所有可能的切分點
中,選擇基尼指數最小的特征及其對應的切分作為最優(yōu)特征與最優(yōu)切分點唇聘。依最優(yōu)特征與最優(yōu)切分點版姑,從現結點生成兩個子結點,將訓練數據依特征分配到兩個子結點中去迟郎。
(3)對兩個子結點遞歸的調用(1)剥险,(2),直至滿足停止條件宪肖。
(4)生成CART決策樹表制。
算法停止計算的條件是結點中的樣本個數小于預定閾值,或樣本集的基尼指數小于預定閾值(樣本基本屬于同一類)控乾,或者沒有更多特征么介。
CART 剪枝
在剪枝過程中,計算子樹的損失函數:
其中阱持,為任意子樹夭拌,
為對訓練數據的預測誤差(分類樹中
),
為子樹的葉結點個數衷咽,
為參數鸽扁,較大的
促使選擇簡單的模型,較小的
促使選擇復雜的模型镶骗。
對固定的桶现,一定存在使損失函數
最小的子樹,于是我們把
從小增大鼎姊,
使其從復雜到簡單逐步進行剪枝骡和,剪枝得到的子樹序列對應著區(qū)間
,
的最優(yōu)子樹序列
相寇,序列中的子樹是嵌套的慰于。
具體的,從整體樹開始剪枝唤衫。對
的任意內部結點
婆赠,以
為單結點樹的損失函數是
以為根結點的子樹
的損失函數是
當及
充分小時,有不等式
單結點樹損失更大一點佳励,因為充分小時休里,復雜的樹損失更小。當
增大時赃承,在某一
有
單結點樹和子樹損失相同妙黍。當再增大時,不等式反向瞧剖,單結點樹損失更小拭嫁。
所以只要,
與
有相同的損失函數值抓于,而
的結點少噩凹,因此
比
更可取,對
進行剪枝毡咏。
為此驮宴,對中每一內部結點
,計算
減去最小的
呕缭,得到的子樹作為
堵泽,所處的區(qū)間為
(整體樹的區(qū)間是
)。
如此剪枝下去恢总,直至得到根結點迎罗。在這一過程中,不斷的增加的值片仿,產生新的區(qū)間纹安。并且每個區(qū)間的子樹是在上個區(qū)間的子樹上剪枝得到的,因為當
更大時,對于之前
值更小的結點厢岂,
光督,即之前剪去的結點其子樹
的損失要比單結點
更大,所以嵌套的剪枝是合理的塔粒。
剪枝完成后结借,子樹序列對應的
序列
也就確定了,利用驗證數據集在子樹序列
中計算損失
卒茬,選擇損失最小的決策樹
船老。
CART剪枝算法
輸入:CART算法生成的決策樹;
輸出:最優(yōu)決策樹圃酵。
(1)設柳畔,
。
(2)設郭赐。
(3)自下而上的對各內部結點計算
薪韩,
以及
這里,表示以
為根結點的子樹堪置,
是對訓練數據的預測誤差躬存,
是
的葉結點個數。
(4)對的內部結點
進行剪枝舀锨,并對葉結點
以多數表決法決定其類岭洲,得到樹
。
(5)設坎匿,
盾剩,
。
(6)如果不是由根結點及兩個葉結點構成的樹替蔬,則回到步驟(3)告私,否則令
。
(7)采用交叉驗證法在子樹序列中選取最優(yōu)子樹
承桥。