1. 程式人生 > >決策樹學習筆記

決策樹學習筆記

描述 全局 .com 目標 算法 最優 基本 預測 移動

對於李航統計學習方法中決策樹的學習想從一下幾個角度進行整理:

1.決策樹介紹

2.熵,信息增益,信息增益率,基尼指數

3.決策樹的生成算法(ID3,C4.5,CART)

4.決策樹的減枝

1.決策樹介紹

1.1 決策樹的模型:

分類決策樹模型是一種描述對實例進行分類的樹形結構。決策樹由結點和有向邊組成。結點有兩種類型:內部節點和葉節點,內部節點表示一個特征或屬性,葉節點表示一個類。分類的時候,從根節點開始,當前節點設為根節點,當前節點必定是一種特征,根據實例的該特征的取值,向下移動,直到到達葉節點,將實例分到葉節點對應的類中。

1.2 決策樹分類的if-then規則

決策樹的屬性結構其實對應著一個規則集合:由決策樹的根節點到葉節點的每條路徑構成的規則組成;路徑上的內部特征對應著if條件,葉節點對應著then結論。決策樹和規則集合是等效的,都具有一個重要的性質:互斥且完備。也就是說任何實例都被且僅被一條路徑或規則覆蓋。

1.3 決策樹學習

決策樹的學習本質是歸納出一組分類規則,規則可能有多個,目的是為了獲得一個與訓練數據矛盾較小的樹,同時有很好的泛化能力。

從所有的決策樹中選取最有決策樹是NP問題,常采用啟發式方法近似求解這一問題。

學習算法通常為遞歸選擇最優特征、根據特征訓練數據進行分割,使各個子集有一個最好分類過程,這一過程對應著特征空間的劃分。開始,構建很結點,將所有訓練數據都放在根結點中按照這一特征將訓練數據些子集已經能夠被基本正確分類,那麽構建葉結點,並將這些自己分到所對應的葉結點中去:如果還有子集不能被基本正確分類,那麽就對這些自己選擇新的最優特征,繼續對去進行分割,構建相應的結點。然後一直遞歸下去,知道所有訓練數據子集被基本正確分類,或者沒有合適的特征為止。

2.熵,信息增益,信息增益率

2.1 熵

熵表示隨機變量不確定性的度量,熵越大,不確定性越大。對於一個可能有n中取值的隨機變量X,其概率分布為:

技術分享圖片

其熵為:

技術分享圖片

由定義值,X的熵與X無關,只與分布有關,所以也可以將X的熵記作H(p),即:

技術分享圖片

設有隨機變量(X,Y),其聯合分布為:

技術分享圖片

條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性,定義為在X給定的條件下,Y的田間概率分布對X的數學期望:

技術分享圖片

這裏,技術分享圖片

當熵和條件熵中的概率由極大似然估計得到時,所對應的熵與條件熵分別稱為經驗熵和經驗條件熵

2.2 信息增益

信息增益表示得知特征X的信息而使得類Y的信息的不確定性減少的程度。

定義:特征A對訓練數據集D的信息增益g(D,A),定義為集合D的經驗熵H(D)與特征A給定條件下D的經驗條件熵H(D|A)之差,即:技術分享圖片

給定數據集D和特征A,經驗熵H(D)表示對數據集的不確定性。經驗條件熵H(D|A)表示在特征A給定的條件下的數據集D進行分類的不確定性。此時信息增益表示由於特征A而使得對數據集D的分類的不確定性減少的程度,對於數據集D,信息增益大的特征具有更強的分類能力。

技術分享圖片

2.3 信息增益比

信息增益的值是相對於訓練數據集而言的,當H(D)大的時候,信息增益值往往會偏大,這樣對H(D)小的特征不公平。改進的方法是信息增益比。

技術分享圖片

3.決策樹生成算法

3.1 ID3算法

從根節點開始,計算所有可能的特征的信息增益,選擇信息增益最大的特征作為當前節點的特征,由特征的不同取值建立空白子節點,對空白子節點遞歸調用此方法,直到所有特征的信息增益小於閥值或者沒有特征可選為止。ID3相當於用極大似然法進行概率模型的選擇。

技術分享圖片

3.2 C4.5生成算法

C4.5在生成的過程中,用信息增益比來選擇特征

技術分享圖片

決策樹減枝

決策樹很容易發生過擬合,過擬合的原因在於學習的時候過多地考慮如何提高對訓練數據的正確分類,從而構建出過於復雜的決策樹。解決這個問題的辦法就是簡化已生成的決策樹,也就是剪枝。決策樹對應模型的劇本選擇,減枝對應著模型全局選擇。

決策樹的剪枝往往通過極小化決策樹整體的損失函數或代價函數來實現。

設決策樹T的葉節點有|T|個,t是某個葉節點,t有Nt個樣本點,其中歸入k類的樣本點有Ntk個,Ht(T)為葉節點t上的經驗熵,α≥0為參數,則損失函數可以定義為:

技術分享圖片

其中經驗熵Ht(T)為:

技術分享圖片

表示葉節點t所代表的類別的不確定性。損失函數對它求和表示所有被導向該葉節點的樣本點所帶來的不確定的和的和。我沒有多打一個“的和”,第二個是針對葉節點t說的。

在損失函數中,將右邊第一項記作:

技術分享圖片

則損失函數可以簡單記作:

技術分享圖片

C(T)表示模型對訓練數據的預測誤差,即模型與訓練數據的擬合程度,|T|表示模型復雜度,參數α≥0控制兩者之間的影響,α越大,模型越簡單,α=0表示不考慮復雜度。

剪枝,就是當α確定時,選擇損失函數最小的模型。子樹越大C(T)越小,但是α|T|越大,損失函數反映的是兩者的平衡。

決策樹的生成過程只考慮了信息增益或信息增益比,只考慮更好地擬合訓練數據,而剪枝過程則考慮了減小復雜度。前者是局部學習,後者是整體學習。

樹的剪枝算法:從每個葉節點往上走,走了後如果損失函數減小了,則減掉葉節點,將父節點作為葉節點。如圖:

技術分享圖片

新葉節點到底應該選擇原來的葉節點中的哪一種類別呢?

3.3 CART算法

分類與回歸樹(CART)模型同樣由特征選取、樹的生成和剪枝組成,既可以用於分類也可以用於回歸。CART假設決策樹是二叉樹,內部節點特征的取值為是和否,對應一個實例的特征是否是這樣的。決策樹遞歸地二分每個特征,將輸入空間劃分為有限個單元。

CART生成就是遞歸地構建二叉決策樹的過程。對回歸樹用平方誤差最小化準則,對分類樹用基尼指數最小化準則,進行特征選取,生成二叉樹。

3.3.1 回歸樹

回歸樹與分類樹在數據集上的不同就是數據集的輸出部分不是類別,而是連續變量。

假設輸入空間已經被分為M個單元 技術分享圖片,分別對應輸出值Cm,於是回歸樹模型可以表示為:技術分享圖片

回歸樹的預測誤差:技術分享圖片

那麽輸出值就是使上面誤差最小的值,也就是均值:

難點在於怎麽劃分,一種啟發式的方法(暴力搜索):

遍歷所有輸入變量,選擇第j個變量和它的值s作為切分變量和切分點,將空間分為兩個區域:

技術分享圖片

然後計算兩個區域的平方誤差,求和,極小化這個和,具體的,就是:

技術分享圖片

當j最優化的時候,就可以將切分點最優化:

技術分享圖片

遞歸調用此過程,這種回歸樹通常稱為最小二乘回歸樹

技術分享圖片

3.3.2 分類樹

與回歸樹算法流程類似,只不過選擇的是最優切分特征和最優切分點,並采用基尼指數衡量。基尼指數定義:

技術分享圖片

對於給定數據集D,其基尼指數是:

技術分享圖片

Ck是屬於第k類的樣本子集,K是類的個數。Gini(D)反應的是D的不確定性(與熵類似),分區的目標就是降低不確定性。

D根據特征A是否取某一個可能值a而分為D1和D2兩部分:

技術分享圖片

則在特征A的條件下,D的基尼指數是:

技術分享圖片

設節點的當前數據集為D,對D中每一個特征A,對齊每個值a根據D中樣本點是否滿足A==a分為兩部分,計算基尼指數。對所有基尼指數選擇最小的,對應的特征和切分點作為最優特征和最優切分點,生成兩個子節點,將對應的兩個分區分配過去,然後對兩個子節點遞歸。

CART減枝

在上面介紹的損失函數中,當α固定時,一定存在使得損失函數最小的子樹,記為復雜度=Tα,α偏大Tα就偏小。設對α遞增的序列,對應的最優子樹序列為Tn,子樹序列第一棵包含第二棵,依次類推。

從T0開始剪枝,對它內部的任意節點t,只有t這一個節點的子樹的損失函數是:

技術分享圖片

以t為根節點的子樹的損失函數是:

技術分享圖片

當α充分小,肯定有:

技術分享圖片

這個不等式的意思是復雜模型在復雜度影響力小的情況下損失函數更小。當α增大到某一點,這個不等式的符號會反過來。

只要 技術分享圖片,損失函數值就相同,但是t更小,所以t更可取,於是把Tt減枝掉,為此,對每一個t,計算

技術分享圖片

表示損失函數的減少程度,從T中剪枝掉g(t)最小的Tt,取新的α=g(t),直到根節點。這樣就得到了一個子樹序列,對此序列用獨立的驗證數據集交叉驗證,選取最優子樹,減枝完畢。

技術分享圖片

決策樹學習筆記