【发布时间】:2013-03-15 19:05:38
【问题描述】:
我在.net 中实现C4.5 algorithm,但是我不清楚它如何处理“连续(数字)数据”。谁能给我更详细的解释?
【问题讨论】:
标签: .net algorithm decision-tree continuous c4.5
我在.net 中实现C4.5 algorithm,但是我不清楚它如何处理“连续(数字)数据”。谁能给我更详细的解释?
【问题讨论】:
标签: .net algorithm decision-tree continuous c4.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 的分割。这意味着你的分裂应该比不分裂更纯粹。如果您不能增加结果节点的纯度,则不要拆分它。您还可以设置一个最小节点大小,这样您就不会导致左侧或右侧节点仅包含一个样本。
【讨论】: