4

I am implementing the C4.5 algorithm in .net, however I don't have clear idea of how it deals "continuous (numeric) data". Could someone give me a more detailed explanation?

4

1 回答 1

5

对于连续数据,C4.5 使用阈值,其中小于阈值的所有内容都位于左侧节点,大于阈值的所有内容都位于右侧节点。问题是如何根据您提供的数据创建该阈值。诀窍是按连续变量升序对数据进行排序。然后迭代数据,在数据成员之间选择一个阈值。例如,如果属性 x 的数据是:

0.5, 1.2, 3.4, 5.4, 6.0

您首先选择一个介于 0.5 和 1.2 之间的阈值。在这种情况下,我们可以只使用平均值:0.85。现在计算你的杂质:

H(x < 0.85) = H(s) - l/N * H(x<0.85) - r/N * H(x>0.85).

其中l是左节点的样本数,r是右节点的样本数,N是被分裂节点的总样本数。在上面的示例中,x>0.85 作为我们的拆分,然后 l=1、r=4 和 N=5。

记住计算出的杂质差,现在计算 2 和 3 之间的分裂(即 x>2.3)。对每个拆分重复此操作(即 n-1 个拆分)。然后选择最小化 H 的分割。这意味着你的分裂应该比不分裂更纯粹。如果您不能增加结果节点的纯度,则不要拆分它。您还可以有一个最小节点大小,这样您就不会得到只包含一个样本的左侧或右侧节点。

于 2013-03-26T04:51:02.153 回答