机器学习中的互信息2025年2月3日 | 阅读 6 分钟 在信息论中,互信息是一个衡量一个随机变量能从另一个随机变量中学到多少知识的术语。在机器学习中,互信息作为一种工具,可以帮助我们理解变量之间的依赖关系,并选择特征,从而使模型能够有效地捕捉数据中的关系。 用数学术语来说,关系是用不确定性来描述的。两个数量之间的互信息量——一个衡量知道其中一个数量能多大程度上减少对另一个数量的不确定性。 机器学习中互信息的应用以下是互信息在机器学习中的各种应用:
代码现在为了更好地理解,我们从Ames Housing数据中抽取一个测试用例。下面的图表显示了房屋的售价与外部质量的关系。每个点代表一栋独立的房屋。 ![]() 该图显示,每种ExterQual类别都倾向于将SalePrice集中在一个给定的范围内,因此知道ExterQual的值应该会让你对相关的SalePrice更有信心。ExterQual与SalePrice之间的互信息,说明了知道房屋外部质量ExterQual的平均情况下,可以减少房屋售价SalePrice的不确定性。换句话说,它衡量了在知道ExterQual的不同质量等级后,我们可以更准确地预测SalePrice的量。例如,Fair的出现频率低于Typical,因此在MI得分中的权重较低。 请记住,我们所说的“不确定性”是由信息论中的一个量——“熵”来捕捉的。通常,一个变量的熵可以定义为“描述该变量的一次出现所需的yes-no问题的平均数量”。因此,你必须问的问题越多,你对每个变量的确定性就越可能不足。互信息是你可以期望特征在目标变量方面能够回答的问题的数量。 解释互信息得分互信息量化了知道一个量能告诉你关于另一个量的多少信息。如果两个数量之间的互信息为0.0,那么它们是完全独立的——也就是说,知道一个量对另一个量没有任何信息。另一方面,互信息的上限没有严格的限制——但在现实世界中,超过2.0的值非常罕见。MI以对数形式测量的事实意味着它增长得很慢。因此,MI的小幅增长已经显示出两个量之间共享信息的大幅增加。 下图将为你提供关于MI值如何与特征与目标变量的关系类型和级别相关联的直观认识。 ![]() 在使用互信息时,请牢记以下几点:
1985款汽车Auto数据集包含193个实例,对应于1985年的车型。对于这个数据集,我们任务是根据每辆车的23个属性(如品牌、车身形状和马力)来预测汽车的售价。在这个例子中,我们将使用互信息来对特征进行排名,并通过数据可视化来探索结果。 输出 ![]() 巧合的是,scikit-learn的MI方法对离散特征和连续特征的处理方式不同。因此,你必须区分这两种情况。基本原则是,任何需要float数据类型的都不能被认为是离散的。用于表示数据集中存储为对象或分类数据类型的分类变量的方法之一是标签编码,其中每个类别都分配一个唯一的数字。这基本上使得分类数据在机器学习模型中被视为离散值。 在其feature_selection模块中,Scikit-learn提供了两种不同的互信息度量:regression_of_mi 用于实值目标,classification_of_mi 用于分类目标。根据线索,我们可以确定我们的目标变量price是实值。我们的特征的MI得分将被计算并放入下一个漂亮的DataFrame中。 输出 ![]() 我们现在将使用条形图来比较两者。 输出 ![]() 数据可视化是效用排名之后的良好后续。让我们更详细地研究其中的一些。我们可能会期望得分很高的curb_weight特征与我们的目标变量price表现出很强的关系。 输出 ![]() 从图中可以看出,尽管type_of_fuel特征的MI得分相对较低,但它清晰地区分了两种价格群体,并且在horsepower特征内具有不同的趋势。尽管type_of_fuel的MI得分较低,但它揭示了交互效应的事实可能意味着它仍然可以在模型中发挥作用。由于MI得分较低,在不检查交互效应的情况下就丢弃一个特征是不必要的。在此方面,领域知识可能非常重要。 输出 ![]() 这些基于互信息的可视化,与其他使用效用度量的可视化一样,可能在弄清楚数据中一些最重要的关系方面非常有帮助。 下一个主题机器学习中的正则化 |
我们请求您订阅我们的新闻通讯以获取最新更新。