1. 程式人生 > >【機器學習模型詳細推導4】-決策樹

【機器學習模型詳細推導4】-決策樹

決策樹

一. 決策樹介紹

模型: 一個樹形的判斷結構,內部結點表示特徵或屬性,葉子節點表示一個分類
決策樹
如何學習一個決策樹:

  1. 特徵選擇
  2. 樹的生成
  3. 決策樹剪枝

實現演算法: ID3、C4.5、CART

二. ID3/C4.5

0)熵:描述資料集合不確定性的方法

H ( D ) = i
= 1
n
p i l o g
p i n 熵:H(D) = -\sum _{i=1}^n p_ilogp_i \\ 其中,n為類別數 1)特徵選擇:

對每一個特徵進行計算,優先選擇資訊增益/資訊增益率大的特徵。

  • 資訊增益(ID3演算法採用)
    特徵A對訓練資料集D的資訊增益:
    g ( D , A ) = H ( D ) H ( D A ) = k = 1 K C k D l o g 2 C k D i = 1 n D i D H ( D i ) = k = 1 K C k D l o g 2 C k D ( i = 1 n D i D k = 1 K D i k D i l o g 2 D i k D i ) \begin{aligned} g(D,A) &=H(D)-H(D|A)\\ &=-\sum_{k=1}^K \frac{|C_k|}{|D|}log_2{\frac{|C_k|}{|D|}}-\sum_{i=1}^n \frac{|D_i|}{|D|}H(D_i)\\ &=-\sum_{k=1}^K \frac{|C_k|}{|D|}log_2{\frac{|C_k|}{|D|}}-(-\sum_{i=1}^n \frac{|D_i|}{|D|}\sum_{k=1}^K \frac{|D_{ik}|}{|D_i|}log_2{\frac{|D_{ik}|}{|D_i|}}) \end{aligned} 其中,k代表標籤類別,n表示D被A劃分的類別。

  • 資訊增益率(C4.5採用)
    g R ( D , A ) = g ( D , A ) H A ( D ) g_R(D,A)=\frac{g(D,A)}{H_A(D)} 其中, H A ( D ) H_A(D) 表示特徵變數本身的複雜程度,代表資料集D被A特徵劃分的熵,而不是按照標籤類別劃分的熵

Q1:資訊增益率對比資訊增益的好處?
因為資訊增益偏向於選擇取值較多的特徵(例如編號、日期這種特徵取值很多但沒意義),容易過擬合。需要一個對特徵變數本身複雜度的懲罰項,所以就有了資訊增益率。

2)決策樹生成

【1】選擇資訊增益/資訊增益率最大的特徵作為數節點的判斷特徵
【2】由選定特徵的不同取值建立子結點
【3】子結點遞迴選擇特徵,構建決策樹
【4】直到所有特徵的 g ( D , A ) g(D,A) 都很小或沒有特徵

3)決策樹剪枝

在決策樹生成之後,利用樹整體的損失函式進行剪枝
樹T的損失函式:
C α ( T ) = C ( T ) + α T C_\alpha(T) = C(T) + \alpha|T| 其中, C ( T ) C(T) 表示預測誤差,用經驗熵來計算; T |T| 表示葉子節點數,即模型複雜度;引數 α \alpha 控制兩者之間的影響,剪枝的核心也就在 α \alpha 了, α \alpha 可以控制樹的大小。

葉子節點t上的經驗熵:
H t ( T ) = k N t k N t l o g N t k N t H_t(T)=-\sum_k\frac{N_{tk}}{N_t}log\frac{N_{tk}}{N_t}