1. 程式人生 > 其它 >【統計學習方法】 決策樹

【統計學習方法】 決策樹

本文先介紹決策樹的基本概念,然後通過ID3和C4.5介紹特徵選擇、決策樹的生成和決策樹的修剪,最後介紹CART演算法

決策樹模型和學習

決策樹模型

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

決策樹學習

決策樹學習的損失函式通常是正則化的極大似然函式,決策樹學習的策略是以損失函式為目標函式的最小化。

選擇最優決策樹是NP完全問題,現實中通常採用啟發式方法,近似求解問題,得到次最優(sub-optimal)的決策樹。

決策樹學習的演算法通常是一個遞迴地選擇最優特徵,並根據特徵對訓練資料進行分割。這一過程對應特徵空間的劃分和決策樹的構建。

為了避免過擬合,使其具有更好的泛化能力,可以對已生成的決策樹進行剪枝。

決策樹與條件概率分佈

決策樹生成將特徵空間劃分成互不相交的單元,每個單元定義一個類的概率分佈,構成一個條件概率分佈。

決策樹的一條路徑對應於劃分中的一個單元,決策樹表示的條件概率分佈由各個單元給定條件下的類的條件概率分佈組成。

決策樹分類時將節點的例項強行分到條件概率最大的類中去。

特徵選擇

選擇對訓練資料具有分類能力的特徵,提高決策樹學習的效率。

資訊增益

隨機變數X的熵(entropy):

熵只依賴於X的分佈,與X取值無關,故也可記為:

熵越大,隨機變數的不確定性越大。可以驗證:

隨機變數X給定條件下隨機變數Y的條件熵(conditional entropy)H(Y|X),定義為X給定下Y的條件概率分佈的熵對X的期望:

當熵與條件熵由資料統計(特別是極大似然估計)得到時,分別稱為經驗熵(empirical entropy)和經驗條件熵(empirical conditional entropy)。

資訊增益:

特徵A對訓練資料集D的資訊增益g(D,A),定義為集合D的經驗熵H(D)與特徵A在給定條件下D的經驗條件熵H(D|A)之差:

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

選擇特徵方法:對訓練集D,計算每個特徵的資訊增益,比價大小,選擇資訊增益最大的特徵。

設訓練資料集為D,|D|表示樣本容量。設有K個類為屬於類的樣本個數,。設特徵A有n個不同的取值,根據特徵A的取值將D劃分為n個子集,|Di|為Di的樣本個數,。記子集Di中屬於類Ck的樣本集合為,即, |Dik|是Dik的樣本個數。

資訊增益演算法:

輸入:訓練資料集和特徵A

輸出:特徵A對訓練資料集D的資訊增益g(D,A)

(1)計算資料集D的經驗熵H(D)

(2)計算特徵A對資料集D的經驗條件熵H(D|A)

(3)計算資訊增益

資訊增益比

採用資訊增益方法,存在偏向於選擇取值較多的特徵的問題。 使用資訊增益比進行校正。

資訊增益比:

特徵A對訓練資料集D的資訊增益比定義為其資訊增益對訓練資料關於特徵A的值的熵之比,即

其中,,n是特徵A取值個數。

決策樹的生成

ID3演算法

輸入:訓練資料集D,特徵集A閾值e

輸出:決策樹T

(1)若D中所有例項屬於同一類Ck,則T為單節點樹,並將類Ck作為該節點的類標記,返回T;

(2)若A = ∅,則T為單節點樹,並將D中例項最大的類Ck作為該節點的類標記,返回T;

(3)否則,計算A中各特徵對D的資訊增益,選擇特徵資訊增益最大的特徵Ag;

(4)如果Ag的資訊增益小於閾值e,則置T為單節點樹,並將D中例項數最大的類Ck作為該節點的類標記,返回T;

(5)否則,對Ag的每一個可能值ai,依Ag=ai將D分割為若干非空子集Di,將Di中例項數最大的類作為標記,構建子節點,由節點及其子節點構成數T,返回T;

(6)對第i個節點,以Di為訓練集,{A - Ag}為特徵集,遞迴電泳(1)~(5),得到子樹Ti,返回Ti。

C4.5演算法

輸入:訓練資料集D,特徵集A閾值e

輸出:決策樹T

(1)若D中所有例項屬於同一類Ck,則T為單節點樹,並將類Ck作為該節點的類標記,返回T;

(2)若A = ∅,則T為單節點樹,並將D中例項最大的類Ck作為該節點的類標記,返回T;

(3)否則,計算A中各特徵對D的資訊增益比,選擇特徵資訊增益最大的特徵Ag;

(4)如果Ag的資訊增益比小於閾值e,則置T為單節點樹,並將D中例項數最大的類Ck作為該節點的類標記,返回T;

(5)否則,對Ag的每一個可能值ai,依Ag=ai將D分割為若干非空子集Di,將Di中例項數最大的類作為標記,構建子節點,由節點及其子節點構成數T,返回T;

(6)對第i個節點,以Di為訓練集,{A - Ag}為特徵集,遞迴電泳(1)~(5),得到子樹Ti,返回Ti。

決策樹的剪枝

決策樹的剪枝往往通過極小化決策樹整體損失函式或代價函式來實現。決策樹生成學習區域性的模型,決策樹剪枝學習整體的模型。

設樹T的葉節點個數為|T|,t是樹T的葉節點,該葉節點有Nt個樣本點,其中k類的樣本點有Ntk個,k = 1,2,…,K,Ht(T)為葉節點t上的經驗熵,\alpha>=0為引數,則損失函式定義為:

其中經驗熵為:

在損失函式中,右端第一項可以記為:

有:

C(T)表示模型與訓練資料的擬合程度,|T|表示模型複雜度,引數a >= 0控制兩者之間的影響。a較大促使選擇較簡單的模型,較小選擇較複雜的模型。

以上定義的損失函式極小化等價於正則化的極大似然估計,利用損失函式最小原則進行剪枝就是用正則化的極大似然估計進行模型選擇。

決策樹剪枝演算法:

輸入:生成演算法產生的整個樹T,引數a;

輸出:修剪後的子樹Ta。

(1)計算每個節點的經驗熵

(2)遞迴地從樹的葉節點向上回縮

設一組葉節點回縮到父節點之前與之後的整體樹分別為和,其對應的損失函式值分別為和,如果:

則進行剪枝,即將父節點變為新的葉節點。

(3)返回(2),直到不能繼續為止,得到損失函式最小的子樹Ta。

注:剪枝過程只需在區域性考慮兩個子樹的差,故可用動態規劃實現。