Matlab
Matlab中使用互信息進行特徵選擇
我正在嘗試將互信息的概念應用於特徵選擇,如這些講義(第 5 頁)中所述。
我的平台是matlab。從經驗數據計算互信息時,我發現一個問題是數字總是向上偏差。我在 Matlab Central 上發現了大約 3~4 個不同的文件來計算 MI,當我輸入獨立隨機變量時,它們都給出了很大的數字(比如 > 0.4)。
我不是專家,但問題似乎是,如果您簡單地使用聯合密度和邊際密度來計算 MI,則會在此過程中引入偏差,因為 MI 從定義上講是正數。有人對如何準確估計互信息有實用的建議嗎?
一個相關的問題是,在實踐中,人們如何實際使用 MI 來選擇特徵?由於 MI 在理論上是無界的,因此如何得出閾值對我來說並不明顯。還是人們只是按 MI 對特徵進行排名並獲取前 k 個特徵?
這就是有限抽樣偏差的問題。
密度的小樣本估計是有噪聲的,這種變化會導致變量之間產生虛假的相關性,從而增加估計的信息值。
在離散情況下,這是一個經過充分研究的問題。有許多技術可以糾正,從完全貝葉斯 ( NSB ) 到簡單的糾正。最基本的(Miller-Madow)是減去從價值。這是兩個隱式模型之間的自由度差異(完全聯合多項式與獨立邊際的乘積) - 實際上有足夠的抽樣是獨立性的似然比檢驗 ( G-test ),它是分佈於原假設下的自由度。在有限的試驗中,甚至很難可靠地估計 R 和 S - 有效的校正是使用貝葉斯計數程序來估計這些(Panzeri-Treves 或 PT 校正)。
在 Matlab 中實現這些技術的一些包包括infotoolbox和Spike Train Analysis Toolkit。
對於連續情況,基於最近鄰距離的估計器減少了問題。