为什么信息增益功能选择得分为零

dip*_*296 2 artificial-intelligence machine-learning weka feature-selection

我有一个数据集,我使用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
Run Code Online (Sandbox Code Playgroud)

这告诉我所有得分为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
Run Code Online (Sandbox Code Playgroud)

我想了解,包装器子集评估方法强烈考虑信息增益忽略的属性是什么原因?

Lar*_*off 10

要了解发生了什么,首先要了解两种特征选择方法正在做什么.

属性的信息增益告诉您属性为您提供的分类目标的信息量.也就是说,它测量您知道属性值的情况与您不知道属性值的情况之间的信息差异.信息的常用度量是香农熵,尽管任何允许量化信息的信息内容的措施都可以.

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

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

这就是包装器方法的不同之处.它不是从信息理论的角度分析属性和目标,而是使用实际的分类算法来构建具有属性子集的模型,然后评估该模型的性能.然后它尝试不同的属性子集并再次执行相同的操作.受训模型表现出最佳经验绩效的子集获胜.

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

  • 分类算法可能无法利用属性可以提供的所有信息.
  • 分类算法可以在内部实现其自己的属性选择(例如决策树/森林学习者这样做),其考虑比属性选择将产生的更小的子集.
  • 个别属性可能不是提供信息,但它们的组合可能是(例如,可能a并且b没有单独的信息,但a*b另一方面,可能).属性选择不会发现这一点,因为它会孤立地评估属性,而分类算法可能能够利用它.
  • 属性选择不会按顺序考虑属性.例如,决策树使用一系列属性,虽然b可以自己提供信息,但它可能不提供除a树的更高信息之外的任何信息.因此b,在根据信息增益进行评估时看起来很有用,但不会被a首先"知道"的树使用.

实际上,使用包装器进行属性选择通常更好,因为它会考虑您要使用的实际分类器的性能,并且不同的分类器在信息使用方面差异很大.分类器不可知措施(如信息增益)的优势在于它们的计算成本更低.