Categorical-Data

為決策樹編碼分類特徵的最佳實踐?

  • October 20, 2015

在為線性回歸編碼分類特徵時,有一條規則:啞元數應比總層數少一(以避免共線性)。

決策樹(袋裝,提升)是否存在類似的規則?我之所以這樣問,是因為 Python 中的標準做法似乎是將n級別擴展為n虛擬對象(sklearns'OneHotEncoder或 Pandas' pd.get_dummies),這對我來說似乎不是最理想的。

作為決策樹分類特徵編碼的最佳實踐,您有什麼建議?

看起來你明白你可以有n水平,而不是n-1,因為與線性回歸不同,你不需要擔心完美的共線性。

(我是從 R 的角度來看的,但我認為它在 Python 中是相同的。)這取決於幾件事,例如 1)您正在使用哪個包和 2)您有多少因子級別。

1)如果您使用的是 R 的randomForest軟件包,那麼如果您的因子水平 <33,那麼您可以繼續,如果您願意,可以將它們保留在一個功能中。這是因為在 R 的隨機森林實現中,它會檢查哪些因子級別應該在拆分的一側,哪些在另一側(例如,您的 5 個級別可能在左側分組在一起,而 7 個可能被分組一起在右邊)。如果您將分類特徵拆分為n虛擬對象,則算法將無法使用此選項。

顯然,如果您使用的特定包無法處理分類特徵,那麼您只需要創建n虛擬變量。

2)正如我上面提到的,R 的隨機森林實現只能處理 32 個因子級別 - 如果您有更多,那麼您需要將您的因子拆分為更小的子集,或者為每個級別創建一個虛擬變量。

引用自:https://stats.stackexchange.com/questions/177852

comments powered by Disqus