修复决策树的前两级?

数据挖掘 机器学习 r 预测建模 决策树
2021-10-02 22:17:41

我正在尝试构建一个包含 70 个属性的回归树,业务团队希望在其中修复前两个级别,即国家产品类型为此,我有两个建议:

  1. 为国家产品类型的每个组合构建一个单独的树,并相应地使用数据子集并传递到相应的树进行预测。在评论中看到这里。我在国家/地区有 88 个级别,在产品类型中有 3 个级别,因此它将生成 264 棵树。

  2. 构建具有两个变量的基本树,即国家产品类型,具有适当的 cp 值,以生成所有组合作为叶节点 (264)。构建具有其余所有变量的第二棵树,并将树一棵树堆叠在二棵树上作为单个决策树。

我不认为第一个是正确的方法。此外,我被困在如何在第二种方法中堆叠树木,即使它不是正确的方法也很想知道如何实现这一点。

请指导我如何解决这个问题。

2个回答

根据您要使用的树算法,您可以手动构建树的两个第一层。您可以按照此处为 C4.5 树解释的伪代码进行操作。完成此操作后,您可以从数据集中删除这两个特征并为树的其余部分创建树。如果要创建rpart对象,则需要获取源的某些部分,这可能要求更高。根据您使用的树算法,您将只在两个级别上进行二元拆分,因此您只需要构建 4 个单独的树而不是 264 个。请注意,您可能没有最佳决策树,因为在逐步完成前两个级别之后,国家产品类型可能仍然是导致分裂的变量。但是没有看到数据是不可能的。

旁注,解释国家产品类型不是决策树顶部最明智的变量的业务可能很有价值。有时,教育最终用户比强迫机器学习做一些不准确的事情更好。以我的经验,最终用户更喜欢有一个正确的解决方案,而不是一个有效的解决方案,因为人们有直觉认为它应该以某种方式存在。

如果你愿意使用 Python,我认为你可以相当自动地做到这一点。一个名为auto_ml * 的库有一个名为categorical ensembling的功能,您可以在其中明确地说“我想要为这个功能的每个级别构建一个模型”。如果您制作了一个国家产品类型的功能并将其用作您的类别,那么其余的应该很容易。

*披露:我对 auto_ml 做了一些小贡献。它是 MIT 许可下的 FOSS。