因为决策树在进行节点划分是需要对特征值进行排序,如果某个特征超过90%都是零,而且该特征被选来划分节点的话,那就会导致某一个节点内样本数很多,这样既可能存在一定的问题,有没有办法来解决?


简单谈一下我的理解。

某些90%为0,0是缺失值还是有意义的值?假如是前者,树会用剩余有值的10%作为参考,来决定是否使用此特征作为当前划分节点,而缺失值一般会算出一个收益最大的默认路径,所有缺失值都会落到同一分枝;假如是后者,那么正负类各占的比例是多少?我们极端考虑一下,如果各占一半,那么这些特征其实很难被选做节点,因为收益很少,如果大部分为某一类,那么可能每次都会选这些特征,是否意味著它们是强特征,通过简单聚类就能区分。


理论上这个问题并不是很严重,毕竟你的决策树不止一层。如果你觉得某一节点样本过多(其实就是另一节点样本过少),你可以通过设置每个节点最小样本比例来避免这一问题。这样在计算分裂点的时候自然不会选用这一特征了。


还是常规操作呀,计算熵增啊或者基尼系数啥的,如果增加够大选择对应的划分节点就行,即使某个子树含有大量样本也无所谓啊,因为这种情况大概率是个不平衡情况。你想问的应该是这90%样本里各个类别都有的情况吧,此时计算指标增加很小,而又到了必须使用它来划分,说明已经到了建树的末期,一般会被剪枝了吧。。。

如果硬说一开始就是这个情况,是不是说明这个数据集确实不可分呢,考虑一些其他操作?


谢邀。请参考决策树的具体原理。决策树是根据信息熵或信息增益来筛选特征和划分节点的。如果缺失与否本身就恰好完美分割了数据,那这就是一个很有效的特征。如果该缺失值过多的特征相比其他特征不能更好的划分数据,那别的特征会优先成为更上一层的节点。因此是好是差由具体数据决定。


可以试下将90%为0的那几个特征作为模型数据集特征先进行聚类,按聚类结果进行单独建模。如聚成4类,就按那4个类别使用决策树建4个模型,模型数据集特征就是剔除了聚类使用的特征后的其余特征。


推荐阅读:
相关文章