1. 程式人生 > >決策樹-資訊增益,資訊增益率,Gini

決策樹-資訊增益,資訊增益率,Gini

話說今天《機器學習》上課被很深地打擊了,標名為“資料探勘”專業的我居然連個資訊增益的例子都沒能算正確。唉,自看書以來,這個地方就一直沒有去推算過,每每看到決策樹時看完Entropy就直接跳過後面增益計算了。因而,總想找個時間再回過來好好看一下,這不,被逼上了呢。神奇的墨菲定律呢:你擔心它發生的,它就一定會發生。

回正題了,這三個指標均是決策樹用來劃分屬性的時候用到的,其中資訊增益(Info Gain)用於ID3,Gini用於CART,資訊增益率(Info Gain Ratio)用於C4.5。提到前兩個指標的計算時,首先要講到的是關於熵(Entropy)的計算。

1、熵(Entropy)

理論上來說用於決策樹的屬性選擇函式,為方便計算,往往是定義為其屬性的不純性度量,那麼必須滿足如下三個條件:

  • 當結點很純時,其度量值應為0
  • 當不純性最大時(比如所有類都有同樣的可能),其度量值應最大
  • 度量應該服從多級特性,這樣決策樹才能分階段建立起來 
    measure([2,3,4])=measure([2,7])+frac79timesmeasure([3,4])  

而熵(Entropy)能夠滿足以上三點特性。熵(Entropy)是由“資訊理論之父”夏農提出的,更多的各種歷史、數學理論請檢視參考[1]。接下來,看看熵的計算公式如下:

entropy(p1,p2,,pn)=p1log2(p1)p2log2(p2)pnlog2(pn)

其中,( p_i )為比例值。其實,熵也可以用另外一種意思來解釋:

Given a probability distribution, the info required to predict an event is the distribution’s entropy. Entropy gives the information required in bits (this can involve fractions of bits!)

可以簡單的理解為“熵”描述了用來預測的資訊位數。接下來看個例子:

如下表所述的天氣資料,學習目標是預測Play or not play?

表1 天氣預報資料集例子

Outlook Temperature Humidity
Windy Play?
sunny hot high false no
sunny hot high true no
overcast hot high false yes
rain mild high false yes
rain cool normal false yes
rain cool normal true no
overcast cool normal true yes
sunny mild high false no
sunny cool normal false yes
rain mild normal false yes
sunny mild normal true yes
overcast mild high true yes
overcast hot normal false yes
rain mild high true no

共14個例項,9個正例(yes),5個負例(no)。

這樣當前資料的資訊量(原始狀態)用熵來計算就是:

info(play?)=info([9,5])=entropy(frac914,frac514)=frac914log2(frac914)frac514log2(frac514)=0.410+0.530=0.940

有了上面計算熵(資訊)的基礎,接下來看資訊增益了。

2、資訊增益(Info Gain)

資訊增益,按名稱來理解的話,就是前後資訊的差值,在決策樹分類問題中,即就是決策樹在進行屬性選擇劃分前和劃分後的資訊差值,即可以寫成:

gain()=infobeforeSplit()infoafterSplit()

如上面的例子,通過使用Outlook屬性來劃分成下圖:

image  
圖1 使用Outlook屬性劃分決策樹

在劃分後,可以看到資料被分成三份,則各分支的資訊計算如下:

info([2,3])=frac25log2(frac25)frac35log2(frac35)=0.971bits info([4,0])=frac44log2(frac44)frac04log2(frac04)=0bits ,此處雖然( log_2(0) )沒有定義,但( 0 times log_2(0) )仍然計算為0。 info([3,2])=frac35log2(frac35)frac25log2(frac25)=0.971bits

因此,劃分後的資訊總量應為:

info([2,3],[4,0],[3,2])=frac514times0.971+frac414times0+frac514times0.971=0.693bits

如果把上面的公式整理到一起的話,就是:

$$ info([2,3], [4,0], [3,2]) = frac{5}{14}times info([2,3]) + frac{4}{14}times info([4,0]) + frac{5}{14}times info([3,2])

= 0.347 + 0 + 0.347 = 0.694 bits $$

從上面可以看出,劃分後的資訊總量計算公式為:

info(S1,,Sn)=sumnifrac|Si||S|timesentropy(Si)

其中,n表示劃分後的分支數目,( |S| )表示劃分前的例項個數,( |S_i| )表示劃分後某個分支的例項個數。

最後,資訊增益

gain(outlook|play?)=infobeforeSplit()infoafterSplit()=info(play?)info([3,2],[4,0],[3,2])=0.9400.694=0.246bits

通過劃分其他屬性,可得到其他的樹如下:

image  
圖2 使用其他屬性劃分決策樹

同樣計算,

gain(Temperature|play?)=info([9,5])info([2,2],[4,2],[3,1])=0.940(frac414timesinfo([2,2])+frac614timesinfo([4,2])+frac414timesinfo([3,1]))=0.028bits gain(Humidity|play?)=0.152bits gain(Windy|play?)=0.048bits

這樣,演算法會選擇最大的資訊增益屬性來進行劃分,在此處為Outlook屬性。接下來在Outlook=sunny結點,按照同樣的判斷方法,選擇其他屬性進行劃分,

image 
圖3 繼續劃分決策樹

計算如下:

infobeforeSplit()=info([2,3])=0.971bits 2個正例,3個負例,計算其熵 gain(Temperature|Outlook

相關推薦

機器學習實戰決策(一)——資訊增益與劃分資料集

from math import log #計算給定的熵 def calcsahnnonent(dataset): numentries = len(dataset) #計算例項的總數 labelcounts ={} #

決策演算法——熵與資訊增益(Python3實現)

1、熵、條件熵與資訊增益 (1)熵(entropy) (2)條件熵(conditional entropy) (3)資訊增益(information gain) 2、資訊增益演算法實現流程 2、資料集以及每個特徵資訊增益的計算

[譯] 設計師的決策:當遇到豬隊友時你需要一個系統來控制每個人

原文地址:A Decision Tree for Designers 原文作者:Cap Watkins 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m… 譯者:zhmhhu 校對者:calpa, Wangalan30

離散型與連續型資料決策構建及列印實現 R語言ID3C4.5演算法

本人的第一篇文章,趁著我們的資料探勘課設的時間,把實現的決策樹程式碼,拿出來分享下。有很多漏洞和缺陷,還有很多駭客思想的成分,但是總之,能實現,看網上的程式碼,能用的其實也沒幾個。廢話不多說,直接看程式碼 特別鳴謝博主skyonefly的程式碼 附上鍊接:R

音頻中采樣位數采樣比特的名詞解釋(轉)

工程 性能 dvd 工作室 轉化 術語 意思 普通 時間間隔 采樣位數: 采樣位數可以理解為采集卡處理聲音的解析度。這個數值越大,解析度就越高,錄制和回放的聲音就越真實。我們首先要知道:電腦中的聲音文件是用數字0和1來表示的。所以在電腦上錄音的本質就是把模擬聲音信號轉換成

什麽是音頻視頻比特采樣講的很不錯

article details 次數 要素 清晰 lame 質量 位數 class 簡單來講,采樣率和比特率就像是坐標軸上的橫縱坐標。 橫坐標的采樣率表示了每秒鐘的采樣次數。 縱坐標的比特率表示了用數字量來量化模擬量的時候的精度。 采樣率類似於動態影像的幀數,比如電影

【機器學習筆記】:一文讓你徹底理解準確率精準召回真正假正ROC/AUC

作者:xiaoyu 微信公眾號:Python資料科學 非經作者允許,禁止任何商業轉載。 ROC/AUC作為機器學習的評估指標非常重要,也是面試中經常出現的問題(80%都會問到)。其實,理解它並不是非常難,但是好多朋友都遇到了一個相同的問題,那就是:每次看書的時候

NS中吞吐量丟包端到端延遲等計算[轉載]

原文地址:http://blog.csdn.net/lqzixi/article/details/6044641 ------------------------------------- How to measure the throughput, packet dr

決策-資訊增益資訊增益Gini

話說今天《機器學習》上課被很深地打擊了,標名為“資料探勘”專業的我居然連個資訊增益的例子都沒能算正確。唉,自看書以來,這個地方就一直沒有去推算過,每每看到決策樹時看完Entropy就直接跳過後面增益計算了。因而,總想找個時間再回過來好好看一下,這不,被逼上了呢。神奇的

決策--資訊增益資訊增益Geni指數的理解

部分理解: 關於決策樹生成 決策樹的生成過程就是 使用滿足劃分準則的特徵不斷的將資料集劃分為純度更高,不確定性更小的子集的過程。 對於當前資料集D的每一次的劃分,都希望根據某特徵劃分之後的各個子集的純度更高,不確定性更小。 而如何度量劃分資料集前後的資料集的純度以及不確定性呢?     答案:特徵選擇準

機器學習:資訊基尼係數條件熵條件基尼係數資訊增益資訊增益基尼增益決策程式碼實現(一)

文章目錄 初始化,涉及到使用的變數: 資訊熵 定義公式,經驗公式 程式碼: 基尼係數 定義公式,經驗公式 程式碼: 條件熵,條件基尼係數 條件熵定義公式,經驗公式

2.2決策資訊增益

資訊增益率 資訊增益率計算公式:Gain-ratio=Gain(A)/I G(A)即Gain(S, A)=E(S)–E(S, A) 如下圖所示:屬性A有五個取值,每個取值對應一個例項,則I

模型中分裂特徵選擇標準--資訊資訊增益資訊增益的計算

1.熵:集和的熵值 -sum(pi * log(pi , 2))2.資訊增益:集和的熵-按照特徵a劃分後子集的熵加權和(偏向類別數目多的屬性) 3.資訊增益率:資訊增益/屬性的熵(偏向類別數目少的屬性)4.基尼值:1-集和各類別值的概率平方和(隨機抽取兩個樣本其類別不一致的概

python實現西瓜書《機器學習》習題4.3資訊增益決策

首先這篇的格式可能會亂,markdown裝上以後,有時候是用csdn原來的編輯器,有時候就變成了markdown編輯器,蒙。 更蒙的是,大牛的程式碼太飄逸了,有點看不懂,慣例先來原地址:https://blog.csdn.net/Snoopy_Yuan/article/details/689

決策----熵、資訊增益(ID3)、C4.、多方式原始碼實現

談決策樹之前先做一些預備性知識: 1.什麼是資訊?如何衡量資訊的多少?怎麼衡量?      資訊:從廣義上講,是事物運動時發出的訊號所帶來的訊息,是事物存在方式和運動規律的一種表現形式。不同的事物具有不同的存在方式和運動規律,從而構成了各種事物的不同特徵。資訊普遍存在於自

決策中的熵、條件熵、資訊增益Gini指數計算示例

文章目錄資訊熵條件熵資訊增益公式計算計算示例 資訊 首先我們從什麼是資訊來著手分析: I(X=xi)=−log2p(xi)I_{(X = x_i)} = -log_2p(x_i)I(X=xi​)​=−log2​p(xi​) I(x)I(x)I(x)用來表示隨機變

通俗理解決策演算法中資訊增益

通俗理解決策樹演算法中的資訊增益 在決策樹演算法的學習過程中,資訊增益是特徵選擇的一個重要指標,它定義為一個特徵能夠為分類系統帶來多少資訊,帶來的資訊越多,說明該特徵越重要,相應的資訊增益也就越大。 1、概念 我們前面說了,資訊熵是代表隨機變數的複雜度(不確定度)通

決策資訊增益

決策樹和整合演算法都是樹模型 決策樹:從根節點一步步走到葉子節點,所有的資料都會落到葉子節點,既可以做分類也可以做迴歸。 一顆樹有三種節點組成,根節點,中間幾點,葉子節點。根節點是第一個選擇節點,也是最重要的一個選擇特徵。葉子節點是存放最終的結果。 決策樹的訓練和測試 訓練是建立一棵

【演算法】決策,資訊熵,資訊增益,Gini

決策樹演算法中,ID3使用資訊增益(選大的),C4.5使用資訊增益比(選大的),CART使用Gini(選小的)。決策樹是通過一系列規則對資料進行分類的過程。它提供一種在什麼條件下會得到什麼值的類似規則的方法。決策樹分為分類樹和迴歸樹兩種,分類樹對離散變數做決策樹,迴歸樹對連續