Information-Theory

計算互信息時的 bin 數量

  • November 1, 2015

我想使用互信息量化兩個變量 A 和 B 之間的關係。計算它的方法是對觀察結果進行分箱(參見下面的示例 Python 代碼)。但是,哪些因素決定了合理的 bin 數量?我需要快速計算,所以為了安全起見,我不能簡單地使用很多垃圾箱。

from sklearn.metrics import mutual_info_score

def calc_MI(x, y, bins):
   c_xy = np.histogram2d(x, y, bins)[0]
   mi = mutual_info_score(None, None, contingency=c_xy)
   return mi

沒有最佳數量的 bin 來估計直方圖的互信息 (MI)。如果可以的話,最好的方法是通過交叉驗證來選擇它,或者依靠經驗法則。這就是為什麼提出了許多其他不基於直方圖的 MI 估計量的原因。

箱的數量將取決於數據點的總數. 您應該盡量避免太多的 bin,以避免兩個變量之間的聯合分佈的估計錯誤。您還應該避免 bin 太少而無法捕捉到兩個變量之間的關係。鑑於np.histogram2d(x, y, D)生成的二維直方圖的D寬度相等xy我個人會選擇:

在這種情況下,對於兩個均勻分佈的隨機變量,您至少有直方圖每個單元格的點:

這是模擬(Cellucci, 2005)中提出的自適應分區方法的一種可能選擇。後一種方法通常用於估計 MI 以推斷遺傳網絡:例如在MIDER中。 如果你有很多數據點並且沒有缺失值,您不必太擔心找到最佳數量的垃圾箱;例如,如果. 如果不是這種情況,您可以考慮為有限樣本校正 MI。(Steuer et al., 2002)討論了針對遺傳網絡推理任務對 MI 的一些修正。


估計直方圖的 bin 數量是一個老問題。您可能會對Lauritz Dieckman 關於估計 MI 的 bin 數量的演講感興趣。本次演講基於 Mike X Cohen書中關於神經時間序列的一章。

你可能會選擇和獨立並使用用於估計 1D 直方圖中 bin 數量的經驗法則。

Freedman-Diaconis 規則(不假設分佈):

在哪裡是 75 分位數和 25 分位數之間的差異。在SE中查看這個相關問題。 斯科特規則(正態假設):

在哪裡是標準差. Sturges 規則(可能會低估垃圾箱的數量,但適用於大型垃圾箱)):


用直方圖很難正確估計 MI。然後,您可以選擇不同的估算器:

有很多用於估算 MI 的軟件包:

  • Python 的非參數熵估計工具箱。網站
  • Java 中的信息動態工具包,但也可用於 Python。網站
  • Matlab 中的 ITE 工具箱。網站

引用自:https://stats.stackexchange.com/questions/179674

comments powered by Disqus