資訊熵決策樹
推薦閱讀:通訊的數學理論
在網路中進行資訊傳遞,所有資訊都是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=
1px
il
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 青年 否 否 一般 否 青年 否 否 好 否 青年 是 否 好 是 青年 是 是 一般 是 青年 否 否 一般 否 中年 否 否 一般 否 中年 否 否 好 否 中年 是 是 ...