如何使用交叉验证来修剪决策树

数据挖掘 决策树 交叉验证
2021-09-24 07:42:48

据我了解,可以使用交叉验证来帮助找到分类或回归树的最佳修剪,例如,在Matlab中实现。

关于这个过程,我不明白以下内容。由于每个交叉验证折叠都有随机数据,因此适合每个数据集的树可能不同并且具有不同的深度。那么如何才能找到所有这些树的最佳修剪水平呢?

2个回答

我不知道这是如何在matlab中实现的。我知道有些包使用交叉验证来决定是否种植树。很简单,他们根据评估决定是否发展。

(请注意,很多包称为修剪是:在训练期间,它们用一些分数标准标记分支,然后如果用户需要,然后删除。)

就个人而言,我使用没有此功能的 sklearn。所以,我只是对 的几个值进行网格搜索,max_depth并使用任何可以最大限度地提高准确性或我想要的分数。

开发训练集、验证集和测试集。训练集包含 40% 的观察值,验证和测试集包含 30% 的每个观察值(假设您首先有一个相当大的数据集)。开发 5 个决策树,每个决策树都有您想要测试的不同参数。在训练集上运行这些决策树,然后在验证集上运行,看看哪个决策树在验证集上具有最低的 ASE(平均平方误差)。如果您愿意,您可以使用不同的验证标准,但我更喜欢 ASE。如果您觉得在验证集上使用 ASE 时表现最好的树仍然可以表现得更好,那么返回并调整该树的参数并在训练和验证集上重新运行。一旦你满意了,就使用你的最终树并预测你的测试集。