我正在使用过去的数据构建一个可解释的模型,并且完全不会用于未来的预测。
数据中包含一百个X变量和一个Y二元类,我试图解释X变量如何影响Y的二元值(0或1)。
我选择了DecisionTree分类器,因为它能清楚地展示每个变量的数值标准是如何做出决策的。
以下是我的问题:
-
即使我不会用这个模型进行预测,是否有必要将X数据分成X_test和X_train?(因为我只是在解释,所以不想浪费数据用于测试)
-
在分割数据并训练模型后,只有少数几个值获得了特征重要性值(比如100个X变量中的3个),其余的都为零。因此,决策树只有少数几个分支。我不知道为什么会发生这种情况。
如果这里不是提问这种问题的合适地方,请告诉我。
谢谢。
回答:
-
没有必要,但这是一种检查你的决策树是否过拟合的方法,看它是仅仅记住了输入值和类别,还是真正学会了背后的模式。我建议你考虑使用交叉验证,因为它不会‘浪费’任何数据,并且会在所有数据上进行训练和测试。如果你需要我进一步解释,请留言。
-
获得任何数量的重要特征都不是问题,因为这完全取决于你的数据。
例如:假设我想构建一个模型来判断一个数字是否能被69整除(我的Y类)。
我的X变量包括能否被2,3,5,7,9,13,17,19和23整除。如果我正确地训练了模型,我会发现只有3和23的特征重要性非常高,其他的特征重要性应该非常低。
因此,我的决策树(如果使用像随机森林/XGBoost这样的集成模型,则为树)会有较少的分支。所以,拥有较少的重要特征是正常的,不会造成任何问题。