onehot編碼後生成的特徵列太多怎麼辦?

時間 2021-06-07 10:54:17

1樓:煩躁豆

相關性的分析(feature和target), 如果說這個non-ordinal feature vector 和target相關性很強(或者進行分類預處理後很強),那值得對此feature做詳細編碼。如果關聯性弱,又強行編碼,則可能會造成過擬合。

One hot轉換後,特徵增加後,Hypothesis的複雜度沒有想象中增加多少。至少是線性超平面。不要害怕應用 one hot for categorical conversion.

All only depends on outcomes of ML models.

總之需要對features 進行evaluating, 觀察對結果的影響,然後再採取方案.

2樓:Ccky

對於這種資料,我有幾種解決方案,當然只是作為資料愛好者的一己之見:

第一種:對那個很多維度的類別變數,根據每一項出現的次數進行標記;比如,A類出現了5次,就標為5。

第二種:進行hashing trick,也就是進行mod分類,再onehot

第三種:按目標值進行合併,比如A和B和C都有85%概率使結果為1第四種:對分類變數先onehot,再對這部分PCA降維第五種:低緯嵌入,也叫embedding

3樓:

提供一點個人思路:

離散型特徵項分類:(影響label encoding要不要先排序)

ordinal features: 資料順序有意義, 如車牌照:A,B, C, D。

normal categorical features: 不用考慮資料順序, 如性別: 男,女。

選用的模型分類:(影響處理方式的選擇)

tree-based:(Randomforest, GBDT, etc)

non-tree-based:(linear/logistic, svm, nn, etc)

離散型特徵列處理的方式分類:

label encoding: map成numbers

frequency encoding: map成其相應的出現頻率

one-hot encoding

回歸樓主問題,可以嘗試的解決方式:

如果使用tree-based模型,label or frequency encoding處理。如果離散型特徵項為ordinal features,注意觀察是否需要先排序,再做label encoding。

如果使用的是non-tree-based 模型,用one-hot encoding處理。特徵列太多?可以往更高一層類別或者依據一些規則歸類(比如通過出現的頻率,比如先用RF跑一次feature importance把不重要的歸為一類,降低類別),類似樓上 @毛先生 的回答。

個人比較偏愛的方式(如果不考慮DL),直接用lightgbm,原因看:Optimal Split for Categorical Features。

4樓:喵醬啊

如果你的資料集不太大的話,3000列的特徵會使你的資料非常稀疏,而且會發生「維災難」,過擬合的現象會非常嚴重。

其實建模之前,要先對資料進行一些基本的了解和預處理。例如,那個3000個值的特徵,和我們要做的分類,大致是個怎樣的關係?這3000個值是均勻分布的,還是集中在某些地方?

如果可以的話,把3000個值進行一些預處理。例如「國家」有200多個,在某些情況下可以壓縮成「亞洲」、「歐洲」等等。

one hot編碼怎麼讓測試集的類別與訓練集的類別在數量上一致呢?

leetcodeEveryday 為這個寫了一篇文章。之前也遇到了坑。可以處理訓練集和測試集特徵不一致的情況。leetcodeEveryday 特徵工程通用模板 OneHotEncoder正確用法 VinerL 訓練集onehot4449個特徵,測試集就還用這4449個特徵。兩點說明 1.測試集如果...

請問如何生成乙個短小的唯一的編碼

zane zhou 雪花演算法生成ID 是為了解決分布式ID的問題。特點是高效能,低延遲,按時間有序,一般不會造成ID碰撞。你需要結合你系統的實際情況來決定怎麼處理ID生成問題。非分布式系統 如果你的系統壓根不是分布式,生成ID就是個很簡單的事情。你可以用乙個自定義結構 流水號,在記憶體中自增來解決...

svm新增一列自身複製的特徵後,作為支撐向量的樣本點會改變嗎?

Zhang Yao 這個問題挺有意思的,有點面試題的感覺,稍微推導了一下,結論如下。太長不看 對於Hard Margin的Linear SVM,支援向量是不變的。還是Hard Margin的情況,加了Kernel的SVM,則要看Kernel的具體形式,大多數情況支援向量也是不變的。對於Soft Ma...