2016-12-02 47 views
0

我看到很多功能的工程有get_dummies上的物體的特徵步驟。例如,將包含「M」和「F」的性別列虛擬爲兩列,並將其標記爲一次性表示。 爲什麼我們不直接在性別欄中將'M'和'F'設置爲0和1? 虛擬方法是否對分類和迴歸模型中的機器學習模型都有積極影響? 如果是這樣,爲什麼? 謝謝。使用虛擬值會使模型的性能更好嗎?

+0

虛值被稱爲嘈雜的標籤。是的,他們在一定程度上是有益的。 – user1211

+0

直說,我想單獨一列一分爲二,意味着模型尺寸增加1,它不是100%的保證的益處必須存在(至少在M/F列)。但是爲特徵集增加1個維度意味着您的程序可以接受更多的維度複雜度,因此在某些情況下,它可以有利於輸出的準確性,但缺點可能是系統需要維護更大的維度集。你也相對需要更大的訓練集來防止過度訓練 – SKLTFZ

+0

簡短的回答:當然是。許多分類器/迴歸器僅對數值數據有效(其中特徵3是具有值1的特徵的3倍差/好; SVM,最近鄰居)。其他人並不在乎(隨機樹)。其他人至少可以從虛擬變量(NN)中受益。對於分類功能來說,這當然是一件壞事。因此創建了假人。這是非常基本的東西。每個ML教程都可以幫助你。構建一個簡單的線性迴歸器示例。在這種情況下很容易看到。 – sascha

回答

0

要獨熱編碼與N可能值的功能,你只需要N-1列與0/1值。所以你是對的:二進制性可以用一個二進制特徵編碼。

使用虛擬編碼與N功能而不是N-1應該不會真正增加任何機器學習模型的性能,並且會使一些統計分析(如ANOVA)變得複雜。

patsy docs on contrasts參考。

1

一般情況下,直接編碼具有N個不同值的分類變量直接與(0,1,...,N-1),並變成數值變量不會與很多算法工作,因爲你給廣告對不同類別變量的特殊含義。性別示例的工作原理是二元的,但考慮汽車模型的價格估算示例。如果有N個不同的型號,如果你編碼模型中的3個和6個B型,這將意味着,例如,對於OLS線性迴歸的B型影響響應變量的2倍以上相比,模型A.你不能簡單地將這種隨機意義賦予不同的分類值,所生成的模型就沒有意義。爲了防止這種數字歧義,最常見的方法是用N-1二進制單熱變量對具有N個不同值的分類變量進行編碼。

+0

謝謝。在N-1二進制值的每一列中,0和1是編碼的最佳方式? – yanachen

相關問題