关于 DecisionTreeClassifier 的问题

Question regarding DecisionTreeClassifier

我正在用过去的数据制作一个可解释的模型,根本不会用它来预测未来。

在数据中,有 100 个 X 变量和一个 Y 二进制 class 并试图解释 X 对 Y 二进制(0 或 1)的影响).

我想到了 DecisionTree classifier,因为它清楚地向我们展示了如何根据每个变量的价值标准做出决策

这是我的问题:

  1. 是否有必要将 X 数据拆分为 X_test、X_train,即使我不打算使用此模型进行预测? (我不想为测试浪费数据,因为我只是翻译)

  2. 在我拆分数据和训练模型后,只有少数值获得特征重要性值(例如 100 个 X 变量中的 3 个),其余值变为零。因此,只有几家分店。我不知道为什么会这样。

如果这里不适合问这样的问题,请告诉我。

谢谢。

  1. 不,这不是必需的,但它是一种检查您的决策树是否过度拟合的方法,只需记住输入值和 classes 或实际学习其背后的模式。我建议您研究一下交叉验证,因为它不 'waste' 任何数据并对所有数据进行训练和测试。如果您需要我进一步解释,请发表评论。

  2. 获得任意数量的重要功能都不是问题,因为它完全取决于您的数据。
    示例: 假设我想制作一个模型来判断一个数字是否可以被 69 整除(我的 Y class)。
    我的 X 变量可以被 2、3、5、7、9、13、17、19 和 23 整除。 如果我正确地训练模型,我将只有 3 和 23 的特征重要性非常高,而其他一切都应该具有非常低的特征重要性。
    因此,我的决策树(如果使用像随机森林/XGBoost 这样的集成模型的树)将有更少的分裂数量。 因此,重要功能的数量较少是正常的,不会造成任何问题。

  1. 不,不是。但是,我仍然会分开训练测试和单独测量性能。虽然一个可解释的模型很好,但如果它是一个垃圾模型,它就明显不那么好。在考虑解释之前,我会确保它至少具有合理的性能,此时不需要拆分。
  2. 重要特征的数量取决于数据。随机森林在这方面也做得很好。无论如何,分支越少越好。你想要一棵更简单的树,这样更容易解释。