Reptree (WEKA),只对数值属性的值排序一次

gug*_*n1c 5 algorithm machine-learning decision-tree weka

我正在使用来自weka的Reptree算法。这个算法没有详细的文档,只有:

快速决策树学习器。使用信息增益/方差减少来构建决策/回归树,并使用减少错误修剪(使用反向拟合)对其进行修剪。仅对数值属性的值排序一次。缺失值通过将相应的实例分成几部分来处理(即在 C4.5 中)。

任何人都可以解释一下,这是什么意思:“仅对数字属性的值进行一次排序。”

我正在尝试重新实现这个算法,但仍然没有得到接近的结果。

谢谢

卢博米尔

Pet*_*erN 4

我最近一直在寻找关于 Weka 的 RepTree 的相同答案,并且偶然发现了这篇文章,我无法在网上找到足够的答案,所以我打开了源代码并深入研究。

“仅对数字属性的值进行一次排序。” 意味着该算法在运行开始时对数据集中的所有数字字段进行一次排序,然后使用排序后的列表来计算每个树节点中的正确分割。

通过阅读源代码,我大致了解了该算法的工作原理:

1)对于非数字(离散)的分类,它使用具有减少错误修剪的常规决策树[ http://www.stat.cmu.edu/~ryantibs/datamining/lectures/23-tree.pdf] 它最大化熵值,您可以在 weka.core.ContingencyTables - entropyConditionedOnRows(double[][] matrix) 下的源代码中看到确切的方法实现

2) 对于数值分类,变化在于它最小化了总方差。

另外,对我来说,弄清楚输出树非常令人困惑,特别是在数字分类中,这个叶子输出意味着什么:

年数 >= 9.03 : 4.64 (8/0.68) [8/6.76]

1)在非数字(离散)分类中,“:”之后的第一个数字是树的分类值,()括号中的第一个数字是该叶子下的训练集中正确分类的实例的数量,第二个数字是number 是叶子下但具有不同分类值的实例数量,而 [] 括号中的第一个数字是剪枝集中正确分类的数量,第二个数字是错误分类的数量。[ http://weka.8497.n7.nabble.com/about-REPtree-td15188.html]

2)在数字分类中,这个输出有其他含义。“:”之后的第一个数字是训练集中属于该叶子的样本的平均值 (x_mean),() 括号中的第一个数字是属于该叶子的值的权重 -k- (权重表示我从代码中计算出的样本数),而第二个值是样本的方差,即 sum_i_from_1_to_k((x_i-x_mean)^2)/k。在 [] 括号中,第一个是剪枝 -L- 集中属于该叶子的样本数量,而第二个数字是相对于训练集中的 x_mean 的方差,即 sum_i_from_1_to_L((y_i-x_mean)^2 )/L

希望这可以帮助