【概率】互信息、和其他特征选择方法的比较

互信息

互信息(MI)是信息论中的一个概念,衡量一个随机变量包含关于另一个随机变量的信息量。换句话说,它量化了两个变量之间的统计依赖关系。如果两个变量是独立的,它们的互信息为零;如果不是,则互信息将大于零。

在机器学习(ML)的背景下,互信息对于特征选择特别有用,特征选择是为给定模型识别信息量最大的特征的过程。通过评估特征与目标变量之间的互信息,可以根据特征的重要性对其进行排序。与目标变量互信息较高的特征被认为更重要,因为它们共享了更多关于目标的信息,可能对预测目标更有用。

互信息的另一个好处是,它可以捕捉变量之间的任何类型的关系,而不仅仅是线性关联(相关性就是这样)。这使得它成为在复杂数据集上进行特征选择的强大工具,在这些数据集上变量之间的关系可能并不直接。

此外,互信息在ML中用于以下任务:

  • 聚类:在无监督学习中,互信息可以帮助评估聚类的质量,衡量一个聚类中的点被另一个聚类中的点共享了多少信息。
  • 依赖关系建模:它可以用于对图形模型中变量之间的依赖关系建模,例如贝叶斯网络。
  • 表示学习:在深度学习中,互信息可用于学习数据的表示,以捕获分类或回归等任务的显著特征。

互信息是机器学习中的一个通用工具,既可以进行探索性数据分析,也可以提高模型性能。


定义

利用两个离散随机变量 X X X Y Y Y的联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)以及它们各自的边缘概率分布 P ( X ) P(X) P(X) P ( Y ) P(Y) P(Y)计算它们之间的互信息(MI)。MI的公式如下:

M I ( X ; Y ) = ∑ x ∈ X ∑ y ∈ Y P ( x , y ) log ⁡ ( P ( x , y ) P ( x ) P ( y ) ) MI(X;Y) = \sum_{x \in X} \sum_{y \in Y} P(x,y) \log \left(\frac{P(x,y)}{P(x)P(y)}\right) MI(X;Y)=xXyYP(x,y)log(P(x)P(y)P(x,y))

其中:

  • P ( x , y ) P(x,y) P(x,y) X X X Y Y Y同时出现的概率。
  • P ( x ) P(x) P(x) X X X自身发生的概率。
  • P ( y ) P(y) P(y) Y Y Y自身发生的概率。
    -如果我们以比特来测量MI,则对数通常以2为底。

简单的例子

考虑一个简单的例子,其中有两个随机变量 X X X Y Y Y,它们的联合概率分布如下:

y =0y =1
x =01/20
x =101/2

在这里, X X X Y Y Y完全相关: X = 0 X=0 X=0 Y = 0 Y=0 Y=0, X = 1 X=1 X=1 Y = 1 Y=1 Y=1

现在,让我们计算边际概率:

  • P ( X = 0 ) = P ( X = 0 , Y = 0 ) + P ( X = 0 , Y = 1 ) = 1 / 2 + 0 = 1 / 2 P(X=0) = P(X=0, Y=0) + P(X=0, Y=1) = 1/2 + 0 = 1/2 P(X=0)=P(X=0,Y=0)+P(X=0,Y=1)=1/2+0=1/2
  • P ( X = 1 ) = P ( X = 1 , Y = 0 ) + P ( X = 1 , Y = 1 ) = 0 + 1 / 2 = 1 / 2 P(X=1) = P(X=1, Y=0) + P(X=1, Y=1) = 0 + 1/2 = 1/2 P(X=1)=P(X=1,Y=0)+P(X=1,Y=1)=0+1/2=1/2
  • P ( Y = 0 ) = P ( X = 0 , Y = 0 ) + P ( X = 1 , Y = 0 ) = 1 / 2 + 0 = 1 / 2 P(Y=0) = P(X=0, Y=0) + P(X=1, Y=0) = 1/2 + 0 = 1/2 P(Y=0)=P(X=0,Y=0)+P(X=1,Y=0)=1/2+0=1/2
  • P ( Y = 1 ) = P ( X = 0 , Y = 1 ) + P ( X = 1 , Y = 1 ) = 0 + 1 / 2 = 1 / 2 P(Y=1) = P(X=0, Y=1) + P(X=1, Y=1) = 0 + 1/2 = 1/2 P(Y=1)=P(X=0,Y=1)+P(X=1,Y=1)=0+1/2=1/2

现在可以计算互信息了:

M I ( X ; Y ) = ∑ x ∈ { 0 , 1 } ∑ y ∈ { 0 , 1 } P ( x , y ) log ⁡ ( P ( x , y ) P ( x ) P ( y ) ) MI(X;Y) = \sum_{x \in \{0,1\}} \sum_{y \in \{0,1\}} P(x,y) \log \left(\frac{P(x,y)}{P(x)P(y)}\right) MI(X;Y)=x{0,1}y{0,1}P(x,y)log(P(x)P(y)P(x,y))
M I ( X ; Y ) = 1 2 log ⁡ ( 1 2 1 2 1 2 ) + 0 log ⁡ ( 0 1 2 1 2 ) + 0 log ⁡ ( 0 1 2 1 2 ) + 1 2 log ⁡ ( 1 2 1 2 1 2 ) MI(X;Y) = \frac{1}{2} \log \left(\frac{\frac{1}{2}}{\frac{1}{2}\frac{1}{2}}\right) + 0 \log \left(\frac{0}{\frac{1}{2}\frac{1}{2}}\right) + 0 \log \left(\frac{0}{\frac{1}{2}\frac{1}{2}}\right) + \frac{1}{2} \log \left(\frac{\frac{1}{2}}{\frac{1}{2}\frac{1}{2}}\right) MI(X;Y)=21log(212121)+0log(21210)+0log(21210)+21log(212121)
M I ( X ; Y ) = 1 2 log ⁡ ( 2 ) + 1 2 log ⁡ ( 2 ) MI(X;Y) = \frac{1}{2} \log (2) + \frac{1}{2} \log (2) MI(X;Y)=21log(2)+21log(2)
M I ( X ; Y ) = 1 2 + 1 2 MI(X;Y) = \frac{1}{2} + \frac{1}{2} MI(X;Y)=21+21
M I ( X ; Y ) = 1  bit MI(X;Y) = 1 \text{ bit} MI(X;Y)=1 bit

涉及 0 log ⁡ ( 0 ) 0 \log(0) 0log(0)的词条定义为0,这与限制对齐:

lim ⁡ p → 0 + p log ⁡ ( p ) = 0 \lim_{p \to 0+} p \log(p) = 0 p0+limplog(p)=0

在这个简单的示例中, X X X Y Y Y之间的互信息为1位,这是有意义的,因为知道一个变量的值可以为我们提供关于另一个变量的完整信息。


互信息的界

互信息(MI)上界和下界:

下限:互信息的最
小值为0。当两个变量是完全独立的,并且知道一个变量的值不能提供关于另一个变量的信息时,就会出现这种情况。

  • 上界:互信息的上界不太直接,因为它取决于个体变量的熵。两个变量之间MI的最大值是它们的个体熵的最小值(H(X))和(H(Y))。换句话说,(MI(X;Y) \leq \min(H(X), H(Y)))。当一个变量是另一个变量的确定性函数时,就会出现这种情况,这意味着知道一个变量就可以获得关于另一个变量的完整信息。

与其他特征选择方法的比较

互信息与其他特征选择方法在以下几个方面有所不同:

  • 与皮尔逊相关:皮尔逊相关度量两个连续变量之间的线性关系,并在-1和1之间有界。它不能很好地捕捉非线性关系。另一方面,互信息可以捕获任何类型的依赖关系,无论是线性的还是非线性的,而且不仅限于连续变量——它也可以用于分类变量。

  • 与其他相关度量:Spearman的秩相关和Kendall的tau是可以捕获单调关系的非参数度量,但像Pearson的一样,它们仍然局限于特定类型的关系,不像相互信息那样普遍。

  • 与方差分析:方差分析(ANOVA)测试组间均值的差异,通常在处理分类输入和连续输出时使用。虽然它可以表明分类变量对连续变量的影响是否具有统计显著性,但它不能量化变量之间共享的信息量。

  • 对卡方检验:卡方检验用于确定两个分类变量之间是否存在显著关联。它不提供变量共享多少信息的量化,而是提供变量之间是否存在关联。

  • 与决策树中的信息增益:这实际上是一个与相互信息相关的概念。在决策树的上下文中,“信息增益”用于分割节点,并基于数据集在属性上被分割后熵的减少(或纯度的增加)。它可以被看作是类和属性之间的相互信息。

  • 与包装方法(例如,向前选择,向后消除):这些方法直接基于它们对给定预测模型的有用性来评估变量的子集。它们是计算密集型的,因为它们需要将模型拟合到不同的特征子集。互信息通常比包装方法计算成本更低,因为它独立于模型评估特征的重要性。

  • 与嵌入式方法(例如LASSO, Ridge回归):这些方法通过在损失函数中添加惩罚项来执行特征选择,作为模型训练过程的一部分。然而,互信息并不与特定的模型绑定,而是用作预处理步骤。

互信息是一种灵活而强大的特征选择工具,因为它不假设变量之间关系的函数形式。它可以帮助选择那些可能被其他只检测特定类型关系的方法遗漏的特征。然而,互信息可能比一些简单的相关度量需要更多的计算量,特别是对于大型数据集和许多特征。


和 Pearson 相关性的关系

皮尔逊相关系数(Pearson correlation coefficient)和互信息(Mutual Information, MI)都是变量之间关联的度量,但它们具有不同的性质和敏感性,这使得MI在某些情况下更普遍适用。以下是为什么在某些情况下,人工智能可以被视为比皮尔逊“更好”或更有信息量的原因:

  1. 关系类型:
  • 皮尔逊相关性测量两个连续变量之间的线性关系的强度和方向。
  • MI测量两个变量之间的一般依赖关系,而不管这种关系是线性的、非线性的、单调的还是非单调的。
  1. 变量类型:
  • 皮尔逊仅限于连续变量。
  • MI可以与连续,离散和分类变量一起使用,而无需进行任何转换。
  1. 鲁棒性:
  • 皮尔逊可能受到异常值的影响,因为它依赖于变量的平均值和标准差。
  • MI基于概率分布,通常对异常值更稳健。
  1. 信息内容
  • 皮尔逊仅表示变量以线性方式共同变化的程度。
  • MI量化变量之间共享信息的程度——了解一个变量可以减少对另一个变量的不确定性。
  1. 的敏感性:
  • 如果关系不是线性的,Pearson可能会低估关系的强度,这可能会误导特征选择。
  • MI捕获所有依赖关系,确保任何类型的系统关系都有助于功能相关性。

为了说明其中的区别,假设有两个变量X和Y,使 Y = X 2 Y = X^2 Y=X2。如果要计算这些变量的Pearson相关系数,如果X同时包含对称分布的正值和负值,则该系数可能接近于零,这表明没有线性关系。然而,两者之间存在着明确的关系:Y是由x完全决定的。互信息可以正确地识别这种确定性关系。

当处理连续变量之间的线性关系时,Pearson相关性是一个有用的度量,而MI提供了一个更全面的变量之间关系度量。这使得MI成为机器学习中更通用的特征选择工具,其中变量之间的关系可能不是线性的,或者可能涉及不同类型的数据。

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
特征选择是机器学习中非常重要的一步,它可以帮助我们选择最相关的特征来提高模型的性能。互信息和随机森林都是常用的特征选择方法,下面我将分别介绍它们的原理和如何在数据集上应用。 ### 互信息 互信息是一种衡量两个变量之间关联性的方法,它可以用来评估一个特征与目标变量之间的相关性。互信息的公式如下: $$I(X;Y) = \sum_{x \in X} \sum_{y \in Y} p(x,y) \log \frac{p(x,y)}{p(x)p(y)}$$ 其中,$X$ 和 $Y$ 分别表示两个随机变量,$p(x,y)$ 表示 $X=x$ 且 $Y=y$ 的概率,$p(x)$ 和 $p(y)$ 分别表示 $X=x$ 和 $Y=y$ 的概率。 在特征选择中,我们可以计算每个特征与目标变量的互信息,然后按照互信息大小对特征进行排序,选择互信息较大的特征作为模型的输入特征。 ### 随机森林 随机森林是一种基于决策树的集成学习方法,它可以用来评估特征的重要性。在随机森林中,我们可以通过计算每个特征在所有决策树中的平均深度来评估其重要性。具体地,我们可以按照以下步骤进行特征选择: 1. 构建一个随机森林模型,并在训练过程中记录每个特征在每个决策树中的深度。 2. 对于每个特征,计算其在所有决策树中的平均深度,作为该特征的重要性得分。 3. 按照重要性得分对特征进行排序,选择得分较高的特征作为模型的输入特征。 在实际应用中,我们可以使用 scikit-learn 库来实现互信息和随机森林的特征选择。下面是一个使用互信息进行特征选择的示例代码: ```python from sklearn.feature_selection import mutual_info_classif # X 是输入特征矩阵,y 是目标变量向量 # 计算每个特征与目标变量的互信息 mi = mutual_info_classif(X, y) # 按照互信息大小对特征进行排序 sorted_features = [x for _, x in sorted(zip(mi, feature_names), reverse=True)] ``` 下面是一个使用随机森林进行特征选择的示例代码: ```python from sklearn.ensemble import RandomForestClassifier # X 是输入特征矩阵,y 是目标变量向量 # 构建一个随机森林模型 rf = RandomForestClassifier(n_estimators=100, random_state=42) # 训练随机森林模型,并记录每个特征的重要性得分 rf.fit(X, y) importances = rf.feature_importances_ # 按照重要性得分对特征进行排序 sorted_features = [x for _, x in sorted(zip(importances, feature_names), reverse=True)] ``` 以上就是互信息和随机森林特征选择的基本原理和实现方法。需要注意的是,特征选择并不是必要的步骤,有时候直接使用所有特征也可以得到不错的模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值