信息增益、信息增益比、基尼指數的比較


ID3、C4.5和CART三種經典的決策樹模型分別使用了信息增益、信息增益比和基尼指數作為選擇最優的划分屬性的准則來構建決策樹。以分類樹來說,構建決策樹的過程就是從根節點(整個數據集)向下進行節點分裂(划分數據子集)的過程,每次划分需要讓分裂后的每個子集內部盡可能包含同一類樣本。信息增益和信息增益比都是和香農信息熵有關的衡量信息不確定度的量,因此下面首先介紹一下香農信息熵。

香農信息熵

說到信息熵和香農就想起了當年被《信息論》支配的恐懼,但是香農真的很帥哈哈!言歸正傳,信息熵是香農從熱力學的“熵”借鑒過來用來衡量信息不確定度的一個物理量。決策樹中將信息熵拿來衡量集合中樣本混亂程度,西瓜書中用的“純度”一詞,其實也就是集合中樣本類別數越少,樣本越屬於同一類別,集合的純度越高,混亂程度(信息熵)越低。
對於集合 \(D\),包含的類別數為 \(K\),則集合的信息熵這樣計算:

\[Ent(D)=-\sum_{k=1}^{K}p_{k}log_2p_k \tag{1} \]

其中 \(|C_k|\) 表示 \(D\)中第 \(k\) 類樣本的數量,\(p_k = \frac{|C_k|}{|D|}\) 表示集合 \(D\)中第 \(k\) 類樣本的比例。\(Ent(D)\) 越小則集合 \(D\) 的純度越高, 注意到\(Ent(D)\)總是大於等於0的。

信息增益

ID3使用信息增益來選擇最優划分屬性,也就是選擇某個屬性,使得通過此屬性對數據集進行划分后,信息增益最大。信息增益定義如下

\[Gain(D, a)=Ent(D)-\sum_{v=1}^{V}\frac{\left|D^v\right|}{|D|}Ent(D^v) \tag{2} \]

式中 \(a\) 表示用來划分數據集的屬性,有 \(V\) 個不同的離散值(注意:這里包括后面信息增益率和基尼指數只討論離散特征的情況,連續特征最后面會講到)。上式表達的物理意義就是:對於屬性 \(a\),按照不同的取值進行划分,將數據集 \(D\) 分成 \(V\) 個不同的子集,用數據集 \(D\) 的信息熵減去划分后所有子集信息熵的加權和(權重為每個子集樣本數占總集合的比例)得到的差值。ID3決策樹想要找到使得式(2)信息增益最大的屬性 \(a\) 對數據集進行划分。
怎么理解呢?上面提到,信息熵用來衡量信息的純度,我們的目的是讓划分后每個子集的純度盡可能大(也就是讓式(2)中減數項盡量小),由於集合 \(D\) 的純度是確定的,那么讓式(2)中減數項盡量小也就是讓 \(Gain(D, a)\) 盡量大。
這里我其實一直有個疑問——既然集合 \(D\) 的純度是確定的,划分的時候只需要讓 \(\sum_{v=1}^{V}\frac{\left|D^v\right|}{|D|}Ent(D^v)\)這一項盡量小就可以了,為什么要多此一舉計算一下信息增益?可能“增益”這個詞更能表達我們做某個決策給我們帶來的收益?(胡亂猜想)
缺點:通過信息增益來選擇特征會偏好取值較多的特征,一個極端情況的例子就是如果對於某個特征所有樣本在此特征上的取值都不相同,這樣通過這個特征計算得到的信息增益式最大的,可以計算一下 \(Ent(D^v)\) 是等於0的。

信息增益率

C4.5決策樹每次分裂的時候選擇信息增益率最大的特征進行划分。信息增益率提出就是為了解決上面所說的缺點,定義如下:

\[Gain\_ratio(D, a)=\frac{Gain(D, a)}{H(a)} \tag{3} \]

其中

\[{H(a)}=-\sum_{v=1}^{V}\frac{\left|D^v\right|}{|D|}\log_2 \frac{\left|D^v\right|}{|D|} \tag{4} \]

\({H(a)}\) 稱為數據集 \(D\) 關於 \(a\) 的取值熵或固有值。屬性 \(a\) 的取值數目越多 \({H(a)}\) 越大,因此將原有的信息增益除以 \({H(a)}\) 相當於對其進行了懲罰,避免了信息增益偏好取值較多特征的問題。
缺點:信息增益率朝着信息增益相反的方向發展,偏好於取值較少的特征。
關於C4.5使用信息增益比來選擇特征知乎有個討論貼,有大佬數學證明了一下,還有大佬貼出來原作者的解釋了,鏈接放在文末了有興趣的可以去圍觀一波。

基尼指數(Gini index)

基尼指數的數學計算

基尼制數是衡量數據集純度的另一種方式,定義如下:

\[Gini(D)=\sum_{k=1}^{K} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}}=1-\sum_{k=1}^{K} p_{k}^{2} \tag{5} \]

其中 \(p_k=\frac{|C_k|}{|D|}\) 表示數據集中 \(k\) 類樣本的比例,因此

\[Gini(D)=1-\sum_{k=1}^{K} (\frac{|C_k|}{|D|})^2 \tag{6} \]

基尼指數的物理意義就是從數據集 \(D\) 中隨機抽取兩個樣本,他們類別不一樣的概率,因此基尼指數越小表明數據集 \(D\) 的中同一類樣本的數量越多, 其純度越高。這樣,將數據集按屬性 \(a\)進行划分后的基尼指數為

\[Gini(D,a)=\sum_{v=1}^{V} \frac{|D^v|}{|D|}Gini(D^v) \tag{7} \]

CART樹的划分方式

不同於ID3和C4.5,CART樹是一種二叉樹,也就是說每次分裂節點的時候,僅將當前節點的數據集合分成兩部分,分別進入左右子樹。那么怎么划分呢?這里先說離散特征。
對於離散特征 \(a\),有 \(V\) 個不同的取值,當以取值 \(v\) 划分時,基尼指數這樣計算:

\[Gini(D,a,v)=\frac{|D^v|}{|D|}Gini(D^v)+ \frac{|\widetilde{D}^v|}{|D|}Gini(\widetilde{D}^v)\tag{8} \]

其中 \(\widetilde{D}^v\) 表示數據集 \(D\) 中特征 \(a\) 取值不為 \(v\) 的樣本集合。這樣,遍歷所有的特征和特征的取值,選擇使得 \(Gini(D,a,v)\) 最小的 \(a\)\(v\) 進行划分,將數據集合划分為在特征 \(a\) 上等於 \(v\) 和不等於 \(v\) 的兩部分,進入左右子樹。

三種划分方式的差異

適用情況

上面分別對三種划分准則進行了梳理,其中信息增益和信息增益率通常用於離散型的特征划分,ID3和C4.5通常情況下都是多叉樹,也就是根據離散特征的取值會將數據分到多個子樹中;而CART樹為二叉樹,使用基尼指數作為划分准則,對於離散型特征和連續行特征都能很好的處理。

連續特征的處理

《百面機器學習》一書中最后總結部分說ID3只能處理離散型變量,而4.5和CART都可以處理連續型變量。我個人不太認同這個說法,CART可以處理連續變量是毋庸置疑的,只需要對所有特征取值進行排序,然后取每兩個相鄰值的平均值作為切分點進行切分計算當前划分方式下的基尼指數,最后取基尼指數最小的特征和切分點進行划分即可,和上面的離散特征類似。那么,采用信息增益和信息增益率的時候也可以這樣對連續特征進行划分得到最優分割特征和最優划分點。

參考資料

西瓜書
《百面機器學習》
c4.5為什么使用信息增益比來選擇特征?


免責聲明!

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



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