決策樹系列1 聊聊資訊熵

2021-10-03 15:48:53 字數 3463 閱讀 7675

這是《大資料茶館》的第一篇文章,既然要聊決策樹,就繞不開資訊熵,一般決策樹說到熵的時候都會說熵是反映事件的不確定性,然後給出下面這個公式。

− ∑i

=1np

logp

\\- \sum_^n p\,log\,p

−i=1∑n

​plo

gp假設小明在做一道選擇題,選項 a,b,c,d。

小明關於這道題正確選項的不確定性越來越小,直到最後完全確定答案,也就是不確定性為 0。

熵:事件的不確定性稱為熵,不確定性越大,熵越大,確定事件的熵為 0。

事件各種可能性的分布越均勻,熵越大,因為結果越不確定。

事件各種可能性的分布越不均勻,熵越小,因為結果有偏向性,不確定性在減少。

資訊:通過獲取額外的資訊可以增加事件的確定性,即消除一部分熵。

資訊是相對的,由於每個人的背景知識不同,同樣一句話提供的資訊也不一樣。

比如:太陽從東方公升起

具體提供資訊的多少需要通過消除了多少不確定性(熵)來衡量,消除了多少熵,就是提供了多少資訊。

熵和資訊數量相等意義相反。

下面看看資訊的多少是怎麼計算出來的。

我們先思考哪些物理量有單位,單位是如何制定出來的。

比如質量的單位是 kg , 最初我們制定質量的單位時找了乙個參照物 a,規定 a 物體的質量為 1 kg ,其他物體的質量相當於多少個 a, 就是多少 kg。

b = 3 a, 則 b 的 kg 數為 3,因為 3 = b / a,這裡用乘法的反函式除法來計算千克數。

既然資訊熵是描述事件的不確定性,那麼我們就選乙個不確定性事件作為參考係,人們選取了拋硬幣。

拋一次硬幣哪面向上這個事件是個不確定事件,結果有兩種可能性,正反各佔 1/2,這個不確定事件的資訊熵我們定義為 1 bit.

兩種可能性的等概率事件的熵為 1 bit.

對於其他不確定性事件同樣基於參考係來計算。

注意到這裡不是乘法的關係,是指數的關係,2^3 = 8 所以資訊熵的計算應該用指數的反函式對數來計算,對於有 8 種可能性的等概率事件, 熵為 log 8 = 3 bit.

假設等概率事件的可能性個數為 m,則熵為

l og

2(m)

log_2\,(m)

log2​(

m)簡寫為log

(m)log\,(m)

log(m)

那麼對於非等概率事件而言如何計算熵呢?

還是上面的小明做題,當小紅告訴小明 c 有一半概率正確時,答案概率分布為 (1/6, 1/6, 1/2, 1/6)

此時事件的熵應該是各個選項的概率乘以各自的熵,然後加和。

∑ i=

1npi

log(

mi)\sum_^n p_i\,log\,(m_i)

i=1∑n​

pi​l

og(m

i​)那每個選項的熵如何計算,因為 m 是未知的。

先考慮概率 p 的由來,在等概率事件中,如果有 100 種可能,則每種可能的概率為 1/100, 也就是說,等可能事件的概率 p 為可能性個數 m 的倒數。

受此啟發,我們可以把概率 p 的倒數 1/p 看做等概率事件的可能性個數 m。代入上述公式,我們就得到一般事件的熵:

∑ i=

1npl

og(1

/p)\sum_^n p\,log\,(1/p)

i=1∑n​

plog

(1/p

)化簡為

−  ∑i

=1np

log(

p)\\-\,\sum_^n p\,log\,(p)

−i=1∑n

​plo

g(p)

這就是我們常用的資訊熵公式。

在深度學習領域,計算二分類和多分類的 loss 函式時我們經常用到交叉熵。那麼什麼是交叉熵呢?

一般用 p(x) 表示真實分布,q(x) 表示近似分布,那這兩個分布的差距叫做 kl 散度。

k l(

p(x)

∣∣q(

x))=

∑i=1

np(x

)log

(p(x

)q(x

))kl(p(x) || q(x)) = \sum_^n p(x)\,log\,(\frac)

kl(p(x

)∣∣q

(x))

=i=1

∑n​p

(x)l

og(q

(x)p

(x)​

)當 q(x)經過訓練逐步接近最終等於 p(x)時,兩個分布差距為 0。

其實我們應該用 kl 散度來衡量分類問題的 loss。但 kl 散度展開會發現:

k l(

p(x)

∣∣q(

x))=

∑i=1

np(x

)log

(p(x

)q(x

))=∑

i=1n

p(x)

logp

(x)−

∑i=1

np(x

)log

q(x)

\begin &kl(p(x) || q(x)) \\ &= \sum_^n p(x)\,log\,(\frac) \\ &= \sum_^n p(x)\,log\,p(x) - \sum_^n \,p(x)log\,q(x) \\ \end

​kl(p(

x)∣∣

q(x)

)=i=

1∑n​

p(x)

log(

q(x)

p(x)

​)=i

=1∑n

​p(x

)log

p(x)

−i=1

∑n​p

(x)l

ogq(

x)​第一部分是真實分布 p(x) 的熵,是個常量,所以人們計算 loss 時就只用後半部分了,而我們用作 loss 的 kl 散度的後半部分

− ∑i

=1np

(x)l

ogq(

x)\\- \sum_^n p(x)\,log\,q(x)

−i=1∑n

​p(x

)log

q(x)

就是交叉熵。

資訊熵就說到這裡,下期我們開聊決策樹。

來的都是客,歡迎您常來坐坐。

決策樹 資訊熵增益

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

利用資訊熵構建決策樹

決策樹演算法普遍存在於我們的日常生活中,我們在不經意間就會使用到決策樹。比如你在糾結是否要去一家公司工作時,可能會用到下面的決策樹 整個決策過程是這樣的 如果公司待遇高,你可能就願意去 如果待遇不高,你可能會繼續考慮公司的平台好不好。如果連平台都不好,那就直接拒絕。如果平台很好,你就會繼續考慮自己在...

決策樹資訊熵數理剖析

決策樹資訊熵數理剖析 資訊熵記錄拓展決策樹 張 極 2019年年3 月9日 假如有乙個集合為a 1,2,3,4,5 另 乙個集合為b 1,2,3,2,2,4 那麼我們對應的應該如何獲取兩個資料集的資訊熵呢,首先我們需要了了解資訊熵的 定義,在數學上,資訊熵作為資料集混亂程度的計算量化指標,我們獲得最...