我正在尝试实现ID3算法,并查看伪代码:

(来源)
我对下面这句话感到困惑:
如果examples_vi是空的,那么在示例中创建一个带有label = TargegetAttribute中最常见值的叶节点。
除非我错过了什么,否则这不是最普通的课吗?
也就是说,如果我们不能分割属性值上的数据,因为没有任何样本接受特定属性的值,那么我们在所有样本中取最常见的类并使用它?
而且,这不就像随机选择一个类一样好吗?
训练集没有告诉我们属性值和类标签之间的关系.
发布于 2015-12-28 13:25:50
( 1)除非我错过了什么,否则这不是最常见的课吗?
你说得对,课文也是这么说的。查看顶部的函数描述:
Target_Attribute is the attribute whose value is to be predicted by the tree因此,Target_Attribute 的值是(类/标签)。
2)也就是说,如果我们不能分割属性值上的数据,因为没有任何样本为特定属性获取该值,那么我们会在所有样本中选择最常见的类并使用它?
是的,但不是中的所有样本在整个数据集中,而是在树/递归中达到这个点的样本。(ID3函数是递归的,因此当前的Examples实际上是调用方的Examples_vi )
3)而且,这不就像选一个随机的类一样好吗?训练集没有告诉我们属性值和类标签之间的关系.
不,选择一个随机的类(每个班级的机会均等)并不是一回事。因为输入通常有一个不平衡的类分布(这种分布在许多文本中通常被称为先验分布),所以您可能有99%的示例是正的,而只有1%的是负的。因此,当你真的没有任何信息来决定某个输入的结果时,预测最可能的类是有意义的,这样你就有最大的可能是正确的。这将提高分类器对未见数据的准确性,但前提是培训数据中的类分布与未见数据中的类分布相同。
当Attributes为空(请参阅伪代码文本中的4行)时,这种解释也适用于基本情况;当我们没有信息时,我们只报告手头数据中最常见的类。
发布于 2016-10-19 03:40:47
如果您从未实现代码(ID3),但仍想了解更多的处理细节,我建议您阅读本文:
用Python构建决策树 --这里是文件的源代码:决策树源代码 --本文有一个示例或使用您的书中的示例(用相同的格式替换"data“文件)。您可以在eclipse中调试它(带有一些断点),以检查算法运行期间的属性值。仔细看一下,你会更好地理解ID3的。
https://stackoverflow.com/questions/34493957
复制相似问题