machine-learning - 为什么信息增益特征选择给出零分

标签 machine-learning artificial-intelligence 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

这告诉我所有得分为 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

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

最佳答案

要了解正在发生的情况,首先了解这两种特征选择方法正在做什么会有所帮助。

属性的信息增益告诉您该属性为您提供了多少关于分类目标的信息。也就是说,它衡量的是您知道属性值和不知道属性值的情况之间的信息差异。信息的常见度量是 Shannon entropy ,尽管任何允许量化消息信息内容的措施都可以。

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

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

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

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

  • 分类算法可能无法利用属性可以提供的所有信息。
  • 分类算法可以在内部实现自己的属性选择(例如决策树/森林学习器就是这样做的),该算法考虑比属性选择将产生的子集更小的子集。
  • 单个属性可能无法提供信息,但它们的组合可能会提供信息(例如,ab 可能单独没有信息,但 a*b 另一方面,可能)。属性选择不会发现这一点,因为它单独评估属性,而分类算法可能能够利用这一点。
  • 属性选择不按顺序考虑属性。例如,决策树使用一系列属性,虽然 b 可以自己提供信息,但除了 a 之外,它可能不会提供任何信息,而 a 在更高层中使用那个树。因此,当根据信息增益进行评估时,b 会显得有用,但不会被首先“知道”a 的树使用。

在实践中,使用包装器进行属性选择通常是一个更好的主意,因为它考虑了您要使用的实际分类器的性能,并且不同的分类器在信息的使用方面差异很大。信息增益等与分类器无关的度量的优点是它们的计算成本要低得多。

关于machine-learning - 为什么信息增益特征选择给出零分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425824/

相关文章:

python - 使用 levenahtein 将大文件聚类为 3 组

apache-spark - Spark ml 2.0 - 朴素贝叶斯 - 如何确定每个类别的阈值

prolog - 在这种情况下,当 gprolog 显示 "true?"而不是 "yes"时,这意味着什么?

machine-learning - 如何使用 Weka 中的新训练数据更新训练模型 (weka.classifiers.functions.MultilayerPerceptron)?

ios - 如何使用 Core ML 3 的 `Linked Model` 特性?

java - 单层感知器训练?

artificial-intelligence - 子节点的贝叶斯网络概率

在 Clojure 中实现的 A* 搜索的性能

java - 无法测试神经网络的收敛性

python - 为什么 Weka RandomForest 给我的结果与 Scikit RandomForestClassifier 不同?