這是《大資料茶館》的第一篇文章,既然要聊決策樹,就繞不開資訊熵,一般決策樹說到熵的時候都會說熵是反映事件的不確定性,然後給出下面這個公式。
− ∑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
pil
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
∑np
(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
∑np
(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 那麼我們對應的應該如何獲取兩個資料集的資訊熵呢,首先我們需要了了解資訊熵的 定義,在數學上,資訊熵作為資料集混亂程度的計算量化指標,我們獲得最...