关于CART模型未使用训练集全部特征的技术问询
关于CART决策树未使用全部特征的解释
兄弟,这其实完全是CART决策树的正常特性,不用纠结是不是哪里出问题了!我来给你拆解下原因:
- CART的贪心分裂逻辑:CART是采用贪心分裂策略的决策树算法,每次节点分裂时,只会选择能让当前节点不纯度(impurity)下降最多的特征——不管你用
fit()传入多少个特征,那些从始至终都没法成为当前最优分裂点的特征,自然不会出现在最终的树结构里。这本质上是算法自动帮你做了一轮特征筛选。 - Gini和Entropy准则的差异:这两种不纯度的计算方式本身就有区别:Gini是基于平方概率的不纯度,Entropy是基于信息熵的不纯度。它们对“哪个特征更优”的判断逻辑略有不同,所以最终选中的特征集合、数量不一样是完全合理的——Gini选出3个最有用的,Entropy选出4个,这都是算法对应准则下的最优选择。
- 自研模型和sklearn结果一致:你自己实现的CART也得到了同样的结果,这反而说明不是代码bug,完全是算法本身的行为逻辑导致的,从侧面验证了结果的合理性。
另外你提到测试集结果符合预期,那这就更没问题了——模型已经自动筛选出了对任务最有效的特征,没必要强求用到全部6个特征。
内容的提问来源于stack exchange,提问作者Scorpionk
相关产品推荐
相关产品推荐

