c4.5算法缺失值

时间:2017-02-14 06:11:08

标签: algorithm decision-tree c4.5

C4.5算法如何处理连续间隔的缺失值和属性值?另外,如何修剪决策树?有人可以借助一个例子来解释。

1 个答案:

答案 0 :(得分:1)

假设我们从一个典型的例子中建立了一个决策树,即是否应该根据天气条件打高尔夫球。我们可能有这样的训练数据集:

OUTLOOK | TEMPERATURE | HUMIDITY | WINDY | PLAY
=====================================================
sunny   |      85     |    85    | false | Don't Play
sunny   |      80     |    90    | true  | Don't Play
overcast|      83     |    78    | false | Play
rain    |      70     |    96    | false | Play
rain    |      68     |    80    | false | Play
rain    |      65     |    70    | true  | Don't Play
overcast|      64     |    65    | true  | Play
sunny   |      72     |    95    | false | Don't Play
sunny   |      69     |    70    | false | Play
rain    |      75     |    80    | false | Play
sunny   |      75     |    70    | true  | Play
overcast|      72     |    90    | true  | Play
overcast|      81     |    75    | false | Play
rain    |      71     |    80    | true  | Don't Play

并使用它来构建一个可能如下所示的决策树:

              Outlook
            /  |      \
  overcast /   |sunny  \rain
          /    |        \
     Play   Humidity   Windy
           /   |         |  \
          /    |         |   \
    <=75 /  >75|     true|    \false
        /      |         |     \
     Play  Don'tPlay Don'tPlay  Play
  1. C4.5算法通过返回缺少值的属性分支下的标签的概率分布来处理缺失值。假设我们的测试数据中有一个实例,该实例显示前景为Sunny但没有属性Humidity的值。另外,假设我们的培训数据有 2 个,其展望为SunnyHumidity低于75,标签为Play。此外,假设培训数据具有 3 个实例,其中展望为SunnyHumidity高于75,且标签为Don't Play。因此,对于缺少Humidity属性的测试实例,C4.5算法将返回与[0.4, 0.6]对应的[Play, Don't Play]概率分布。
  2. 假设您已经了解决策树如何使用信息增益通过一组功能来选择在每个级别上分支哪些功能,C4.5算法通过评估信息增益来对连续间隔属性执行相同的过程。每次拆分属性并选择最佳属性。可以在上面的Humidity属性中看到此示例。 C4.5算法通过将其分解为65,70,75,78 ... 90来测试湿度属性提供的信息增益,并发现在75处执行分割提供了最多的信息增益。
  3. C4.5通过将决策树中的子树替换为包含子树的所有决策或提供最小错误的单个决策节点来执行修剪。
  4. 有关更多信息,我建议使用这个优秀的资源来编写自己的决策树和随机森林算法:https://cis.temple.edu/~giorgio/cis587/readings/id3-c45.html