1. 程式人生 > >【文字分類】 特徵抽取之資訊增益

【文字分類】 特徵抽取之資訊增益

作者:Jasper (from BlogJava)

在前面的《文字分類概述》文章中,我們講到了基於統計學習的方法進行分類的關鍵在於對訓練集語料的特徵選擇的好壞。那麼訓練集中哪些詞可以作為特徵,哪些詞則不能呢?我們必須對訓練集中所有詞語量化其重要程度。資訊增益 (IG, Information Gain ) 就是一種很有效的特徵量化方法(特徵選擇方法)。

在資訊增益中,重要性的衡量標準就是看特徵能夠為分類系統帶來多少資訊,帶來的資訊越多,該特徵越重要。

(1) 資訊量是如何度量的 —— 資訊熵 Entropy

因此先回憶一下資訊理論中有關信 的定義。說有這麼一個變數X,它可能的取值有n多種,分別是x1

 ,x2 ,……,xn ,每一種取到的概率分別是P1 ,P2 ,……,Pn ,那麼X的熵就定義為:

                                        

                       想要對這個公式又較深的理解,請參見《Google黑板報--數學之美》第四章

這個公式可以反映一個變數X出現某種值的可能性越多,它攜帶的資訊量就越大。這個道理很好理解,比如X代表一個問題,這個問題可能有10種答案,那麼自然我們需要較多的資訊量才能準確的知道答案。而如果問題只有一種答案,我們所需要知道的資訊量自然也就少很多了。

( 2) 在分類領域中,資訊熵和資訊增益的使用

對分類系統來說,類別C是變數,它可能的取值是C1 ,C2 ,……,Cn ,而每一個類別出現的概率是P(C1 ),P(C2 ),……,P(Cn ),因此n就是類別的總數。此時整個分類系統的熵就可以表示為:

                                       

上面的公式中  P(Ci)表示Ci類中包含文件數量佔整個分類體系中全部文件數量的比重

那麼資訊增益是針對一個個的特徵而言的,就是看一個特徵t。整個系統中某些文字有t和整個系統中都沒t 的時候資訊量各是多少,兩者的差值就是這個特徵t給系統帶來的資訊量,即資訊增益 。

系統有t的時候資訊量很好計算,就是上面的式子,它表示的是包含所有特徵時系統的資訊量。

問題是假如把系統中的t全部去掉以後,資訊量如何計算?我們換個角度想問題,把系統要做的事情想象成這樣:說教室裡有很多座位,學生們每次上課進來的時候可以隨便坐, 因而變化是很大的(無數種可能的座次情況);但是現在有一個座位,看黑板很清楚,聽老師講也很清楚,於是校長的小舅子的姐姐的女兒託關係,把這個座位定下來了,每次只能給她坐,別人不行。那麼在這種情況下,對於其他同學來說,教室裡有沒有這個位置都是一樣的。

對應到分類系統中,就是說下面兩個命題是等價的。(1) 所有的文字中都沒有出現特徵t;(2) 系統雖然包含特徵t,但是t的值已經固定了。這裡所說的t的值指的就是t存在和t不存在兩種值。

因此我們計算分類系統不包含特徵t的資訊量,就使用上面第(2)中情況來代替,就是計算當一個特徵t值確定後,系統的資訊量是多少。這個資訊量其實也有專門的名稱,就叫做“條件熵 ”,條件嘛,自然就是指“t已經固定“這個條件。

但是問題接踵而至,例如一個特徵X,它可能的取值有n多種(x1 ,x2 ,……,xn ), 當計算條件熵而需要把它固定的時候,要把它固定在哪一個值上呢?答案是每一種可能都要固定一下,計算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了。