我有一个数据集,我在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。
在这种情况下需要注意的重要一点是,信息增益是一个纯粹的信息论度量,它不考虑任何实际的分类算法。
包装方法的不同之处在于,它不从信息论的角度分析属性和目标,而是使用实际的分类算法来构建一个使用属性子集的模型,然后评估该模型的性能。接着它尝试不同的属性子集,并重复同样的过程。训练模型表现出最佳经验性能的子集获胜。
这两种方法会给你不同结果的原因有很多(此列表并非详尽):
- 分类算法可能无法利用属性所能提供的所有信息。
- 分类算法可能在内部实现了自己的属性选择(例如决策树/森林学习器会这样做),这会考虑比属性选择方法更小的子集。
- 单个属性可能没有信息性,但它们的组合可能是有信息的(例如,单独的
a
和b
可能没有信息,但a*b
可能有信息)。属性选择不会发现这一点,因为它是孤立地评估属性的,而分类算法可能能够利用这一点。 - 属性选择不按顺序考虑属性。例如,决策树使用一系列属性,虽然
b
本身可能提供信息,但在a
(在树的更高位置使用)之后,b
可能不再提供额外信息。因此,根据信息增益评估时,b
看起来有用,但在“知道”a
的树中不会被使用。
在实践中,通常使用包装方法进行属性选择是一个更好的主意,因为它考虑了你想要使用的实际分类器的性能,不同的分类器在信息使用上差异很大。像信息增益这样的分类器无关度量的优势在于它们计算成本更低。