計算互信息時的 bin 數量
我想使用互信息量化兩個變量 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
寬度相等x
,y
我個人會選擇:在這種情況下,對於兩個均勻分佈的隨機變量,您至少有直方圖每個單元格的點:
這是模擬(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。然後,您可以選擇不同的估算器:
- 克拉斯科夫NN 估計器,它對參數選擇不太敏感:或者最近的鄰居通常用作默認值。論文:(克拉斯科夫,2003)
- 用內核估計 MI (Moon, 1995)。
有很多用於估算 MI 的軟件包: