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

決策樹學習筆記(二)

決策樹學習筆記(二)

接著上一篇

接著上一篇筆記決策樹學習筆記(一)繼續學習,上一篇主要是對決策模型的初步認識和理解以及特徵選擇的一些規則;接下去就是決策樹演算法的具體實現和優化,包括決策樹生成、剪枝以及分類與迴歸樹(CART)詳解。分類與迴歸樹模型還會在後續的提升樹學習中結合使用。

做學習筆記確實是一件比較耗時的事情(已經快被實驗室專案榨乾精力,期盼週末TT),僅剩的空閒時間勉強夠我對最近的學習內容做些整理;看完一遍後書本知識再做整理的過程中確實能加深對演算法的理解,把演算法原理步驟再表達一遍才能發現哪些地方自己並不是很清楚,然後思考、搜尋、解答。

5.決策樹生成

決策樹學習的生成演算法主要有ID3演算法和C4.5演算法,其實它們的生成過程是類似的,前者用資訊增益準則選擇特徵,後者則是加強版—資訊增益比。

(關於資訊增益比的好處上一篇筆記中已經介紹)

ID3演算法:在決策樹的各個結點上採用資訊增益準則選擇特徵,遞迴構建決策樹。

具體實現:從根結點開始,對當前結點計算所有特徵的資訊增益,選擇資訊增益最大的特徵作為當前結點特徵,然後根據該特徵的不同取值構建子結點;接著對新生成帶我子結點遞迴執行以上步驟,直到所有特徵的資訊增益都很小或者沒有特徵可選(分類完畢)為止。

書上說:ID3相當於用極大似然法進行概率模型的選擇。—這裡理解起來需要統計學知識,似懂非懂…

極大似然法是屬於數理統計範疇,旨在由果溯因。比如扔一枚骰子(骰子每個面上只標記1或2),現在告訴你扔了n次骰子其中有k次朝上的是1;然後問你這個骰子標記為1的面所佔的比例w是多少?極大似然法

的思想就是估計當w取值為多少的時候,k次朝上的可能性最大。具體計算方法就是對錶達式求最大值,得到引數值估計值:

一般就是對這個表示式求一階導=0(二階導<0);

這就是極大似然估計方法的原理:用使概率達到最大的那個w來估計位置引數w。回到ID3,決策樹生成的過程可以理解成對決策樹模型的引數估計(就是基於特徵空間劃分的類的概率模型),根據訓練資料的特徵分佈,選擇使得模型最契合當前樣本分佈空間時的條件概率模型。

演算法步驟:


演算法案例(表資料見上一筆記):


注:ID3演算法至考慮了樹的生成,即儘可能的是模型擬合當前訓練資料集,所以該演算法生成的樹容易過擬合。

C4.5生成演算法

:C4.5演算法用資訊增益比來選擇特徵,演算法過程與ID3演算法類似,故不多做闡述。

演算法步驟:

6.決策樹的剪枝

上一篇將決策樹學習的時候就提到決策樹生成演算法會對當前資料集擬合,但對未知資料的分類預測並沒有那麼準確,即過擬合現象。解決這個問題的辦法就是適當的減少樹的複雜度,在決策樹學習中將已生成的樹進行簡化的過程稱為剪枝(pruning)。

具體地:剪枝從已生成的樹上裁掉一些子樹或葉結點,並將其根結點或父結點作為新的葉結點,從而簡化分類模型。
剪枝往往通過極小化損失函式來實現,決策樹學習的損失函式Ca(T):

|T|為樹T葉結點個數,t是樹T的葉結點,該葉結點有Nt個樣本點,其中k類的樣本點有Ntk個.

其中經驗熵Ht(T)為:

損失函式第一項可以理解為所有葉結點的經驗熵加權和:

損失函式第二項看下書上解釋:

看到這裡我想到了之前看Ng視訊的內容,這部分不就是正則化嘛!有興趣的同學可以看下coursera上機器學習課程week-3-第5節.

利用損失函式最小原則進行剪枝就是用正則化的極大似然估計進行模型選擇。

剪枝演算法步驟:



7.CART演算法

分類與迴歸樹(classification and regression tree,CART),顧名思義,該演算法既可用於分類也可用於迴歸。同樣由特徵選擇、樹的生成及剪枝組成。

CART是在給定輸入隨機變數X條件下輸出隨機變數Y的條件概率分佈的學習方法。CART假設決策樹是二叉樹,內部結點特徵的取值為“是”和“否”,左分支是取值為“是”的分支,右分支是取值為“否”的分支。這樣的決策樹等價於遞迴地二分每個特徵,將輸入空間即特徵空間劃分為有限個單元,並在這些單元上確定預測的概率分佈,也就是在輸入給定的條件下輸出的條件概率分佈。

主要由兩步組成:
(1)決策樹生成:基於訓練資料集生成決策樹,生成的決策樹要儘量大;
(2)決策樹剪枝:用驗證資料集對已生成的樹進行剪枝並選擇最優子樹,這時用損失函式最小作為剪枝的標準。

注:機器學習中通常將資料分為訓練集、測試集、交叉驗證資料集。

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

(1)迴歸樹的生成

假設X與Y分別為輸入和輸出變數,並且Y是連續變數,給定訓練資料集:

一個迴歸樹對應著輸入空間(即特徵空間)的一個劃分以及在劃分單元上的輸出值。假設已將輸入空間劃分為M個單元R1,R2…,RM,並且在每個單元有一個固定的輸出值cm,迴歸樹模型可以表示為:

當輸入空間的劃分確定時,可以用平方誤差來表示迴歸樹對於訓練資料的預測誤差,用平方誤差最小化準則求解每個單元上的最優輸出值。單元Rm上的cm最優值是Rm上的所有輸入xi對應的輸出yi的均值,即

問題關鍵,輸入空間怎麼劃分,通常採用啟發式的方法,選擇第j個變數x(j)和它的取值s,作為切分變數和切分點,並定義兩個區域:

然後尋找最優切分變數j和最優切分點s,具體地,求解

對固定輸入變數j可以找到最優切分點s。

遍歷所有輸入,找到最優的切分變數j,構成一個對(j,s)。依此將輸入空間劃分為兩個區域。接著,對每個區域重複以上劃分過程,直到滿足停止條件為止。這樣就生成了一顆迴歸樹。通常稱為最小二乘迴歸樹(least squares regression tree)

最小二乘樹生成演算法步驟:

CART案例會在後續的提升樹演算法筆記中提及,但是那隻用了樹樁。

(2)分類樹的生成

分類樹用基尼指數選擇最優特徵,同時決定該特徵的最優二值切分點。

基尼指數:分類問題中假設有K個類,樣本點屬於第k類的概率為pk,則概率分佈的基尼指數定義為

對於二分類問題,弱樣本點屬於第一個類的概率為p,則概率分佈的基尼指數為

對於給定的樣本集合D,其基尼指數為

這裡,Ck是D中屬於第k類的樣本子集,K是類的個數。

如果樣本集合D根據特徵A是否取某一可能值a被分割成D1和D2兩部分,即:
則在特徵A的條件下,集合D的基尼指數定義為:
基尼指數Gini(D)表示集合D三維不確定性,基尼指數Gini(D,A)表示經A=a分割後的集合D的不確定性。基尼指數越大,樣本集合的不確定性也就越大。讀到這裡想必已經想到上一博文中說的熵了吧,下面給出它們的對比:

熵H(p)隨概率p的變化曲線:

二分類問題中基尼指數Gini(p)\熵(單位位元)之半1/2H(p)和分類誤差率的關係:

由上圖可看出基尼指數與熵之半的曲線很接近,都可以近似的代表分類誤差率。

CART生成演算法步驟:

CART生成演算法案例:

CART剪枝

CART剪枝演算法從“完全生長”的決策樹的地段剪去一些子樹,使決策樹變小,從而能夠對未知資料有更準確的預測。CART剪枝演算法步驟:

(1)首先從省城演算法產生的決策樹T0低端不斷剪枝,知道T0的根結點,形成一個子序列{T0,T1,…Tn}
(2)通過交叉驗證在獨立的驗證資料集上對子樹序列進行測試,從中選擇最優子樹。

(1)剪枝,形成一個子樹序列

CART的剪枝與前面所講的決策樹剪枝大同小異,也是最小化損失函式的過程,即加上正則化項。




(2)在剪枝的子序列T0,T1,…,Tn中通過交叉驗證選取最優子樹Ta

CART剪枝演算法步驟:

8.總結

決策樹涉及的內容很廣,這兩篇筆記涵蓋了決策樹演算法的原理公式(包括熵、基尼指數等概念)、多種決策樹生成演算法和剪枝演算法,看完這些花了我兩天的空閒時間,然後過第二遍做筆記也是斷斷續續接近一週的時間。李航老師的書還是很符合我的學習思維的,接下去要在理解原理的基礎上做些實踐。決策樹演算法提出至今已有幾十年的時間,它們還在實際生產工作中發揮著重大作用,足見其威力。特別是基於決策樹做的一些優化和改進的演算法,如GBDT\Xgboost,都是非常簡單高效的演算法工具。

參考文獻:
李航 《統計學習方法》

注:本文以及前一篇博文所有公式圖片均來自《統計學習方法》