我正在.net
中实施C4.5 algorithm,但我不清楚它是如何处理“连续(数字)数据”的。有人可以给我一个更详细的解释吗?
答案 0 :(得分:3)
对于连续数据,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的分割。这意味着你的分裂应该比不分裂更纯粹。如果无法提高结果节点的纯度,请不要拆分它。您还可以使用最小节点大小,这样您就不会得到只包含一个样本的左或右节点。