使用决策树(通过 ID3 训练)预测是否遇到未知属性值时,是否可以选择随机子节点

数据挖掘 算法 决策树
2022-02-13 06:14:51

我正在编写一个用 ID3 算法从头开始训练的决策树。我希望能够对连续数据进行训练和分类,因此我实施了 k-means 聚类并缩小了任何输入训练或预测数据的值范围。

但是,我遇到了一个问题,即在训练过程中没有遇到的属性值,在树的某个深节点中,但在更远的地方存在。具有此特定属性值的所有数据点可能最终都位于树的不同分支上。

所以为了“解决”这个问题,每当遇到一个节点的未知属性值时,我都会将它发送到一个随机的现有分支。

使用 iris 随机拆分 85%-15% 的训练测试数据,我得到了 95.45% 的准确率。

这是一种可以接受的方法还是我在这里做错了什么?

这是代码:https ://github.com/jamalmoir/ml_components/blob/master/ml_components/models/decision_tree.py

谢谢

1个回答

您的叶节点是否返回概率分布而不是单个类值,例如到达该节点的大多数训练实例类?如果是这样,更好的方法是沿着每个子路径发送测试实例,并对叶子返回的概率分布进行平均。

您在虹膜数据上的 95.45% 的好分数向我表明,在这个例子中这不是一个非常重要的细节。尝试一些更具挑战性的数据集,看看它是否有所作为。