?
全文裝載: http://www.blogjava.net/zhenandaci/archive/2009/03/24/261701.html
作者:Jasper (from BlogJava)
?
在前面的《文本分類概述》文章中,我們講到了基于統計學習的方法進行分類的關鍵在于對訓練集語料的特征選擇的好壞。那么訓練集中哪些詞可以作為特征,哪些詞則不能呢?我們必須對訓練集中所有詞語量化其重要程度。 信息增益 (IG, Information Gain ) 就是一種很有效的特征量化方法(特征選擇方法)。
?
在信息增益中,重要性的衡量標準就是看特征能夠為分類系統帶來多少信息,帶來的信息越多,該特征越重要。
?
(1) 信息量是如何度量的 —— 信息熵 Entropy
因此先回憶一下信息論中有關信 熵 的定義。說有這么一個變量X,它可能的取值有n多種,分別是x 1 ,x 2 ,……,x n ,每一種取到的概率分別是P 1 ,P 2 ,……,P n ,那么X的熵就定義為:
???????????????????????????????? ? ? ??
?????????????????????? 想要對這個公式又較深的理解,請參見《Google黑板報--數學之美》第四章
?
這個公式可以反映一個變量X出現某種值的可能性越多,它攜帶的信息量就越大。這個道理很好理解,比如X代表一個問題,這個問題可能有10種答案,那么自然我們需要較多的信息量才能準確的知道答案。而如果問題只有一種答案,我們所需要知道的信息量自然也就少很多了。
?
( 2) 在分類領域中,信息熵和信息增益的使用
對分類系統來說,類別C是變量,它可能的取值是C 1 ,C 2 ,……,C n ,而每一個類別出現的概率是P(C 1 ),P(C 2 ),……,P(C n ),因此n就是類別的總數。此時整個分類系統的熵就可以表示為:
??????????????????????? ? ? ? ? ? ? ??
上面的公式中? P(Ci)表示Ci類中包含文檔數量占整個分類體系中全部文檔數量的比重
?
那么信息增益是針對一個個的特征而言的,就是看一個特征t。整個系統中某些文本有t和整個系統中都沒t 的時候信息量各是多少,兩者的差值就是這個特征t給系統帶來的信息量,即信息增益 。
?
系統有t的時候信息量很好計算,就是上面的式子,它表示的是包含所有特征時系統的信息量。
?
問題是假如把系統中的t全部去掉以后,信息量如何計算?我們換個角度想問題,把系統要做的事情想象成這樣:說教室里有很多座位,學生們每次上課進來的時候可以隨便坐, 因而變化是很大的(無數種可能的座次情況);但是現在有一個座位,看黑板很清楚,聽老師講也很清楚,于是校長的小舅子的姐姐的女兒托關系,把這個座位定下來了,每次只能給她坐,別人不行。那么在這種情況下,對于其他同學來說,教室里有沒有這個位置都是一樣的。
?
對應到分類系統中,就是說下面兩個命題是等價的。(1) 所有的文本中都沒有出現特征t;(2) 系統雖然包含特征t,但是t的值已經固定了。這里所說的t的值指的就是t存在和t不存在兩種值。
?
因此我們計算分類系統不包含特征t的信息量,就使用上面第(2)中情況來代替,就是計算當一個特征t值確定后,系統的信息量是多少。這個信息量其實也有專門的名稱,就叫做“ 條件熵 ”,條件嘛,自然就是指“t已經固定“這個條件。
?
但是問題接踵而至,例如一個特征X,它可能的取值有n多種(x 1 ,x 2 ,……,x n ), 當計算條件熵而需要把它固定的時候,要把它固定在哪一個值上呢?答案是每一種可能都要固定一下,計算n個值,然后取均值才是條件熵。而取均值也不是簡單的 加一加然后除以n,而是要用每個值出現的概率來算平均(簡單理解,就是一個值出現的可能性比較大,固定在它上面時算出來的信息量占的比重就要多一些)。條件熵公式如下:
?
那么具體到我們在分類系統中討論特征t固定后的條件熵為:
上面公式中前半部分P(t)表示整個分類系統中包含特征t的文檔數量占全部文檔數量的比重,P(Ci|t)表示包含了特征 t 的Ci 類中的文檔數量占整個系統中包含了特征 t 的文檔數量的比重。 而后版本分的 非t 表示不包含 t 的文檔比重。
?
那么特征t的信息增益公式為:??? IG(T)=H(C) - H(C|T)
?
(3) 實驗證明分類系統的特征信息熵
?
我使用了復旦大學分類語料庫的20個大類9787語料作為訓練集合,計算訓練集合中所有不同詞語的信息增益。下圖是其中五個詞語在分類系統中的文檔分布:
實驗結果: GI(原文)=0.5294024092788958
??????????????? GI(參考文獻)=0.2888259720738895
??????????????? GI(計算機)=0.1612834659409792
??????????????? GI(##0.0)=0.0002919484403363093
??????????????? GI(廣東人)=0.0013525481719112165
?
?????? 我們發現,當詞語t分布在很少的幾個類中時(比如"##0.0"和"廣東人"),說明t在類別中的情況比較少,也就是說t屬于Cx的不確定性比較小,那么該 t 所包含的信息量也就比較小。因此當 t 值固定之后,對整個文本集合的信息量影響也就不大,因此H(C|t) = H(C) (基本相等)。那么詞語 t 的信息增益也就非常小了。
?????? 而"原文",“參考文獻”,“計算機”分布的類別比較多,信息增益也就大了。
?
?????? 從這個實驗我們可以看出,在訓練語料中分布類別比較廣泛的詞語,信息增益都比較高。我們可以認為這些詞語對整個訓練語料有比較重要的意義。但是信息增益只能獲得整個訓練語料的特征詞,其值不能區分不同類別間的特征詞的權重。因此對于特征詞權重的計算。我們還需要采取很多其他方法,其中最常用的就是TF*IDF了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
