Matlab中使用互信息进行特征选择

机器算法验证 matlab 特征选择 信息论 互信息
2022-03-11 21:23:26

我正在尝试将互信息的概念应用于特征选择,如这些讲义(第 5 页)中所述。

我的平台是matlab。从经验数据计算互信息时,我发现一个问题是数字总是向上偏差。我在 Matlab Central 上发现了大约 3~4 个不同的文件来计算 MI,当我输入独立随机变量时,它们都给出了很大的数字(比如 > 0.4)。

我不是专家,但问题似乎是,如果您简单地使用联合密度和边际密度来计算 MI,则会在此过程中引入偏差,因为 MI 从定义上讲是正数。有人对如何准确估计互信息有实用的建议吗?

一个相关的问题是,在实践中,人们如何实际使用 MI 来选择特征?由于 MI 在理论上是无界的,因此如何得出阈值对我来说并不明显。还是人们只是按 MI 对特征进行排名并获取前 k 个特征?

3个回答

这就是有限抽样偏差的问题。

密度的小样本估计是有噪声的,这种变化会导致变量之间产生虚假的相关性,从而增加估计的信息值。

在离散情况下,这是一个经过充分研究的问题。有许多技术可以纠正,从完全贝叶斯 ( NSB ) 到简单的纠正。最基本的(Miller-Madow)是从值中减去这是两个隐式模型之间的自由度差异(完全联合多项式与独立边际的乘积) - 实际上,在充分抽样的情况下是独立性的似然比检验(G-test),即(R1)(S1)/2Nln22Nln(2)Iχ2(R1)(S1)原假设下的自由度。通过有限的试验,甚至很难可靠地估计 R 和 S - 有效的校正是使用贝叶斯计数程序来估计这些(Panzeri-Treves 或 PT 校正)。

在 Matlab 中实现这些技术的一些包包括infotoolboxSpike Train Analysis Toolkit

对于连续情况,基于最近邻距离的估计器减少了问题。

我使用了 KL 散度,并且在适当的样本量下,对于分布具有相等概率的位点,得到的值为 0。

我建议你用 KL 散度来改写你的 MI。

您应该使用部分互信息算法来选择输入变量(特征)。它基于 MI 概念和概率密度估计。例如在:

  1. 基于内核的 PMI:(+) 有一个停止标准 (Akaike Information Criteria) (-) 更高的复杂性
  2. 基于 kNN 的 PMI:(-) 没有停止标准 (+) 复杂度较低

我使用 PMI 来减少神经网络输入的数量,因为它们会增加复杂性并引入其他问题。您可以在回顾人工神经网络的输入变量选择方法一文中找到输入变量选择 (IVS) 算法的完整概述您可以将 IVS 用于 SVM 和其他。简而言之,使用 PMI。