在以前讀書的時候,機器學(xué)習(xí)中就提到對于離散的特征往往采用獨熱編碼對特征進行預(yù)處理。但是從機器學(xué)習(xí)的角度來看,one-hot 編碼并不是一種良好的分類變量編碼方法。
- one-hot 編碼卻增加了大量的維度,且這些特征維度是稀疏的,有用的信息零散地分布在大量數(shù)據(jù)中。比如一個20類的離散特征,通過獨熱編碼之后,產(chǎn)生20列特征,但是這些特征中95%都是0;這種稀疏的特征對于神經(jīng)網(wǎng)絡(luò)來說很難優(yōu)化。
- 每個信息稀疏列之間都具有線性關(guān)系。比如20列特征之和為1。這意味著一個變量可以很容易地使用其他變量進行預(yù)測,導(dǎo)致高維度中出現(xiàn)并行性和多重共線性的問題。
其他可選的編碼方式
目標(biāo)編碼
離散特征編碼主要存在的問題是,類別特征難以量化和比較。那么就可以采用目標(biāo)編碼的方式。將原本是類別的離散量變?yōu)轭A(yù)測目標(biāo)在該離散量上的均值。
這種定義方式人為的展示了分類變量和目標(biāo)變量之間的關(guān)系。
缺點也很明顯:這種編碼方法對目標(biāo)變量 y非常敏感,這會影響模型提取編碼信息的能力。如果Y中有異常值,那么目標(biāo)編碼會出現(xiàn)問題。
留一法編碼
留一法(Leave-one-out)編碼試圖通過計算平均值(不包括當(dāng)前行值)來彌補對 y 變量的依賴以及值的多樣性。這使異常值的影響趨于平穩(wěn),并創(chuàng)建更多樣化的編碼值。
由于模型不僅要面對每個編碼類的相同值,還要面對一個范圍值,因此它可以更好地泛化。
實現(xiàn)類似效果的另一種策略是將正態(tài)分布的噪聲添加到編碼分?jǐn)?shù)中,其中標(biāo)準(zhǔn)差是可以調(diào)整的參數(shù)。
貝葉斯目標(biāo)編碼
貝葉斯目標(biāo)編碼(Bayesian Target Encoding)是一種使用目標(biāo)作為編碼方法的數(shù)學(xué)方法。僅使用均值可能是一種欺騙性度量標(biāo)準(zhǔn),因此貝葉斯目標(biāo)編碼試圖結(jié)合目標(biāo)變量分布的其他統(tǒng)計度量。例如其方差或偏度(稱為高階矩「higher moments」)。
然后通過貝葉斯模型合并這些分布的屬性,從而產(chǎn)生一種編碼,該編碼更清楚類別目標(biāo)分布的各個方面,但是結(jié)果的可解釋性比較差。