关于DecisionTreeClassifier的问题

我正在使用过去的数据构建一个可解释的模型,并且完全不会用于未来的预测。

数据中包含一百个X变量和一个Y二元类,我试图解释X变量如何影响Y的二元值(0或1)。

我选择了DecisionTree分类器,因为它能清楚地展示每个变量的数值标准是如何做出决策的。

以下是我的问题:

  1. 即使我不会用这个模型进行预测,是否有必要将X数据分成X_test和X_train?(因为我只是在解释,所以不想浪费数据用于测试)

  2. 在分割数据并训练模型后,只有少数几个值获得了特征重要性值(比如100个X变量中的3个),其余的都为零。因此,决策树只有少数几个分支。我不知道为什么会发生这种情况。

如果这里不是提问这种问题的合适地方,请告诉我。

谢谢。


回答:

  1. 没有必要,但这是一种检查你的决策树是否过拟合的方法,看它是仅仅记住了输入值和类别,还是真正学会了背后的模式。我建议你考虑使用交叉验证,因为它不会‘浪费’任何数据,并且会在所有数据上进行训练和测试。如果你需要我进一步解释,请留言。

  2. 获得任何数量的重要特征都不是问题,因为这完全取决于你的数据。
    例如:假设我想构建一个模型来判断一个数字是否能被69整除(我的Y类)。
    我的X变量包括能否被2,3,5,7,9,13,17,19和23整除。如果我正确地训练了模型,我会发现只有3和23的特征重要性非常高,其他的特征重要性应该非常低。
    因此,我的决策树(如果使用像随机森林/XGBoost这样的集成模型,则为树)会有较少的分支。所以,拥有较少的重要特征是正常的,不会造成任何问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注