我正在使用weka的Reptree算法。此算法没有详细的文档,只有:
快速决策树学习者。使用信息增益/方差减少构建决策/回归树,并使用减少错误的修剪(使用反向修剪)对其进行修剪。仅对数字属性的值进行一次排序。通过将相应的实例拆分成片段来处理缺失的值(即在C4.5中)。
任何人都可以解释一下我的意思是:"只对数字属性的值进行一次排序。"
我正在尝试重新实现此算法,但仍然没有得到更接近的结果。
谢谢
卢博米尔
答案 0 :(得分:3)
我一直在寻找关于Weka的RepTree的相同答案我自己最近偶然发现了这篇文章,我无法在网上找到足够的答案,所以我打开了源代码并潜入了。
"仅对数字属性的值进行一次排序。"表示算法在运行开始时对数据集中的所有数字字段进行一次排序,然后使用排序列表计算每个树节点中的正确分割。
通过阅读源代码,我能够弄清楚算法的工作原理:
1)对于非数字(离散)的分类,它使用具有减少错误修剪的常规决策树 [http://www.stat.cmu.edu/~ryantibs/datamining/lectures/23-tree.pdf] 它最大化熵值,你可以在weka.core.ContingencyTables下看到源代码中的确切方法实现 - entropyConditionedOnRows(double [] [] matrix)
2)对于数字值的分类,更改是最小化总方差。
另外,对我来说,弄清楚输出树是非常困惑的,特别是在数字分类中,这个叶输出意味着什么:
years_since> = 9.03:4.64(8 / 0.68)[8 / 6.76]
1)在非数字(离散)分类中,'之后的第一个数字:'是树的分类值,()括号中的第一个数字是来自该叶子下的训练集的正确分类的实例的数量,第二个数字是叶子下但具有不同分类值的实例数量,在[]括号中,第一个数字是修剪集合中正确分类的数量,第二个数字是错误的分类。 [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
希望这有帮助