1. 程式人生 > >統計學習方法 李航 決策樹

統計學習方法 李航 決策樹

決策樹

一.決策樹基本描述

決策樹是一種基本的分類與迴歸方法,呈樹形結構,在分類問題中,表示基於特徵對例項進行分類的過程.學習時,利用訓練資料根據損失函式最小化的原則建立決策樹模型.預測時,對新的資料,利用決策樹模型進行分類.而學習又通常包括三個步驟:特徵選擇,決策樹生成,決策樹修剪.


二.決策樹模型與學習

1.決策樹模型

決策樹定義:
分類決策樹模型是一種描述對例項進行分類的樹形結構,決策樹由節點(node)和有向邊(directed edge)組成.節點有兩種型別:內部節點(internal node)和葉節點(leaf node).內部節點表示一個特徵或者屬性,而葉節點表示一個類.


2.決策樹與if-then規則

決策樹可以看成一個if-then規則的集合.具體做法就是,從根節點到葉節點的每條路構建一個規則,路徑上內部節點的特徵對應著規則條件,葉節點的類則對應著規則的結論.因此決策樹及其對應的if-then規則還有一個重要性質,互斥並且完備.即一對一且不會有例項對不上任何一條路.


3.決策樹與條件概率分佈

決策樹還表示給定特徵條件下類的條件分佈概率,
???


4.決策樹的學習

決策樹學習的目標就是根據給定的訓練資料集構建一個決策模型,使它能夠對例項進行正確分類.但生成的決策樹(能對訓練資料進行正確分類)卻可能不止一個.這裡就用到了損失函式.

決策樹學習的損失函式通常是正則化的極大似然函式(不懂),而決策樹學習的策略就是以損失函式為目標函式的最小化.當損失函式確定後,學習問題就變為在損失函式意義下選擇最優決策樹.

學習前,若特徵數量很多,可先對特徵i進行選擇,只留下對訓練資料有足夠分類能力的特徵.

決策樹的學習演算法通常是一個遞迴地選擇最優特徵對訓練資料進行分割的過程.開始,將所有資料放在根節點,選擇一個最優特徵(之後會說如何選擇),以它來分割資料集,使得到各子集有一個在當前條件下最好的分類,然後若子集已基本正確分類就構建葉子節點,否則繼續對子集選擇新的最優特徵,分割,如此遞迴下去,直到所有訓練資料子集也都正確分類.(這裡確定是否已基本正確分類的條件之後也會說).這樣一棵決策樹便構建完成.

但這樣的決策樹對訓練資料的分類能力很好,但對測試資料卻不一定,容易發生過擬合.因此便需要剪枝,使樹簡單點,增加其泛化能力.大概思路就是去掉過於細分的葉節點,使它退回到父節點,甚至更高節點,然後將父節點或更高i節點改為葉節點.

綜上,決策樹的學習演算法包括,特徵選擇,決策樹的生成,決策樹的剪枝.這裡還提到一點,就是決策樹的生成相當於考慮區域性最優,而剪枝則是考慮的全域性最優.

決策樹學習常用的演算法有ID3,C4.5, CART等


三.特徵選擇

1.特徵選擇問題

特徵選擇在於選擇對訓練資料最具有分類能力的特徵.而評判資訊選擇的準則通常是資訊增益(資訊增益比).即分類的能力強弱是通過資訊增益(資訊增益比)來具體化的.


2.資訊增益

這裡先要給出熵與條件熵的定義.
熵是表示隨機變數不確定性的度量.設X為一個取值有限的離散隨機變數,其概率為

$P(X = x_i)=p_i, i=1,2,\cdots,n$

則隨機變數X的熵定義為

$H(X)=-\sum_{i=1}^np_i\log p_i$

通常上式是以2或e為底,此時熵的單位分別稱作bit或nat.這裡可知熵只和X分佈有關,而與其取值無關.
且熵越大,隨機變數的不確定性就越大.

設有隨機變數(X,Y),其聯合概率分佈為:

$P(X=x_i,Y=y_j)=p_{ij}, i=1,2,\cdots,n;j=1,2,\cdots,m$

條件熵H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性.並定義為

$H(Y|X)=\sum_{i=1}^{n}p_iH(Y|X=x_i)$

其中$p_i=P(X=x_i),i=1,2,\cdots,n$

資訊增益表示得知特徵X的資訊後而使類Y的資訊的不確定性減少的程度.
定義:特徵A對訓練資料集D的資訊增益g(D,A),定義為集合D的經驗熵(當熵中的概率由資料統計得到時)H(D)與特徵A給定條件下D的經驗條件熵(同前)H(D|A)之差,即:

$g(D,A)=H(D)-H(D|A)$

一般地,熵H(Y)與條件熵H(Y|X)之差為互資訊.決策樹學習中的資訊增益等於訓練資料集中類與特徵的互資訊.

決策樹學習中選擇特徵就是以資訊增益為準則的.對資料集D而言,不同的特徵具有不同的資訊增益,顯然,資訊增益打的特徵具有更強的分類能力.具體實行方法是:對訓練資料集D,計算每個特徵的資訊增益,並比較其大小,每次選擇資訊增益最大的特徵.

資訊增益演算法:
FsBLvV.png
例題所需的表
FsBqg0.png
例題
FsBb3q.png


3.資訊增益比

資訊增益值的大小是相對與訓練資料集而言的,並無絕對意義.說白了,就是直接用資訊增益來衡量不準.
所以就出現了資訊增益比.
定義:
特徵A對訓練資料集D的資訊增益比$g_R(D,A)$定義為其資訊增益g(D,A)與訓練集D的經驗熵H(D)之比:

$g_R(D,A) = \frac{g(D,A)}{H(D)}$


決策樹的生成

1.ID3演算法

ID3演算法應用資訊增益來選則特徵,遞迴地構建決策樹.具體方法:從根節點開始,對節點計算所有特徵的資訊增益,選擇增益最大的特徵作為節點的特徵,由該特徵的不同取值建立子節點(此後不會再選擇該特徵來分割了);再對子節點遞迴使用如上方法.邊界條件:直到所有特徵的資訊增益均很小或沒有特徵可選為止.需要注意的是,ID3演算法只有樹的生成,因此容易產生過擬合.

演算法:
FsDLid.png
例題:
FsDOJA.png

2.C4.5演算法

C4.5演算法和ID3基本一致,只是C4.5是用資訊增益比來選擇特徵的.
FsrkJs.png

3.決策樹的剪枝

決策樹生成演算法產生的決策樹對訓練資料往往分類準確,但對測試資料卻表現不好,這是由於決策樹過複雜導致過擬合.而解決此問題的方法就是降低樹的複雜度,即剪枝.
這裡介紹的是一種簡單的剪枝演算法.
決策樹的剪枝往往是通過極小化決策樹的整體損失函式或代價函式來實現的.設樹T的葉節點個數為|T|,t是樹T的葉節點.該葉節點有$N_t$個樣本點,其中k類的樣本點有$N_{kt}$個,k=1,2,...,K,$H_t(T)$為葉節點t上的經驗熵,$\alpha\geq0$為引數,則決策樹學習的損失函式可以定義為

$C_\alpha(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T|$

又其中經驗熵為

$H_t(T)=-\sum_k \frac{N_{tk}}{N_t} \log\frac{N_{tk}}{N_t}$

所以損失函式中第一項記作

$C(T)=\sum_{t=1}^{|T|}N_tH_t(T) =- \sum_{t=1}^{|T|}\sum_{k=1}^{K}N_{tk}\log\frac{N_{tk}}{N_t}$

此時有

$C_\alpha(T)=C(T)+\alpha|T|$

該式中,C(T)表示模型對訓練資料的預測誤差,即他們的擬合程度,|T|表示模型的複雜度,引數$\alpha\geq0$控制兩者之間的影響.$\alpha$較大則促使較簡單的模型,較小的$\alpha$則促使複雜的模型.

因此,剪枝,就是在$\alpha$確定時,選擇損失函式最小的模型.

這裡可以看出,決策樹生成通過提高資訊增益(比)來對訓練資料更好擬合,而剪枝則優化損失函式來減小模型複雜度.

剪枝演算法:
FyiKFx.png

這個演算法可以用動態規劃來實現.


CART演算法

CART是在給定輸入隨機變數X條件下,輸出隨機變數Y的條件概率分佈的學習方法.CART假設決策樹是二叉樹,內部節點特徵的取值,左為是或右為否.這樣決策樹就等價於遞迴地二分每個特徵.它也包括了樹的生成和剪枝.


CART生成

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

迴歸樹的生成

設X,Y分別為輸入輸出變數,且Y為連續變數,給定訓練資料集$D={(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)}$,考慮如何生成迴歸樹.

唉,這裡實在是看不懂了,不太明白迴歸樹和分類樹的區別,感覺裡面關係好混亂,網上也搜了不少來看,但都是關係很混亂,後面那道例題的思路倒還蠻清楚的.這裡就暫時不往後寫了.等進度到這時,那時再去問問學長或老師,然後在來補.