文本分类之特征简约算法说明
見 http://blog.csdn.net/aalbertini/archive/2010/07/20/5749883.aspx
?
用數值衡量某個特征的重要性。
?
1 df: 用df衡量重要性。 df就是包含該詞的文檔的個數 除以 文檔總數
?
2 ig: infomation gain
?
?信息論中有關信息量(就是“熵”)的定義。說有這么一個變量X,它可能的取值有n多種,分別是x1,x2,……,xn,每一種取到的概率分別是P1,P2,……,Pn,那么X的熵就定義為:
意思就是一個變量可能的變化越多(反而跟變量具體的取值沒有任何關系,只和值的種類多少以及發生概率有關),它攜帶的信息量就越大(因此我一直覺得我們的政策法規信息量非常大,因為它變化很多,基本朝令夕改,笑)。
對分類系統來說,類別C是變量,它可能的取值是C1,C2,……,Cn,而每一個類別出現的概率是P(C1),P(C2),……,P(Cn),因此n就是類別的總數。此時分類系統的熵就可以表示為:
?
我們用T代表特征,而用t代表T出現,那么:
與剛才的式子對照一下,含義很清楚對吧,P(t)就是T出現的概率,就是T不出現的概率。這個式子可以進一步展開,其中的
另一半就可以展開為:
因此特征T給系統帶來的信息增益就可以寫成系統原本的熵與固定特征T后的條件熵之差:
公式中的東西看上去很多,其實也都很好計算。比如P(Ci),表示類別Ci出現的概率,其實只要用1除以類別總數就得到了(這是說你平等的看待每個類別而忽略它們的大小時這樣算,如果考慮了大小就要把大小的影響加進去)。再比如P(t),就是特征T出現的概率,只要用出現過T的文檔數除以總文檔數就可以了,再比如P(Ci|t)表示出現T的時候,類別Ci出現的概率,只要用出現了T并且屬于類別Ci的文檔數除以出現了T的文檔數就可以了。
代碼中的 double p = 1 + pt / total * pct + (1 - pt / total) * pnotct;
其中
1表示H(C)。因為每個類別都是一樣大,所以H(C) = 2。。。???
pt/total 表示P(t);特征t出線的概率;
(1 - pt/total)表示P(t');特征t不出現的概率
http://www.360doc.com/content/10/0520/14/1472642_28554810.shtml
?
3 mi, mutual infomation
互信息衡量的是某個詞和類別之間的統計獨立關系,某個詞t和某個類別Ci傳統的互信息定義如下:
互信息是計算語言學模型分析的常用方法,它度量兩個對象之間的相互性。在過濾問題中用于度量特征對于主題的區分度?;バ畔⒌亩x與交叉嫡近似?;バ畔⒈緛硎切畔⒄撝械囊粋€概念,用于表示信息之間的關系, 是兩個隨機變量統計相關性的測度,使用互信息理論進行特征抽取是基于如下假設:在某個特定類別出現頻率高,但在其他類別出現頻率比較低的詞條與該類的互信息比較大。通常用互信息作為特征詞和類別之問的測度,如果特征詞屬于該類的話,它們的互信息量最大。由于該方法不需要對特征詞和類別之問關系的性質作任何假設,因此非常適合于文本分類的特征和類別的配準工作。
double itc = Math.log(tf / one / (pt / total * one / total));
???? // double itc = Math.log(tf * total / one * pt);
???? avgItc += itc * (one / total);
其中,
pt表示P(t),包含該特征的文檔個數
tf/one表示類中包含該特征的文檔個數, pt/total表示特征出線的概率, one/total表示類的大小
?
4 chi,
?
5 sd, standard deviation.? st = Math.sqrt(st / (tfs.length - 1) );? 其中為什么要減去1? 似乎和標準差的定義不符合。。
?
6 是df * idf?? 應該是tf * idf吧?
?
7 df * idf * sd?? 同上, 應該是tf * idf * sd? 而且sd的求法有問題?
總結
以上是生活随笔為你收集整理的文本分类之特征简约算法说明的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: libsvm学习 all
- 下一篇: [code] spectral clus
