为什么信息增益特征选择法给出零分

我有一个数据集,我在WEKA中使用了信息增益特征选择方法来获取重要的特征。以下是我得到的输出结果。

Ranked attributes:0.97095    1 Opponent0.41997   11 Field_Goals_Made0.38534   24 Opp_Free_Throws_Made0.00485    4 Home0          8 Field_Goals_Att0         12 Opp_Total_Rebounds0         10 Def_Rebounds0          9 Total_Rebounds0          6 Opp_Field_Goals_Made0          7 Off_Rebounds0         14 Opp_3Pt_Field_Goals_Made0          2 Fouls0          3 Opp_Blocks0          5 Opp_Fouls0         13 Opp_3Pt_Field_Goals_Att0         29 3Pt_Field_Goal_Pct0         28 3Pt_Field_Goals_Made0         22 3Pt_Field_Goals_Att0         25 Free_Throws_Made

这告诉我所有得分为0的特征都可以被忽略,对吗?

现在当我在WEKA中尝试使用包装子集评估方法时,我得到了在信息增益方法中被忽略的选定属性(即得分为0的属性)。以下是输出结果

Selected attributes: 3,8,9,11,24,25 : 6                 Opp_Blocks                 Field_Goals_Att                 Total_Rebounds                 Field_Goals_Made                 Opp_Free_Throws_Made                 Free_Throws_Made

我想了解,为什么信息增益方法忽略的属性在包装子集评估方法中被认为是重要的?


回答:

为了理解发生了什么,首先需要了解这两种特征选择方法的作用。

一个属性的信息增益告诉你该属性相对于分类目标提供了多少信息。也就是说,它衡量了在知道属性值和不知道属性值的情况下信息的差异。常用的信息度量是香农熵,尽管任何能够量化消息信息内容的度量都可以使用。

因此,信息增益取决于两件事:在知道属性值之前可用的信息量,以及在知道属性值之后可用的信息量。例如,如果你的数据只包含一个类别,你在没有看到任何属性值之前就已经知道类别是什么,信息增益将始终为0。另一方面,如果你一开始没有任何信息(因为你要预测的类别在数据中以相等的数量表示),并且一个属性完美地将数据分成各个类别,那么它的信息增益将为1。

在这种情况下需要注意的重要一点是,信息增益是一个纯粹的信息论度量,它不考虑任何实际的分类算法

包装方法的不同之处在于,它不从信息论的角度分析属性和目标,而是使用实际的分类算法来构建一个使用属性子集的模型,然后评估该模型的性能。接着它尝试不同的属性子集,并重复同样的过程。训练模型表现出最佳经验性能的子集获胜。

这两种方法会给你不同结果的原因有很多(此列表并非详尽):

  • 分类算法可能无法利用属性所能提供的所有信息。
  • 分类算法可能在内部实现了自己的属性选择(例如决策树/森林学习器会这样做),这会考虑比属性选择方法更小的子集。
  • 单个属性可能没有信息性,但它们的组合可能是有信息的(例如,单独的ab可能没有信息,但a*b可能有信息)。属性选择不会发现这一点,因为它是孤立地评估属性的,而分类算法可能能够利用这一点。
  • 属性选择不按顺序考虑属性。例如,决策树使用一系列属性,虽然b本身可能提供信息,但在a(在树的更高位置使用)之后,b可能不再提供额外信息。因此,根据信息增益评估时,b看起来有用,但在“知道”a的树中不会被使用。

在实践中,通常使用包装方法进行属性选择是一个更好的主意,因为它考虑了你想要使用的实际分类器的性能,不同的分类器在信息使用上差异很大。像信息增益这样的分类器无关度量的优势在于它们计算成本更低。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注