【问题标题】:Question regarding DecisionTreeClassifier关于决策树分类器的问题
【发布时间】:2021-05-14 04:01:14
【问题描述】:
我正在用过去的数据制作一个可解释的模型,并且根本不打算将它用于未来的预测。
在数据中,有一百个 X 变量和一个 Y 二进制类,并试图解释 X 对 Y 二进制(0 或 1)的影响。
我提出了决策树分类器,因为它清楚地向我们展示了如何根据每个变量的值标准做出决策
这是我的问题:
-
即使我不打算用这个模型进行预测,是否有必要将 X 数据拆分为 X_test、X_train? (我不想浪费测试数据,因为我只是口译)
-
在我拆分数据并训练模型后,只有少数值获得特征重要性值(例如 100 个 X 变量中的 3 个),其余值归零。因此,只有少数几家分店。我不知道为什么会这样。
如果这里不适合提出此类问题,请告诉我。
谢谢。
【问题讨论】:
标签:
python
machine-learning
decision-tree
【解决方案1】:
-
不,这不是必需的,但它是一种检查决策树是否过度拟合并仅记住输入值和类或实际学习其背后模式的方法。我建议您研究交叉验证,因为它不会“浪费”任何数据,并且不会对所有数据进行训练和测试。如果您需要我进一步解释,请发表评论。
-
获取任意数量的重要功能都不是问题,因为它完全取决于您的数据。
示例:
假设我想制作一个模型来判断一个数字是否可以被 69 整除(我的 Y 类)。
我的 X 变量可以被 2、3、5、7、9、13、17、19 和 23 整除。
如果我正确地训练模型,我将获得只有 3 和 23 的特征重要性非常高,而其他一切都应该具有非常低的特征重要性。
因此,我的决策树(如果使用 Random Forest / XGBoost 等集成模型的树)将具有更少的拆分数量。
因此,重要特征的数量较少是正常的,不会造成任何问题。
【解决方案2】:
- 不,不是。但是,我仍然会分开训练测试并分别测量性能。虽然可解释的模型很好,但如果它是一个废话模型,它就不会那么好了。在考虑解释之前,我会确保它至少具有合理的性能,此时不需要拆分。
- 重要特征的数量取决于数据。随机森林也很好地提供了这一点。无论如何,分支越少越好。您想要一个更简单、更容易解释的树。