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

时间:2012-11-16 23:02:28

标签: machine-learning data-mining weka decision-tree classification

使用Weka的C4.5(J48)决策树处理缺失的要素属性值的最佳方法是什么?在训练和分类过程中都会出现缺失值的问题。

  1. 如果培训实例中缺少值,我是否正确假设我放置了'?'功能的价值?

  2. 假设我能够成功构建决策树,然后从Weka的树结构中用C ++或Java创建自己的树代码。在分类时,如果我尝试对新实例进行分类,我会为具有缺失值的功能赋予什么价值?如何将树下降到我具有未知值的决策节点?

  3. 使用Naive Bayes会更好地处理缺失值吗?我只想为它们分配一个非常小的非零概率,对吧?

2 个答案:

答案 0 :(得分:8)

佩德罗多明戈斯在华盛顿大学的ML课程:

以下是佩德罗建议的A缺失值的三种方法:

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

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

答案 1 :(得分:2)

另一种方法是将缺失值保留为“?”,而不是将其用于信息增益计算。在分类期间,任何节点都不应具有未知值,因为您在信息获取步骤中忽略了该节点。对于分类,我认为您只是将缺失值视为未知,并且在对该特定属性进行分类时不要删除它。