決策樹之特征選擇算法(ID3、C4.5、CART)


 

 

 

1、決策樹概述

 

決策樹(decision tree)是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示基於特征對實例進行分類的過程。它可以認為是if-then規則的集合(互斥並且完備),也可以認為是定義在特征空間與類空間上的條件概率分布。其主要優點是模型具有可讀性,分類速度快。學習時,利用訓練數據,根據損失函數最小化的原則建立決策樹模型。預測時,對新的數據利用決策樹模型進行分類。決策樹學習通常包括三個步驟:

 

1.特征選擇:從訓練數據的特征中選擇一個特征作為當前節點的分裂標准(特征選擇的標准不同產生了不同的特征決策樹算法)。

2.決策樹生成:根據所選特征評估標准,從上至下遞歸地生成子節點,直到數據集不可分則停止決策樹停止聲場。

3.決策樹剪枝:決策樹容易過擬合,需要剪枝來縮小樹的結構和規模(包括預剪枝和后剪枝)。

 

今天主要講解下如何選擇最優划分屬性,而在划分的過程中,我們希望決策樹的分支結點所包含的樣本盡可能屬於同一類別,即結點的“純度”越來越高。測試數據如圖:

 

image

 

2、ID3算法(信息增益)

 

信息熵(information entropy):度量樣本集合純度最常用的一種指標,表示樣本數據的混亂程度。假定當前樣本集合D中第k類樣本所占的比例為$p_k(1,2....|y|)$,則D的信息熵定義為:

 
$$Ent(D)=-\sum_{k=1}^{|y|}{p_k{\log_2{p_k}}}$$
 

$Ent(D)$的值越小,純度越高,數據越混亂。計算信息熵時約定,若$p=0$,則$p\log_2p=0$。$Ent(D)$為0,最大值為$\log_2{|y|}$。

 

以上可看,樣本集合D中共15條數據,樣本類別數k為2。同意貸款的樣本數為9個,不同意貸款的樣本數為6個。則樣本集合D的信息熵詳細計算過程為:

 
$$Ent(D)=-\frac{9}{15} * \log_2 {\frac{9}{15}} - \frac{6}{15} * \log_2 {\frac{6}{15}} = 0.971$$
 

假定離散屬性$a$有$V$個可能取值$\{a1,a2,…,aV\}$,若使用$a$來對樣本集$D$划分,則會產生$V$個分支結點,其中第$v$個分支結點包含了$D$中所有在屬性$a$上取值為$a^v$,記作${D^v}$。 再考慮到不同的分支結點所包含的樣本數不同,給分支結點賦予權重$\frac{D^v}{D}$,,即樣本數越多的分支結點的影響越大,於是可計算出用屬性$a$對樣本集$D$進行划分所獲得的“信息增益”(information gain):

 
$$Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)$$
 

一般而言,信息增益越大,則意味着使用屬性a來進行划分所獲得的的“純度提升”越大。因此,我們可以根據信息增益來選擇結點,一般選擇信息增益最大的屬性作為划分結點。則

 
$$arg\,\max_{a\in{A}}Gain(D,a)$$
 

則屬性年齡$(A)$對樣本集合$D$進行划分獲得信息增益的詳細計算過程為:

 

類別為青年$(A_1)$的信息熵:

 
$$Ent(A_1)=-\frac{2}{5} * \log_2 {\frac{2}{5}} - \frac{3}{5} * \log_2 {\frac{3}{5}} = 0.971$$
 

類別為中年$(A_2)$的信息熵:

 
$$Ent(A_2)=-\frac{3}{5} * \log_2 {\frac{3}{5}} - \frac{2}{5} * \log_2 {\frac{2}{5}} = 0.971$$
 

類別為老年$(A_3)$的信息熵:

 
$$Ent(A_3)=-\frac{4}{5} * \log_2 {\frac{4}{5}} - \frac{1}{5} * \log_2 {\frac{1}{5}} = 0.722$$
 

則屬性年齡$(A)$的信息增益:

 
$$Gain(D,A)=Ent(D)-\frac{5}{15}*Ent(A_1)-\frac{5}{15}*Ent(A_2)-\frac{5}{15}*Ent(A_3)=0.083$$
 

同理,屬性為是否工作$(B)$和是否有房$(C)$的信息增益分別是:

 
$$Gain(D,B)=Ent(D)-\frac{5}{15}*Ent(B_1)-\frac{10}{15}*Ent(B_2)=0.324$$
 
$$Gain(D,C)=Ent(D)-\frac{6}{15}*Ent(C_1)-\frac{9}{15}*Ent(C_2)=0.420$$
 

則信息增益最大的屬性為是否有房,將作為第一個划分節點。划分后的子節點再根據相同算法以此類推,遞歸計算,各子節點之間互不干擾。

 

3、C4.5算法(信息增益率)

 

為什么引入信息增益率?

這是為了解決信息增益的使用過程中,對屬性值種類較多的屬性比較偏好,這個問題,所以引入信息增益率。比如當誤把編號當成屬性時,此時條件熵為0,信息增益達到最大,因此將選擇編號作為分類的一個屬性,這顯然是不合理的。

 

實際上,由於信息增益准則對可取值數目較多的屬性有所偏好,為減少這種偏好可能帶來的不利影響,著名的C4.5決策樹算法不直接使用信息增益,而是使用“增益率”來選擇最優划分屬性。增益率定義為:

 
$$Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}$$
 

其中:

 
$$IV(a)=-\sum_{v=1}^V\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|}$$
 

稱為屬性$a$的“固有值”(intrinsic value).

 

須注意的是,由於增益率准則對可取值數目較少的屬性有所偏好,因此C4.5算法采用先從候選划分屬性中找出信息增益高於平均水平的屬性,再從中選擇增益率最高的方法來選擇最優划分屬性

 

則樣本集合中各個屬性的固有值為:

 
$$IV(A)=-\frac{5}{15}\log_2 \frac{5}{15}-\frac{5}{15}\log_2 \frac{5}{15}-\frac{5}{15}\log_2 \frac{5}{15}=1.585$$
 
$$IV(B)=-\frac{5}{15}\log_2 \frac{5}{15}-\frac{10}{15}\log_2 \frac{10}{15}=0.918$$
 
$$IV(C)=-\frac{6}{15}\log_2 \frac{6}{15}-\frac{9}{15}\log_2 \frac{9}{15}=0.971$$
 

樣本集合對各個屬性的信息增益率分別是:

 
$$Gain\_ratio(D,A)=\frac{Gain(D,A)}{IV(A)}=\frac{0.083}{1.585}=0.052$$
 
$$Gain\_ratio(D,B)=\frac{Gain(D,B)}{IV(B)}=\frac{0.324}{0.918}=0.353$$
 
$$Gain\_ratio(D,C)=\frac{Gain(D,C)}{IV(C)}=\frac{0.420}{0.971}=0.433$$
 

則信息增益率最大的屬性為是否有房,將作為第一個划分節點。划分后的子節點再根據相同算法以此類推,遞歸計算,各子節點之間互不干擾。

 

4、CART算法(基尼系數)

 

$CART(Classification and Regression)$決策樹使用基尼指數$(Gini Index)$來選擇划分屬性。數據集$D$的純度可用基尼值來度量

 
$$Gini(D)=\sum_{k=1}^y\sum_{k^\prime\neq k}{p_k}{p_{k^\prime}}=1-\sum_{k=1}^{|y|}{p_k}^2$$
 

直觀來說,$Gini(D)$反映了從數據集D中隨機抽取兩個樣本,其類別標記不一致的概率。因此,$Gini(D)$越小,則數據集$D$的純度越高。

 

屬性$a$的基尼指數定義為:

 
$$Gini\_index(D,a)=\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D_v)$$
 

於是,我們在划分屬性集合A中,選擇那個使得划分后基尼指數最小的屬性作為最優划分屬性,即:

 
$$arg\,\min_{a\in{A}}Gini\_index(D,a)$$
 

信息熵代表了混亂程度。信息熵越小,信息增益越大,純度越大。基尼值表示了類別不一致的概率,基尼值越小,純度越大。

 

則基尼系數計算的詳細流程為:

 
$$Gini\_index(D,A)=\frac{5}{15}*[1-(\frac{2}{5})^2-(\frac{3}{5})^2]+\frac{5}{15}*[1-(\frac{3}{5})^2-(\frac{2}{5})^2]+\frac{5}{15}*[1-(\frac{4}{5})^2-(\frac{1}{5})^2]=\frac{2}{5}$$
 
$$Gini\_index(D,B)=\frac{5}{15}*[1-(\frac{5}{5})^2-(\frac{0}{5})^2]+\frac{10}{15}*[1-(\frac{4}{10})^2-(\frac{6}{10})^2]=\frac{8}{25}$$
 
$$Gini\_index(D,C)=\frac{6}{15}*[1-(\frac{6}{6})^2-(\frac{0}{6})^2]+\frac{9}{15}*[1-(\frac{3}{9})^2-(\frac{6}{9})^2]=\frac{4}{15}$$
 

則屬性“是否有房”的基尼系數最小,作為第一部分划分的節點屬性。

 

5、總結

 

本文主要講述了決策樹中特征選擇的三個原則:信息增益、信息增益率和基尼系數。當然,決策樹還有生成、裁剪、回歸的知識,后續的博文會進行講述。博文中若有錯誤和不足之處,歡迎指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM