如何处理C4.5(J48)决策树中的缺失属性值?

6
如何在Weka的C4.5(J48)决策树中处理缺失的特征属性值?缺失值问题在训练和分类时都会出现。
  1. 如果训练实例中存在缺失值,我需要为该特征放置一个“?”值,这样理解是否正确?

  2. 假设我能够成功地构建决策树并从Weka的树形结构中创建自己的C++或Java树代码。在分类时,如果我要对新实例进行分类,那么对于具有缺失值的特征,我应该放什么值?如何穿过具有未知取值的决策节点下降到子节点?

对于处理缺失值,使用朴素贝叶斯算法是否更好?我只需要为它们分配非常小的非零概率,是吗?
2个回答

9

来自华盛顿大学Pedro Domingos的机器学习课程:

以下是Pedro推荐用于缺失值A的三种方法:

  • 在分配到节点n的其他示例中,分配A的最常见值
  • 在具有相同目标值的其他示例中,分配A的最常见值
  • A的每个可能值v_i分配概率p_i;将示例的一小部分分配给树中的每个后代。

幻灯片和视频现在可以在此处查看。


非常好的信息。谢谢。我会去看一下视频。 - stackoverflowuser2010
“按节点n排序”,你的意思是在节点n的其他样本中进行排序,对吗? - ajfbiw.s
我不确定我是否理解了最后一点。当前训练示例中的值可以是“X”或“Y”,但属性不能具有两个带有两个概率的值,对吗?那么这是什么意思呢? - n1try
仍然是X或Y。假设您有0.9的X可能性和0.1的Y可能性(基于具有该属性的所有训练示例)。然后,您使用随机函数返回[0,1)内的浮点数。如果该值小于0.9,则分配X;否则,分配Y。这有意义吗? - greeness

2
另一种方法是将缺失值保留为“?”并不在信息增益计算中使用它。在分类过程中,任何节点都不应该有未知的值,因为在信息增益步骤中已经忽略了它们。要进行分类,我认为您可以将缺失值视为未知,并在特定属性上对其进行分类时不删除它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接