因為決策樹在進行節點劃分是需要對特徵值進行排序,如果某個特徵超過90%都是零,而且該特徵被選來劃分節點的話,那就會導致某一個節點內樣本數很多,這樣既可能存在一定的問題,有沒有辦法來解決?


簡單談一下我的理解。

某些90%為0,0是缺失值還是有意義的值?假如是前者,樹會用剩餘有值的10%作為參考,來決定是否使用此特徵作為當前劃分節點,而缺失值一般會算出一個收益最大的默認路徑,所有缺失值都會落到同一分枝;假如是後者,那麼正負類各占的比例是多少?我們極端考慮一下,如果各佔一半,那麼這些特徵其實很難被選做節點,因為收益很少,如果大部分為某一類,那麼可能每次都會選這些特徵,是否意味著它們是強特徵,通過簡單聚類就能區分。


理論上這個問題並不是很嚴重,畢竟你的決策樹不止一層。如果你覺得某一節點樣本過多(其實就是另一節點樣本過少),你可以通過設置每個節點最小樣本比例來避免這一問題。這樣在計算分裂點的時候自然不會選用這一特徵了。


還是常規操作呀,計算熵增啊或者基尼係數啥的,如果增加夠大選擇對應的劃分節點就行,即使某個子樹含有大量樣本也無所謂啊,因為這種情況大概率是個不平衡情況。你想問的應該是這90%樣本里各個類別都有的情況吧,此時計算指標增加很小,而又到了必須使用它來劃分,說明已經到了建樹的末期,一般會被剪枝了吧。。。

如果硬說一開始就是這個情況,是不是說明這個數據集確實不可分呢,考慮一些其他操作?


謝邀。請參考決策樹的具體原理。決策樹是根據信息熵或信息增益來篩選特徵和劃分節點的。如果缺失與否本身就恰好完美分割了數據,那這就是一個很有效的特徵。如果該缺失值過多的特徵相比其他特徵不能更好的劃分數據,那別的特徵會優先成為更上一層的節點。因此是好是差由具體數據決定。


可以試下將90%為0的那幾個特徵作為模型數據集特徵先進行聚類,按聚類結果進行單獨建模。如聚成4類,就按那4個類別使用決策樹建4個模型,模型數據集特徵就是剔除了聚類使用的特徵後的其餘特徵。


推薦閱讀:
相关文章