机器学习理论《统计学习方法》学习笔记:第五章 决策树
機(jī)器學(xué)習(xí)理論《統(tǒng)計(jì)學(xué)習(xí)方法》學(xué)習(xí)筆記:第五章 決策樹
- 決策樹
- 5.1 決策樹模型與學(xué)習(xí)
- 5.1.1 決策樹模型
- 5.1.2 決策樹與if-then規(guī)則
- 5.1.3 決策樹與條件概率分布
- 5.1.4 決策樹學(xué)習(xí)
- 5.2 特征選擇
- 5.2.1 特征選擇問題
- 5.2.2 信息增益
- 5.2.3 信息增益比
- 5.3 決策樹的生成
- 5.3.1 ID3算法
- 5.3.1 C4.5算法
- 5.4 決策樹的剪枝
- 5.5 CART算法
- 5.5.1 CART生成
- 1. 回歸樹的生成
- 2. 分類樹的生成
- 5.5.2 CART剪枝
- 本章概要
決策樹
- 決策樹(Decision Tree)是一種基本的分類與回歸方法。本章主要用于分類的決策樹。決策樹模型呈樹形結(jié)構(gòu),在分類問題中,表示基于特征對(duì)實(shí)例進(jìn)行分類的過程。它可以認(rèn)為是if-then規(guī)則的集合,也可以認(rèn)為是定義在特征空間與類空間上的條件概率分布。
- 決策樹的主要優(yōu)點(diǎn)是:模型具有可讀性,分類速度快。學(xué)習(xí)時(shí),利用訓(xùn)練數(shù)據(jù),根據(jù)損失函數(shù)最小化的原則建立決策樹模型。預(yù)測(cè)時(shí),對(duì)新的數(shù)據(jù),利用決策樹模型進(jìn)行分類。
- 決策樹模型學(xué)習(xí)通常包括3個(gè)步驟:特征選擇、決策樹的生成、決策樹的修剪。這些決策樹學(xué)習(xí)的思想主要來源于Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。
5.1 決策樹模型與學(xué)習(xí)
5.1.1 決策樹模型
- 決策樹定義:分類決策樹模型是一種描述對(duì)實(shí)例進(jìn)行分類的樹形結(jié)構(gòu)。決策樹由結(jié)點(diǎn)(node)和有向邊(directed edge)組成。結(jié)點(diǎn)有兩種類型:內(nèi)部結(jié)點(diǎn)(internal node)和葉結(jié)點(diǎn)(leaf node)。內(nèi)部結(jié)點(diǎn)表示一個(gè)特征或?qū)傩?#xff0c;葉結(jié)點(diǎn)表示一個(gè)類。
- 用決策樹分類,從根結(jié)點(diǎn)開始,對(duì)實(shí)例的某一特征進(jìn)行測(cè)試根據(jù)測(cè)試結(jié)果,將實(shí)例分配到其子結(jié)點(diǎn);這時(shí),每一個(gè)子結(jié)點(diǎn)對(duì)應(yīng)著該特征的一個(gè)取值。如此遞歸地對(duì)實(shí)例進(jìn)行測(cè)試并分配,直至達(dá)到葉結(jié)點(diǎn)。最后將實(shí)例分到葉結(jié)點(diǎn)的類中。
- 決策樹模型:圓表示內(nèi)部結(jié)點(diǎn),方塊表示葉結(jié)點(diǎn)。
5.1.2 決策樹與if-then規(guī)則
- 可以將決策樹看成是一個(gè)if-then規(guī)則的集合。將決策樹轉(zhuǎn)換成if-then規(guī)則的過程是:由決策樹根節(jié)點(diǎn)到葉結(jié)點(diǎn)的每一條路徑構(gòu)建一條規(guī)則;路徑上內(nèi)部結(jié)點(diǎn)的特征對(duì)應(yīng)著規(guī)則的條件,而葉結(jié)點(diǎn)的類對(duì)應(yīng)著規(guī)則的結(jié)論。
- 決策樹的路徑或其對(duì)應(yīng)的if-then規(guī)則集合具有一個(gè)重要的性質(zhì):互斥并且完備。這就是說,每一個(gè)實(shí)例都被一條路徑或一條規(guī)則所覆蓋,而且只被一條規(guī)則或路徑覆蓋。所謂覆蓋是指實(shí)例的特征與路徑上的特征一致或?qū)嵗凉M足規(guī)則的條件。
5.1.3 決策樹與條件概率分布
- 決策樹還表示給定特征條件下類的條件概率分布。這一條概率分布定義在特征空間的一個(gè)劃分(partition)上。將特征空間劃分為互不相交的單元(cell)或區(qū)域(Region),并在每個(gè)單元定義一個(gè)類的概率分布就構(gòu)成了一個(gè)條件概率分布。決策樹的一條路徑對(duì)應(yīng)于劃分中的一個(gè)單元。
- 決策樹所表示的條件概率分布由各個(gè)單元給定的條件下類的條件概率分布組成。假設(shè)XXX為表示特征向量的隨機(jī)變量,YYY為表示類的隨機(jī)變量,那么這個(gè)條件概率分布可以表示為P(Y∣X)P(Y|X)P(Y∣X).XXX取值于給定劃分下單元的集合,YYY取值于類的集合。各葉結(jié)點(diǎn)(單元)上的條件概率往往偏向于某一個(gè)類,即屬于某一個(gè)類的概率較大。決策樹分類時(shí),將該結(jié)點(diǎn)的實(shí)施強(qiáng)行分到條件概率大的那一類去。
- 圖(a)中的大正方形表示特征空間,這個(gè)大正方形被若干個(gè)小矩形分割,每個(gè)小矩形表示一個(gè)單元。特征空間劃分上的單元構(gòu)成了一個(gè)集合,XXX取值為單元的集合。為了簡(jiǎn)單起見,假設(shè)只有兩類:正類和負(fù)類,即YYY取值為+1或-1,小矩形中的數(shù)字表示單元的類。
- 圖(b)表示特征空間劃分確定時(shí),特征(單元)給定條件下類的條件概率分布。
- 條件概率分布對(duì)應(yīng)的決策樹
5.1.4 決策樹學(xué)習(xí)
假設(shè)給定訓(xùn)練數(shù)據(jù)集D={(x1,x1),(x2,x2),?,(xN,xN)}D=\{(x_1,x_1),(x_2,x_2),\cdots,(x_N,x_N)\}D={(x1?,x1?),(x2?,x2?),?,(xN?,xN?)}其中,xi=(xi(1),xi(2),?,xi(n))nx_i=(x_i^{(1)},x_i^{(2)},\cdots,x_i^{(n)})^nxi?=(xi(1)?,xi(2)?,?,xi(n)?)n為輸入實(shí)例(特征向量),n為特征個(gè)數(shù),yi∈{1,2,?,K}y_i\in \{1,2,\cdots,K\}yi?∈{1,2,?,K}為類標(biāo)記,i=1,2,?,Ni=1,2,\cdots,Ni=1,2,?,N,N為樣本容量。決策樹學(xué)習(xí)的目標(biāo)是根據(jù)給定的訓(xùn)練數(shù)據(jù)構(gòu)建一個(gè)決策樹模型,使它能夠?qū)?shí)例進(jìn)行正確的分類。
決策樹學(xué)習(xí)本質(zhì)上是從訓(xùn)練數(shù)據(jù)集中歸納出一組分類規(guī)則。與訓(xùn)練數(shù)據(jù)集不相矛盾的決策樹,即能對(duì)訓(xùn)練數(shù)據(jù)正確分類的決策樹,可能有多個(gè),也可能一個(gè)都沒有。我們需要的是一個(gè)與訓(xùn)練數(shù)據(jù)矛盾較小的決策樹,同時(shí)具有很好的泛化能力。從另一個(gè)角度看,決策樹學(xué)習(xí)是由訓(xùn)練數(shù)據(jù)集估計(jì)條件概率模型。基于特征空間劃分的類的條件概率模型有無窮多個(gè)。我們選擇的條件概率模型應(yīng)該不僅對(duì)訓(xùn)練數(shù)據(jù)有很好的擬合,而且對(duì)未知數(shù)據(jù)有很好的預(yù)測(cè)。
決策樹學(xué)習(xí)用損失函數(shù)表示這一目標(biāo)。決策樹的損失函數(shù)通常是正則化的極大似然函數(shù)。決策樹學(xué)習(xí)的策略是以損失函數(shù)為目標(biāo)函數(shù)的最小化。
當(dāng)損失函數(shù)確定后,學(xué)習(xí)問題就變?yōu)樵趽p失函數(shù)意義下,選擇最優(yōu)決策樹的問題。因?yàn)閺乃锌赡艿臎Q策樹中選取最優(yōu)決策樹是NP完全問題,所以現(xiàn)實(shí)中決策樹學(xué)習(xí)算法通常采用啟發(fā)式方法,近似求解這一最優(yōu)化問題,這樣得到的決策樹是次最優(yōu)的。
決策樹學(xué)習(xí)的算法通常是一個(gè)遞歸地選擇最優(yōu)特征,并根據(jù)該特征對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行分割,使得對(duì)各個(gè)子數(shù)據(jù)集有一個(gè)最好的分類過程。這一過程對(duì)應(yīng)著對(duì)特征空間的劃分,也對(duì)應(yīng)著決策樹的構(gòu)建。開始構(gòu)建根結(jié)點(diǎn),將所有訓(xùn)練數(shù)據(jù)都放在根結(jié)點(diǎn)。選擇一個(gè)最優(yōu)特征,按照這一特征將訓(xùn)練數(shù)據(jù)集分割成子集,使得各個(gè)子集有一個(gè)在當(dāng)前條件下最好的分類。如果這些子集已經(jīng)能夠被基本正確分類,那么構(gòu)建葉結(jié)點(diǎn),并將這些子集分到所對(duì)應(yīng)的葉結(jié)點(diǎn)中去。如果還有子集不能被基本正確分類,那么就對(duì)這些子集選擇新的最優(yōu)特征,繼續(xù)對(duì)其進(jìn)行分割,構(gòu)建相應(yīng)的結(jié)點(diǎn)。如此遞歸的進(jìn)行下去,直至所有訓(xùn)練數(shù)據(jù)子集被基本正確分類,或者沒有合適的特征為止。最后每個(gè)子集都被分到葉結(jié)點(diǎn)上,即都有了明確的類。這就生成了一棵決策樹。
以上方法生成的決策樹,可能對(duì)訓(xùn)練數(shù)據(jù)有很好的分類能力。但對(duì)未知的測(cè)試數(shù)據(jù)卻未必有很好的分類能力,即可能發(fā)生過擬合現(xiàn)象。我們需要對(duì)已生成的樹自下而上進(jìn)行剪枝,將樹變得更簡(jiǎn)單,從而使它具有更好的泛化能力。具體地,就是去掉過于細(xì)分的葉結(jié)點(diǎn),使其回退到父結(jié)點(diǎn),甚至更高的結(jié)點(diǎn),然后將父結(jié)點(diǎn)或更高的結(jié)點(diǎn)改為新的葉結(jié)點(diǎn)。
如果特征數(shù)量很多,也可以在決策樹學(xué)習(xí)開始的時(shí)候,對(duì)特征進(jìn)行選擇,只留下對(duì)訓(xùn)練數(shù)據(jù)有足夠分類能力的特征。
可以看出,決策樹學(xué)習(xí)算法包含特征選擇、決策樹的生成、決策樹的剪枝過程。由于決策樹表示一個(gè)條件概率分布,所以深淺不同的決策樹對(duì)應(yīng)著不同復(fù)雜度的概率模型。決策樹的生成對(duì)應(yīng)于模型的局部選擇,決策樹的剪枝對(duì)應(yīng)于模型的全局選擇。決策樹的生成只考慮局部最優(yōu),相對(duì)地,決策樹的剪枝則考慮全局最優(yōu)。
決策樹學(xué)習(xí)常用的算法有ID3,C4.5,與CART,下面結(jié)合這些算法分別敘述決策樹學(xué)習(xí)的特征選擇、決策樹的生成和剪枝過程。
5.2 特征選擇
5.2.1 特征選擇問題
特征選擇在于選取對(duì)訓(xùn)練數(shù)據(jù)具有分類能力的特征。這樣可以提高決策樹學(xué)習(xí)的效率。如果利用一個(gè)特征進(jìn)行分類的結(jié)果與隨機(jī)分類的結(jié)果沒有很大區(qū)別,則稱這個(gè)特征是沒有分類能力的。經(jīng)驗(yàn)上,扔掉這樣的特征對(duì)決策樹學(xué)習(xí)的進(jìn)度影響不大,通常特征選擇的準(zhǔn)則是信息增益或信息增益比。
5.2.2 信息增益
在信息論與概率統(tǒng)計(jì)中,熵(entropy)是表示隨機(jī)變量不確定性的度量。設(shè)XXX是一個(gè)取有限個(gè)值的離散隨機(jī)變量,其概率分布為P(X=xi)=pi,i=1,2,?,nP(X=x_i)=p_i,i=1,2,\cdots,nP(X=xi?)=pi?,i=1,2,?,n則隨機(jī)變量XXX的熵定義為H(X)=?∑i=1npilog(pi)H(X)=-\sum_{i=1}^np_ilog(p_i)H(X)=?i=1∑n?pi?log(pi?)若pi=0p_i=0pi?=0,則定義0log(0)=00log(0)=00log(0)=0.當(dāng)對(duì)數(shù)以2為底或以e為底,這時(shí)熵的單位分別被稱作比特(bit)或納特(nat)。由定義可知,熵只依賴于XXX的分布,而與XXX的取值無關(guān),所以也可以將XXX的熵記作H(p)H(p)H(p),即H(p)=?∑i=1npilog(pi)H(p)=-\sum_{i=1}^np_ilog(p_i)H(p)=?i=1∑n?pi?log(pi?)
熵越大,隨機(jī)變量的不確定性越大,從定義可以驗(yàn)證0≤H(p)≤log(n)0\le H(p) \le log (n)0≤H(p)≤log(n)當(dāng)隨機(jī)變量只取兩個(gè)值,例如1,0時(shí),即XXX的分布為P(X=1)=p,P(X=0)=1?p,0≤p≤1P(X=1)=p,P(X=0)=1-p,0\le p \le 1P(X=1)=p,P(X=0)=1?p,0≤p≤1熵為H(p)=?plog2p?(1?p)log2(1?p)H(p)=-plog_2p-(1-p)log_2(1-p)H(p)=?plog2?p?(1?p)log2?(1?p)這時(shí),熵H(p)H(p)H(p)隨概率ppp變化的曲線如圖所示。(分布為伯努利分布時(shí)熵與概率的關(guān)系)。
當(dāng)p=0p=0p=0或p=1p=1p=1時(shí),H(p)=0H(p)=0H(p)=0,隨機(jī)變量完全沒有不確定性。當(dāng)p=0.5p=0.5p=0.5時(shí),H(p)=1H(p)=1H(p)=1,熵取值最大,隨機(jī)變量不確定性最大。
設(shè)隨機(jī)變量(X,Y)(X,Y)(X,Y),其聯(lián)合概率分布為P(X=xi,Y=yi)=pij,i=1,2,?,n;j=1,2,?,mP(X=x_i,Y=y_i)=p_{ij},i=1,2,\cdots,n;j=1,2,\cdots,mP(X=xi?,Y=yi?)=pij?,i=1,2,?,n;j=1,2,?,m條件熵H(Y∣X)H(Y|X)H(Y∣X)表示在已知隨機(jī)變量XXX的條件下,隨機(jī)變量YYY的不確定性。隨機(jī)變量XXX給定條件下隨機(jī)變量YYY的條件熵H(Y|X),定義為XXX給定條件下YYY的條件概率分布的熵對(duì)XXX的數(shù)學(xué)期望H(Y∣X)=∑i=1npiH(Y∣X=xi)H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i)H(Y∣X)=i=1∑n?pi?H(Y∣X=xi?)
當(dāng)熵和條件熵中的概率由數(shù)據(jù)估計(jì)(特別是極大似然估計(jì))得到時(shí),所對(duì)應(yīng)的熵與條件熵分別稱為經(jīng)驗(yàn)熵和經(jīng)驗(yàn)條件熵。信息增益表示得知特征XXX的信息,而使得類YYY的信息的不確定性減少的程度。
信息增益:
特征AAA對(duì)訓(xùn)練數(shù)據(jù)集DDD的信息增益g(D,A)g(D,A)g(D,A),定義為集合DDD的經(jīng)驗(yàn)熵H(D)H(D)H(D)與特征AAA給定條件下DDD的經(jīng)驗(yàn)條件熵H(D∣A)H(D|A)H(D∣A)之差,即g(D,A)=H(D)?H(D∣A)g(D,A)=H(D)-H(D|A)g(D,A)=H(D)?H(D∣A)
信息增益的算法
輸入:訓(xùn)練數(shù)據(jù)集D和特征A;
輸出:特征A對(duì)訓(xùn)練數(shù)據(jù)集D的信息增益g(D,A).
(1)計(jì)算數(shù)據(jù)集D的經(jīng)驗(yàn)熵H(D)
H(D)=?∑k=1K∣Ck∣∣D∣log2∣Ck∣∣D∣H(D)=-\sum_{k=1}^K{{|C_k|}\over{|D|}}log_2{{|C_k|}\over{|D|}}H(D)=?k=1∑K?∣D∣∣Ck?∣?log2?∣D∣∣Ck?∣?
(2)計(jì)算特征A對(duì)數(shù)據(jù)集D的經(jīng)驗(yàn)條件熵H(D|A)
H(D∣A)=∑i=1n∣Di∣∣D∣H(Di)H(D|A)=\sum_{i=1}^n{{|D_i|}\over{|D|}}H(D_i)H(D∣A)=i=1∑n?∣D∣∣Di?∣?H(Di?)
(3)計(jì)算信息增益
g(D,A)=H(D)?H(D∣A)g(D,A)=H(D)-H(D|A)g(D,A)=H(D)?H(D∣A)
5.2.3 信息增益比
以信息增益作為劃分訓(xùn)練數(shù)據(jù)集的特征,存在偏向于選擇取值較多的特征的問題。使用信息增益比可以對(duì)這一問題進(jìn)行校正,這是特征選擇的另一準(zhǔn)則。
信息增益比
特征A對(duì)訓(xùn)練數(shù)據(jù)集D的信息增益比gR(D,A)g_R(D,A)gR?(D,A)定義為其信息增益g(D,A)g(D,A)g(D,A)與訓(xùn)練數(shù)據(jù)集DDD關(guān)于特征AAA的值的熵HA(D)H_A(D)HA?(D)之比,即gR(D,A)=g(D,A)HA(D)g_R(D,A)={{g(D,A)}\over{H_A(D)}}gR?(D,A)=HA?(D)g(D,A)?其中,HA(D)=?∑i=1n∣Di∣∣D∣log2∣Di∣∣D∣H_A(D)=-\sum_{i=1}^n{{|D_i|}\over{|D|}}log_2{{|D_i|}\over{|D|}}HA?(D)=?i=1∑n?∣D∣∣Di?∣?log2?∣D∣∣Di?∣?,n是特征A取值的個(gè)數(shù)。
5.3 決策樹的生成
5.3.1 ID3算法
ID3算法的核心是在決策樹各個(gè)結(jié)點(diǎn)上應(yīng)用信息增益準(zhǔn)則選擇特征,遞歸地構(gòu)建決策樹。具體方法是:從根結(jié)點(diǎn)開始,對(duì)結(jié)點(diǎn)計(jì)算所有可能的特征的信息增益,選擇信息增益最大的特征作為結(jié)點(diǎn)的特征,由該特征的不同取值建立子結(jié)點(diǎn);再對(duì)子結(jié)點(diǎn)遞歸地調(diào)用以上方法,構(gòu)建決策樹;直到所有特征的信息增益很小或沒有特征可以選擇為止,最后得到一棵決策樹。ID3相當(dāng)于用極大似然法進(jìn)行概率模型的選擇。
ID3算法
輸入:訓(xùn)練集DDD,特征集AAA,閾值?\epsilon?
輸出:決策樹TTT
(1)若DDD中所有實(shí)例屬于同一類CkC_kCk?,則TTT為單結(jié)點(diǎn)樹,并將類CkC_kCk?作為該結(jié)點(diǎn)的類標(biāo)記,返回TTT
(2)若A=?A=\varnothingA=?,則TTT為單結(jié)點(diǎn)樹,并將DDD中實(shí)例數(shù)最大的類CkC_kCk?作為該結(jié)點(diǎn)的類標(biāo)記,返回TTT
(3)否則,否則按照信息增益的算法,計(jì)算AAA中各特征對(duì)DDD的信息增益,選擇信息增益最大的特征AgA_gAg?
(4)如果AgA_gAg?的信息增益小于閾值?\epsilon?,則置TTT為單結(jié)點(diǎn)樹,并將DDD中實(shí)例數(shù)最大的類CkC_kCk?作為該結(jié)點(diǎn)的類標(biāo)記,返回TTT
(5)否則,對(duì)AgA_gAg?的每一可能值aia_iai?,依Ag=aiA_g=a_iAg?=ai?將DDD分割為若干非空子集DiD_iDi?,將DiD_iDi?中實(shí)例數(shù)最大的類作為標(biāo)記,構(gòu)建子結(jié)點(diǎn),由結(jié)點(diǎn)及其子結(jié)點(diǎn)構(gòu)成樹TTT,返回TTT
(6)對(duì)第iii個(gè)子結(jié)點(diǎn),以DiD_iDi?為訓(xùn)練集,以A?{Ag}A-\{A_g\}A?{Ag?}為特征集,遞歸地調(diào)用(1)~(5),得到子樹TiT_iTi?,返回子樹TiT_iTi?
5.3.1 C4.5算法
C4.5算法與ID3算法相似,C4.5算法對(duì)ID3算法進(jìn)行了改進(jìn),C4.5在生成的過程中,用信息增益比來選擇特征。
C4.5的生成算法
輸入:訓(xùn)練集DDD,特征集AAA,閾值?\epsilon?
輸出:決策樹TTT
(1)若DDD中所有實(shí)例屬于同一類CkC_kCk?,則TTT為單結(jié)點(diǎn)樹,并將類CkC_kCk?作為該結(jié)點(diǎn)的類標(biāo)記,返回TTT
(2)若A=?A=\varnothingA=?,則TTT為單結(jié)點(diǎn)樹,并將DDD中實(shí)例數(shù)最大的類CkC_kCk?作為該結(jié)點(diǎn)的類標(biāo)記,返回TTT
(3)否則,否則按照信息增益的算法,計(jì)算AAA中各特征對(duì)DDD的信息增益,選擇信息增益最大的特征AgA_gAg?
(4)如果AgA_gAg?的信息增益比小于閾值?\epsilon?,則置TTT為單結(jié)點(diǎn)樹,并將DDD中實(shí)例數(shù)最大的類CkC_kCk?作為該結(jié)點(diǎn)的類標(biāo)記,返回TTT
(5)否則,對(duì)AgA_gAg?的每一可能值aia_iai?,依Ag=aiA_g=a_iAg?=ai?,將DDD分割為子集若干非空DiD_iDi?,將DiD_iDi?中實(shí)例數(shù)最大的類作為標(biāo)記,構(gòu)建子結(jié)點(diǎn),由結(jié)點(diǎn)及其子結(jié)點(diǎn)構(gòu)成樹TTT,返回TTT
(6)對(duì)第iii個(gè)子結(jié)點(diǎn),以DiD_iDi?為訓(xùn)練集,以A?{Ag}A-\{A_g\}A?{Ag?}為特征集,遞歸地調(diào)用(1)~(5),得到子樹TiT_iTi?,返回子樹TiT_iTi?
5.4 決策樹的剪枝
決策樹生成算法遞歸地產(chǎn)生決策樹,直到不能繼續(xù)下去為止,這樣產(chǎn)生的決策樹往往對(duì)訓(xùn)練數(shù)據(jù)的分類很準(zhǔn)確,但對(duì)未知的測(cè)試數(shù)據(jù)卻沒有那么準(zhǔn)確,即出現(xiàn)過擬合現(xiàn)象。過擬合的原因在于學(xué)習(xí)時(shí)過多的考慮如何提高對(duì)訓(xùn)練數(shù)據(jù)的正確分類,從而構(gòu)造出過于復(fù)雜的決策樹。解決這個(gè)問題的辦法是考慮決策樹的復(fù)雜度,對(duì)已生成的決策樹進(jìn)行簡(jiǎn)化。
在決策樹學(xué)習(xí)中,將已生成的樹進(jìn)行簡(jiǎn)化的過程稱為剪枝(Pruning)。具體地,剪枝從已生成的樹上裁掉一些子樹或葉子結(jié)點(diǎn),并將其根結(jié)點(diǎn)或父結(jié)點(diǎn)作為新的葉結(jié)點(diǎn),從而簡(jiǎn)化分類樹模型。
樹的剪枝算法
輸入:生成算法產(chǎn)生的整個(gè)樹TTT,參數(shù)α\alphaα
輸出:修剪后的子樹TαT_{\alpha}Tα?
(1)計(jì)算每個(gè)結(jié)點(diǎn)的經(jīng)驗(yàn)熵
(2)遞歸地從樹的葉結(jié)點(diǎn)向上回縮
設(shè)計(jì)一組葉結(jié)點(diǎn)回縮到其父結(jié)點(diǎn)之前,與之后的整體樹分別為TB與TAT_B與T_ATB?與TA?,其對(duì)應(yīng)的損失函數(shù)分別是Cα(TB)與Cα(TA)C_{\alpha}(T_B)與C_{\alpha}(T_A)Cα?(TB?)與Cα?(TA?),如果Cα(TB)≤Cα(TA)C_{\alpha}(T_B)\le C_{\alpha}(T_A)Cα?(TB?)≤Cα?(TA?)則進(jìn)行剪枝,即將其父結(jié)點(diǎn)變?yōu)樾碌娜~結(jié)點(diǎn)。
(3)返回(2)直至不能繼續(xù)為止,得到損失函數(shù)最小的子樹TαT_{\alpha}Tα?
5.5 CART算法
- 分類與回歸樹(CART),模型由Breiman等人在1984年提出,是應(yīng)用廣泛的決策樹學(xué)習(xí)方法。CART同樣由特征選擇、樹的生成及剪枝組成,既可以用于分類也可以用于回歸。
- CART是在給定輸入隨機(jī)變量X的條件下,輸出隨機(jī)變量Y的條件概率分布的學(xué)習(xí)方法。假設(shè)決策樹是二叉樹,內(nèi)部結(jié)點(diǎn)特征的取值為是和否,左分支的取值為是,右分支的取值為否。這樣的決策樹等價(jià)于遞歸地二分每個(gè)特征,將輸入空間即特征空間劃分為有限個(gè)單元,并在這些單元上確定預(yù)測(cè)的概率分布,也就是在輸入給定的條件下,輸出的條件概率分布。
- CART算法由以下兩步組成:
(1)決策樹生成:基于訓(xùn)練數(shù)據(jù)集生成決策樹,生成的決策樹要盡量大。
(2)決策樹剪枝:用驗(yàn)證數(shù)據(jù)集對(duì)已生成的樹進(jìn)行剪枝并選擇最優(yōu)子樹,這時(shí)用損失函數(shù)最小作為剪枝的標(biāo)準(zhǔn)。
5.5.1 CART生成
1. 回歸樹的生成
最小二乘回歸樹生成算法
輸入:訓(xùn)練數(shù)據(jù)集DDD
輸出:回歸樹f(x)f(x)f(x)
在訓(xùn)練數(shù)據(jù)集所在的輸入空間中,遞歸地將每個(gè)區(qū)域劃分為兩個(gè)子區(qū)域,并決定每個(gè)子區(qū)域上的輸出值,構(gòu)建二叉決策樹:
(1)選擇最優(yōu)切分變量jjj與切分點(diǎn)sss,求解minj,s[minc1∑xi∈R1(j,s)(yi?c1)2+minc2∑xi∈R2(j,s)(yi?c2)2]min_{j,s}[min_{c_1}\sum_{x_i\in R_1(j,s)}(y_i-c_1)^2+min_{c_2}\sum_{x_i\in R_2(j,s)}(y_i-c_2)^2]minj,s?[minc1??xi?∈R1?(j,s)∑?(yi??c1?)2+minc2??xi?∈R2?(j,s)∑?(yi??c2?)2]遍歷遍歷jjj,對(duì)固定的切分變量jjj掃描切分點(diǎn)sss,選擇使上式達(dá)到最小值的(j,s)(j,s)(j,s)
(2)用選定的(j,s)(j,s)(j,s)劃分區(qū)域并決定相應(yīng)的輸出值
(3)繼續(xù)對(duì)兩個(gè)子區(qū)域調(diào)用步驟(1)(2)直至滿足停止條件
(4)將輸入空間劃分為M個(gè)區(qū)域R1,R2,?,RMR_1,R_2,\cdots,R_MR1?,R2?,?,RM?,生成決策樹f(x)=∑m=1Mc^mI(x∈Rm)f(x)=\sum_{m=1}^M\hat c_mI(x\in R_m)f(x)=m=1∑M?c^m?I(x∈Rm?)
2. 分類樹的生成
- 分類樹用基尼指數(shù)選擇最優(yōu)特征,同時(shí)決定該特征的最優(yōu)二值切分點(diǎn)
- 二類分類中基尼指數(shù)、熵之半和分類誤差率的關(guān)系
5.5.2 CART剪枝
- CART剪枝算法從完全生長(zhǎng)的決策樹的底端減去一些子樹,使決策樹變小(模型變簡(jiǎn)單),從而能夠?qū)ξ粗獢?shù)據(jù)有更準(zhǔn)確的預(yù)測(cè)。CART剪枝算法由兩步組成:首先,從生成算法產(chǎn)生的決策樹T0T_0T0?底端開始不斷剪枝,直到T0T_0T0?的根結(jié)點(diǎn),形成一個(gè)子樹序列{T0,T1,?,Tn};\{T_0,T_1,\cdots,T_n\};{T0?,T1?,?,Tn?};然后,通過交叉驗(yàn)證法在獨(dú)立的驗(yàn)證數(shù)據(jù)集上,對(duì)子樹序列進(jìn)行測(cè)試,從中選擇最優(yōu)子樹。
1. 剪枝,形成一個(gè)子樹序列
2.在剪枝得到的子樹序列中通過交叉驗(yàn)證選取最優(yōu)子樹
本章概要
(1)樣本集合DDD對(duì)特征AAA的信息增益(ID3)
g(D,A)=H(D)?H(D∣A)g(D,A)=H(D)-H(D|A)g(D,A)=H(D)?H(D∣A)
H(D)=?∑k=1K∣Ck∣∣D∣log2∣Ck∣∣D∣H(D)=-\sum_{k=1}^K{{|C_k|}\over{|D|}}log_2{{|C_k|}\over{|D|}}H(D)=?k=1∑K?∣D∣∣Ck?∣?log2?∣D∣∣Ck?∣?
H(D∣A)=∑i=1n∣Di∣∣D∣H(Di)H(D|A)=\sum_{i=1}^n{{|D_i|}\over{|D|}}H(D_i)H(D∣A)=i=1∑n?∣D∣∣Di?∣?H(Di?)
其中H(D)H(D)H(D)是數(shù)據(jù)集DDD的熵,H(Di)H(D_i)H(Di?)是數(shù)據(jù)集DiD_iDi?的熵,H(D∣A)H(D|A)H(D∣A)是數(shù)據(jù)集DDD對(duì)特征AAA的條件熵。DiD_iDi?是DDD中特征AAA取第iii個(gè)值的樣本子集,CkC_kCk?是DDD中屬于第kkk類的樣本子集。nnn是特征AAA取值,KKK是類的個(gè)數(shù)。
(2)樣本集合DDD對(duì)特征AAA的信息增益比(C4.5)
gR(D,A)=g(D,A)HA(D)g_R(D,A)={{g(D,A)}\over{H_A(D)}}gR?(D,A)=HA?(D)g(D,A)?
其中,g(D,A)g(D,A)g(D,A)是信息增益,HA(D)H_A(D)HA?(D)是DDD關(guān)于特征AAA的值的熵。
(3)樣本集DDD的基尼指數(shù)(CART)
Gini(D)=1?∑k=1K(∣Ck∣∣D∣)2Gini(D)=1-\sum_{k=1}^K({{|C_k|}\over{|D|}})^2Gini(D)=1?k=1∑K?(∣D∣∣Ck?∣?)2
特征A條件下集合DDD的基尼指數(shù):
Gini(D,A)=∣D1∣∣D∣Gini(D1)+∣D2∣∣D∣Gini(D2)Gini(D,A)={{|D_1|}\over{|D|}}Gini(D_1)+{{|D_2|}\over{|D|}}Gini(D_2)Gini(D,A)=∣D∣∣D1?∣?Gini(D1?)+∣D∣∣D2?∣?Gini(D2?)
總結(jié)
以上是生活随笔為你收集整理的机器学习理论《统计学习方法》学习笔记:第五章 决策树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机视觉:卷积神经网络基础
- 下一篇: 计算机视觉:基于眼疾分类数据集iChal