为什么信息增益特征选择给出零分
Why Information gain feature selection gives zero scores
我有一个数据集,我在其中使用了 WEKA 中的信息增益特征选择方法来获取重要特征。下面是我得到的输出。
Ranked attributes:
0.97095 1 Opponent
0.41997 11 Field_Goals_Made
0.38534 24 Opp_Free_Throws_Made
0.00485 4 Home
0 8 Field_Goals_Att
0 12 Opp_Total_Rebounds
0 10 Def_Rebounds
0 9 Total_Rebounds
0 6 Opp_Field_Goals_Made
0 7 Off_Rebounds
0 14 Opp_3Pt_Field_Goals_Made
0 2 Fouls
0 3 Opp_Blocks
0 5 Opp_Fouls
0 13 Opp_3Pt_Field_Goals_Att
0 29 3Pt_Field_Goal_Pct
0 28 3Pt_Field_Goals_Made
0 22 3Pt_Field_Goals_Att
0 25 Free_Throws_Made
这告诉我所有得分为 0 的特征都可以忽略,对吗?
现在,当我在 WEKA 中尝试 Wrapper 子集评估时,我得到了在信息获取方法中被忽略的选定属性(即其分数为 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
我想了解,wrapper子集评估方法强烈考虑信息增益忽略的属性是什么原因?
在过滤技术中(这里是信息增益),特征被认为是彼此隔离的,因此当单独考虑的 IG 是 0
但在某些情况下,一个功能需要另一个功能才能实现
提高准确性,因此当与其他功能一起考虑时,它会产生预测值。
希望这对您有所帮助并且准时:)
要了解发生了什么,首先了解这两种特征选择方法在做什么会有所帮助。
属性的 信息增益 告诉您属性为您提供了多少关于 class化目标的信息。也就是说,它衡量的是知道属性值的情况和不知道属性值的情况之间的信息差异。信息的常用度量是 Shannon entropy,尽管任何允许量化消息的信息内容的度量都可以。
所以信息增益取决于两件事:在知道属性值之前有多少信息可用,以及之后有多少信息可用。例如,如果您的数据仅包含一个 class,您已经知道 class 是什么而无需看到任何属性值,并且信息增益将始终为 0。另一方面,如果您有没有信息开始(因为你想要预测的 classes 在你的数据中以相等的数量表示),并且一个属性将数据完美地分割成 classes,它的信息增益将为 1 .
在此上下文中需要注意的重要一点是,信息增益是一种纯粹的信息理论度量,它不考虑任何实际的class化算法。
这是 包装器方法 的不同之处。它不是从信息论的角度分析属性和目标,而是使用 实际的 class 化算法 构建具有属性子集的模型,然后评估这个模型的性能。然后它会尝试不同的属性子集并再次执行相同的操作。经过训练的模型表现出最佳经验性能的子集获胜。
这两种方法会给您带来不同结果的原因有很多(此列表并不详尽):
- class化算法可能无法利用属性可以提供的所有信息。
- class化算法可能会在内部实现自己的属性选择(例如决策 tree/forest 学习者这样做),它考虑的子集比属性选择产生的子集要小。
- 单个属性可能没有信息,但它们的组合可能(例如
a
和 b
单独没有信息,但另一方面,a*b
可能).属性选择不会发现这一点,因为它孤立地评估属性,而 class化算法可能能够利用这一点。
- 属性选择不按顺序考虑属性。例如,决策树使用一系列属性,虽然
b
可以提供其自身的信息,但它可能不提供除树中更高层使用的 a
之外的任何信息。因此 b
在根据信息增益进行评估时会显得有用,但不会被首先 "knows" a
的树使用。
在实践中,使用包装器进行属性选择通常是更好的主意,因为它考虑了您要使用的实际 classifier 的性能,并且不同的 classifier 差异很大在信息的使用上。 class像信息增益这样的不可知论者度量的优点是它们的计算成本要低得多。
我有一个数据集,我在其中使用了 WEKA 中的信息增益特征选择方法来获取重要特征。下面是我得到的输出。
Ranked attributes:
0.97095 1 Opponent
0.41997 11 Field_Goals_Made
0.38534 24 Opp_Free_Throws_Made
0.00485 4 Home
0 8 Field_Goals_Att
0 12 Opp_Total_Rebounds
0 10 Def_Rebounds
0 9 Total_Rebounds
0 6 Opp_Field_Goals_Made
0 7 Off_Rebounds
0 14 Opp_3Pt_Field_Goals_Made
0 2 Fouls
0 3 Opp_Blocks
0 5 Opp_Fouls
0 13 Opp_3Pt_Field_Goals_Att
0 29 3Pt_Field_Goal_Pct
0 28 3Pt_Field_Goals_Made
0 22 3Pt_Field_Goals_Att
0 25 Free_Throws_Made
这告诉我所有得分为 0 的特征都可以忽略,对吗?
现在,当我在 WEKA 中尝试 Wrapper 子集评估时,我得到了在信息获取方法中被忽略的选定属性(即其分数为 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
我想了解,wrapper子集评估方法强烈考虑信息增益忽略的属性是什么原因?
在过滤技术中(这里是信息增益),特征被认为是彼此隔离的,因此当单独考虑的 IG 是 0
但在某些情况下,一个功能需要另一个功能才能实现 提高准确性,因此当与其他功能一起考虑时,它会产生预测值。
希望这对您有所帮助并且准时:)
要了解发生了什么,首先了解这两种特征选择方法在做什么会有所帮助。
属性的 信息增益 告诉您属性为您提供了多少关于 class化目标的信息。也就是说,它衡量的是知道属性值的情况和不知道属性值的情况之间的信息差异。信息的常用度量是 Shannon entropy,尽管任何允许量化消息的信息内容的度量都可以。
所以信息增益取决于两件事:在知道属性值之前有多少信息可用,以及之后有多少信息可用。例如,如果您的数据仅包含一个 class,您已经知道 class 是什么而无需看到任何属性值,并且信息增益将始终为 0。另一方面,如果您有没有信息开始(因为你想要预测的 classes 在你的数据中以相等的数量表示),并且一个属性将数据完美地分割成 classes,它的信息增益将为 1 .
在此上下文中需要注意的重要一点是,信息增益是一种纯粹的信息理论度量,它不考虑任何实际的class化算法。
这是 包装器方法 的不同之处。它不是从信息论的角度分析属性和目标,而是使用 实际的 class 化算法 构建具有属性子集的模型,然后评估这个模型的性能。然后它会尝试不同的属性子集并再次执行相同的操作。经过训练的模型表现出最佳经验性能的子集获胜。
这两种方法会给您带来不同结果的原因有很多(此列表并不详尽):
- class化算法可能无法利用属性可以提供的所有信息。
- class化算法可能会在内部实现自己的属性选择(例如决策 tree/forest 学习者这样做),它考虑的子集比属性选择产生的子集要小。
- 单个属性可能没有信息,但它们的组合可能(例如
a
和b
单独没有信息,但另一方面,a*b
可能).属性选择不会发现这一点,因为它孤立地评估属性,而 class化算法可能能够利用这一点。 - 属性选择不按顺序考虑属性。例如,决策树使用一系列属性,虽然
b
可以提供其自身的信息,但它可能不提供除树中更高层使用的a
之外的任何信息。因此b
在根据信息增益进行评估时会显得有用,但不会被首先 "knows"a
的树使用。
在实践中,使用包装器进行属性选择通常是更好的主意,因为它考虑了您要使用的实际 classifier 的性能,并且不同的 classifier 差异很大在信息的使用上。 class像信息增益这样的不可知论者度量的优点是它们的计算成本要低得多。