最近在刷kaggle的時候碰到了兩種處理類別型特征的方法:label encoding和one hot encoding。我從stackexchange, quora等網上搜索了相關的問題,總結如下。
label encoding在某些情況下很有用,但是場景限制很多。比如有一列 [dog,cat,dog,mouse,cat],我們把其轉換為[1,2,1,3,2]。這里就產生了一個奇怪的現象:dog和mouse的平均值是cat。而且像decision tree,random forest和xgboost這種算法能處理好這種轉換,而且相比轉換前,所需要的內存空間小一點。
one hot encoding的優點就是它的值只有0/1,不同的類型存儲在垂直的空間。缺點就是,當類別的數量很多時,特征空間會變得非常大。在這種情況下,一般可以用PCA來減少維度。而且one hot encoding+PCA這種組合在實際中也非常有用。
總的來說,要是one hot encoding的類別數目不太多,建議優先考慮。