夏農熵及決策樹建立方法

2021-10-10 17:44:31 字數 3930 閱讀 4977

資訊熵決策樹

推薦閱讀:通訊的數學理論

在網路中進行資訊傳遞,所有資訊都是01010的二進位制編碼格式,例如這樣一封信,信中只有狗,貓,魚,鳥四個詞

信的所有內容就是這4個詞的組合。

第一封信寫著"狗貓魚鳥",第二封信寫"魚貓鳥狗"。

信件需要二進位制編碼,在網際網路傳遞。兩個二進位制位就可以表示四個詞彙。

狗 00

貓 01

魚 10

鳥 11

所以,第一封信"狗貓魚鳥"的編碼是00011011,第二封信"魚貓鳥狗"的編碼是10011100。

考慮這樣一封信

狗狗狗狗貓貓魚鳥
上面這封信,用前一節的方法進行編碼。

0000000001011011
一共需要16個二進位制。網際網路的流量費很貴,有沒有可能找到一種更短編碼方式?

很容易想到,"狗"的出現次數最多,給它分配更短的編碼,就能減少總的長度。請看下面的編碼方式。

狗 0

貓 10

魚 110

鳥 111

注意不管如何編碼,都需要保證任意編碼不是其他編碼的字首(哈夫曼編碼)。

使用新的編碼方式,"狗狗狗狗貓貓魚鳥"編碼如下。

00001010110111
這時只需要14個二進位制位,相當於把原來的編碼壓縮了12.5%。

根據新的編碼,每個詞只需要1.75個二進位制位(14 / 8)。可以證明,這是最短的編碼方式,不可能找到更短的編碼。

概率越大,所需要的二進位制位越少。

狗的概率是50%,表示每兩個詞彙裡面,就有乙個是狗,因此單獨分配給它1個二進位制位。

貓的概率是25%,分配給它兩個二進位制位。

魚和鳥的概率是12.5%,分配給它們三個二進位制位。

夏農給出了乙個數學公式。

一般來說,在均勻分布的情況下,假定乙個字元(或字串)在檔案**現的概率是p,那麼在這個位置上最多可能出現1/p種情況。需要log2(1/p)個二進位制位表示替代符號。

這個結論可以推廣到一般情況。

用l表示所需要的二進位制位,p(x)表示發生的概率,它們的關係如下。

通過上面的公式,可以計算出某種概率的結果所需要的二進位制位。舉例來說,"魚"的概率是0.125,它的倒數為8, 以 2 為底的對數就是3,表示需要3個二進位制位。

知道了每種概率對應的編碼長度,就可以計算出一種概率分布的平均編碼長度(期望值)。

上面公式的h,就是該種概率分布的平均編碼長度。理論上,這也是最優編碼長度,不可能獲得比它更短的編碼了。

接著上面的例子,看看這個公式怎麼用。小張養狗之前,"狗貓魚鳥"是均勻分布,每個詞平均需要2個二進位制位。

h = 0.25 x 2 + 0.25 x 2 + 0.25 x 2 + 0.25 x 2

= 2

養狗之後,"狗貓魚鳥"不是均勻分布,每個詞平均需要1.75個二進位制位。

h = 0.5 x 1 + 0.25 x 2 + 0.125 x 3 + 0.125 x 3

= 1.75

既然每個詞是 1.75 個二進位制位,"狗狗狗狗貓貓魚鳥"這8個詞的句子,總共需要14個二進位制位(8 x 1.75)。

很顯然,不均勻分布時,某個詞出現的概率越高,編碼長度就會越短。

從資訊的角度看,如果資訊內容存在大量冗餘,重複內容越多,可以壓縮的餘地就越大。日常生活的經驗也是如此,一篇文章翻來覆去都是講同樣的內容,摘要就會很短。反倒是,每句話意思都不一樣的文章,很難提煉出摘要。

也是如此,單調的有好的壓縮效果,細節豐富的很難壓縮。

定義上文中的l為資訊量,h為資訊熵

即對於乙個集合d(在上文中這個集合是一整封信),共有n種可能的值x1 ~ xn,每種取值出現的概率為p1 ~ pn ,則資訊熵為

h (d

)=−∑

ni=1

pxil

og2p

xih(d) = - \sum_^ p_} log_p_}

h(d)=−

n∑i=

1​px

i​​l

og2​

pxi​

​拋硬幣的資訊熵如圖:

從該函式影象可以看出,p=0.5 時,熵最大,此時確定性最低;而p=1熵最小,此時確定性最高。

資訊熵滿足這樣的性質:

【性質1】h關於pi是連續的。

【性質2】如果事件發生的概率相等,即pi = 1/n。那麼事件越多不確定越大,即熵越大。因此, h是關於n的遞增函式。

【性質3】如果事件發生可被分解為連續兩個事件的發生,則原來事件的 h 應當是這兩個事件的 h 的加權和。

以瓜好壞作為標籤,在這個瓜的集合中,好瓜佔8/17,壞瓜佔9/17,該集合的資訊熵為:

決策樹就是不斷選擇特徵值劃分集合的過程,結構如下

根節點我們擁有整個訓練集,每層選擇乙個特徵作為劃分特徵,大集合劃分為乙個個小集合,直到集合中只有一種值為止(只有好瓜/只有壞瓜)。

那麼根據什麼選擇分割特徵最優呢,貪心地想,我們當然希望劃分之後子樹的「純度」越高越好,即更多地屬於同一類。

依據每層根據什麼度量選擇哪個特徵值,分為id3演算法:資訊增益,c4.5演算法:資訊增益率,cart演算法:基尼係數

資訊增益通俗理解就是,對於特徵x,在該維度資料有n種取值xi~xn,我們按照特徵x的取值對於大集合進行劃分成n個小集合之後,

資訊增益 = 大集合的資訊熵 - 小集合的資訊熵之和

資訊增益反應了當前特徵對於不確定性減小的貢獻,即資訊增益越大,熵減小越大,不確定性減小越大,純度越高,即更多的屬於同一類。

對於上節的例子,對於「色澤」,計算他的資訊增益的過程如下

d1(色澤=青綠) = ,正例 3/6,反例 3/6

d2(色澤=烏黑) = ,正例 4/6,反例 2/6

d3(色澤=淺白) = ,正例 1/5,反例 4/5

那麼我們可以知道屬性色澤的資訊增益是:

同理,我們可以求出其它屬性的資訊增益,分別如下:

於是我們找到了資訊增益最大的屬性紋理,它的gain(d,紋理) = 0.381最大。

於是我們選擇的劃分屬性為「紋理」

如下:於是,我們可以得到了三個子結點,對於這三個子節點,我們可以遞迴的使用剛剛找資訊增益最大的方法進行選擇特徵屬性,我們最終的決策樹如下:

還沒寫還有個剪枝也沒寫

決策樹 夏農熵

熵 entropy 是表示隨機變數不確定性的度量.所以熵越小越好 之所以po出來是因為裡面好多小函式自己找了好久 r語言用的人太少了 好痛苦 computing shannonent calshannonent function dataset t null shannonent 0 for i i...

機器學習 決策樹( 夏農熵)

夏農熵定義為資訊的期望值。在資訊理論與概率統計中,熵是表示隨機變數不確定性的度量。假定當前樣本集合d中一共有n類樣本,第i類樣本為xi 那麼xi的資訊定義為 舉例 若小明和小華下棋,兩人勢均力敵,則資訊熵h 1 2 log2 1 2 1 2 log2 1 2 1bit。夏農熵的計算公式為 夏農熵的值...

決策樹 資訊熵增益

from math import log import operator defcreatedateset dataset 青年 否 否 一般 否 青年 否 否 好 否 青年 是 否 好 是 青年 是 是 一般 是 青年 否 否 一般 否 中年 否 否 一般 否 中年 否 否 好 否 中年 是 是 ...