機器學習特徵選擇之卡方檢驗與互信息

by wangben  @ beijing


特徵選擇的主要目的有兩點:

1.      減少特徵數量提高訓練速度,這點對於一些複雜模型來說尤其重要

2.      減少noisefeature以提高模型在測試集上的準確性。一些噪音特徵會導致模型出現錯誤的泛化(generalization),從而在測試集中表現較差。另外從模型複雜度的角度來看,特徵越多模型的複雜度越高,也就越容易發生overfitting。


互信息(Mutual information)和卡方檢驗(chisquare)是兩種比較常用的特徵選擇方法:

互信息

互信息是用來評價一個事件的出現對於另一個事件的出現所貢獻的信息量,具體的計算公式爲:


其中U、C代表兩個事件,e的取值可以爲0或者1,1代表出現這個事件,0代表不出現。

把上述公式拆解爲統計形式爲:


其中N11是表示全部數據中兩個事件同時出現的概率,N表示全部事件出現的次數,而N0.則表示N01+N00。


實際做單特徵選擇的時候,我們把某個特徵是否出現和分類是否正確這兩個事件放在一起計算。把得分較高的特徵進行保留。

需要注意的是計算時會遇到四種情況也就是,10,11,01,00,對於其中的某一種情況,當計算得到的值是0時,代表了兩者沒有關聯,當計算出的值是正值時,表示兩者共同出現的概率比較高,當值爲負時,表示兩者是負相關。例如:00情況是負值是,表示兩者互相排斥,出現A時,B出現的概率就比較小,這個時候往往01情況和10情況的值爲正(check)


卡方檢驗

在統計學中,卡方檢驗用來評價是兩個事件是否獨立,也就是P(AB) = P(A)*P(B) 


其中E代表當兩者獨立時期望的數量,例如E11代表兩個事件獨立時,共同出現的期望值。

具體的計算公式爲:


相關數據實例:



查詢卡方分佈在自由度爲1時的顯著性閾值:



284遠遠超過了10.83,所以二者並不獨立,存在相關性。

 

卡方檢驗和互信息的區別

卡方檢驗對於出現次數較少的特徵更容易給出高分。例如某一個特徵就出現過一次在分類正確的數據中,則該特徵會得到相對高的分數,而互信息則給分較低。其主要原因還是由於互信息在外部乘上了一個該類型出現的概率值,從而打壓了出現較少特徵的分數。

實驗結果:

如果export只出現一次,且poultry爲1

則在MI中的r11中log裏面結果是774106/27652,但是外部的P11非常小隻有1/N

 

在卡方檢驗中,E11的值爲N*1/N*(27652/774106), 也就是27652/774106

(1 -27652/774106)^2/27652/774106

沒有再計算N11的比例,相對來說值會大一些

 

剛開始時,卡方檢驗會選擇一些小衆特徵,覆蓋率不好,噪音較大,所以效果不如互信息方法,但是從100開始會選擇到一些較好的特徵,整體效果有所上升。

 

這兩種方法都屬於貪心方法,沒有考慮到已選擇特徵和待選特徵之間的相關性,並不能得到最優的情況。但是速度方面會非常快。

 

其他需要考慮的地方:是否特徵選擇的時候,計算概率,通過統計的方法對於一些小衆特徵偏差較大,通過增加先驗概率的方法進行平滑可以優化結果。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章