機器學習樹模型——從決策樹開始

介紹

決策樹(Decision Tree)是一類基本的分類和迴歸方法,它的生成過程可以簡單的概括爲if-then——即滿足某個條件,進行下一步,直到能通過這樣的方式遞歸區分所有的樣本。同時決策樹又可以作爲集成模型的基模型。比如決策樹通過Bagging可以集成爲隨機森林(Random Forest),GBDT選擇CART作爲基分類器等等。
定義:決策樹模型是一種描述對實例進行分類的樹形結構,由結點和有向邊組成。
如下圖所示,圓形代表內部結點(internal node),表示一個特徵或者屬性;方形代表葉子結點(leaf node),表示一個類。
在這裏插入圖片描述

特徵選擇

決策樹可以看成是一個if-then規則的集合:由決策樹的根節點到葉節點的每一條路徑構成一個規則,路徑上的內部結點的特徵對應着規則的條件,而葉節點對應着規則的結論。並且每個規則的條件是互斥且完備的。如何選擇內部結點的特徵就成爲了核心問題,一個好的特徵選擇需要滿足以下準則:每次找到能使當前子集有更好的分類的特徵

信息增益——ID3

熵(entropy)表示隨機變量不確定性的度量,記爲:
H(X)=i=1npilogpiH(X) = -\sum_{i=1}^{n}p_{i}log{p_{i}}
其中,pip_{i}爲變量X取值的概率,n表示變量X總共可能的取值個數。顯然,熵之和變量取值的概率相關,與取值大小無關。 熵越大,變量取值的不確定性越大。
條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性,定義爲:
H(YX)=i=1npiH(YX=xi)H(Y|X) = \sum_{i=1}^{n}p_{i}H(Y|X=x_{i})
pi=P(X=xi)p_{i} = P(X=x_{i})表示X取值的概率。當熵和條件熵中的概率由極大似然估計得到,那麼所求的熵和條件熵分別稱之爲經驗熵(Empirical entropy)和經驗條件熵(Empirical conditional entropy)。 信息增益表示 得知X特徵的信息後使Y的不確定性減少的程度,記爲:
g(D,A)=H(D)H(DA)g(D,A) = H(D) - H(D|A)
計算步驟如下:
第一步:計算經驗熵H(D):
H(D)=k=1KCkDlog2CkDH(D) = -\sum_{k=1}^{K}\frac{|C_{k}|}{|D|}log_{2}{\frac{|C_{k}|}{|D|}}
其中K表示類別數量,D表示的是訓練集,CkC_{k}表示的類別爲k的樣本集合。
第二步:計算經驗條件熵H(D|A):
H(DA)=i=1nDiDk=1KDikDilog2DikDiH(D|A) = -\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}\sum_{k=1}^{K}\frac{|D_{ik}|}{|D_{i}|}log_{2}{\frac{|D_{ik}|}{|D_{i}|}}
其中nn表示特徵A的取值個數,DiD_{i}表示樣本的屬性A取值i的集合,DikD_{ik}表示子集DiD_{i}中屬於類別CkC_{k}的集合。
第三步:計算信息增益:
g(D,A)=H(D)H(DA)g(D,A) = H(D) - H(D|A)
然後比較那個屬性的信息增益最大就選取該特徵作爲內部結點。
ID3算法就是選擇信息增益作爲特徵選擇的決策樹分類算法,遞歸地構建決策樹。具體如下:首先從根結點開始,對結點計算所有可能的特徵的信息增益,選擇信息增益最大的特徵作爲結點的特徵,由該特徵的不同取值建立子節點;然後對子結點遞歸地使用以上方法構建決策樹,直到最後所有的特徵的信息增益都很小(小於閾值)或沒有特徵選擇爲止。

信息增益比——C4.5

C4.5和ID3算法只在特徵選擇不相同,它將信息增益換成了信息增益比。信息增益比的計算公式如下:
gR(D,A)=g(D,A)H(D)g_{R}(D,A) = \frac{g(D,A)}{H(D)}

Gini指數——CART

分類迴歸樹也是決策樹的一種,可用於分類和迴歸(這裏主要考慮分類樹)。和ID3,C4.5不同,CART生成是二叉樹,左邊是判斷條件爲“是”的分支,右邊去判斷條件爲“否”的分支。而且,CART不光包含樹的生成,也包含樹的剪枝,而且特徵選擇的方法也不一樣,下面一一詳細介紹。首先是Gini指數,計算如下:
Gini(D)=k=1Kpkkkpk=1k=1Kpk2Gini(D) = \sum_{k=1}^{K}p_{k}\sum_{k\neq k^{\prime}}p_{k^{\prime}}= 1-\sum_{k=1}^{K}p_{k}^{2}
如果樣本集合根據特徵A是否取某一值aa被分割成兩個集合D1D_{1}D2D_{2}。因此在特徵A的條件下,集合D的基尼指數定義爲:
Gini(D,A)=D1DGini(D1)+D2DGini(D2)Gini(D,A) = \frac{|D_{1}|}{|D|}Gini(D_{1})+ \frac{|D_{2}|}{|D|}Gini(D_{2})
我們計算了所有的Gini(D,A)Gini(D,A)之後,取Gini指數最小值的條件aa作爲特徵。Gini指數和熵的含義相似,都表示樣本集合D的不確定性。有了特徵選擇,那麼就可以按照ID3和C4.5的方法生成決策樹。
生成了決策樹之後,還需要對其進行剪枝(Pruning)。說到剪枝,決策樹存在一個嚴重的問題,那就是過擬合。對訓練數據擬合得太好了,可能就會導致泛化性能不夠好,因此需要去掉一些分支來降低過擬合的風險。CART用到的剪枝策略是一種後剪枝,對於生成的樹T0T_{0}先減掉一個子樹生成T1T_{1},再在T1T_{1}上減掉一個子樹,依次類推,最後得到一個只剩根節點的子樹。然後再用這得到的n+1棵子樹預測獨立的驗證數據集,誰的誤差最小就選誰。那麼問題來了,每次應該選擇哪顆子樹剪枝呢?,按照以下公式來求解:
g(t)=C(t)C(Tt)Tt1g(t) = \frac{C(t)-C(T_{t})}{|T_{t}|-1}
其中C(t)C(t)爲對訓練數據的預測誤差(Gini指數),TtT_{t}表示以t爲根結點的樹。上式表示的是剪枝後整體損失函數減少的程度,我們希望剪掉該子樹,會使整體損失函數減小,因此我們調整的是α\alpha的值,至此我們認爲找到了子節點t,也就是完成了剪枝得到子樹T1T_{1}。爲了得到T0T_{0}的所有子序列,直接遞歸下去,直到根節點即可。在這一過程中,不斷地增加α\alpha的值,產生新的區間。之後就是用測試集去驗證哪個子樹的準確率最高,哪顆數就獲勝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章