您好,登錄后才能下訂單哦!
本篇內容主要講解“為什么不對分類變量進行獨熱編碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“為什么不對分類變量進行獨熱編碼”吧!
獨熱編碼(又稱虛擬變量)是一種將分類變量轉換為若干二進制列的方法,其中1表示存在屬于該類別的行。顯然,從機器學習的角度來看,它并不適合對分類變量進行編碼。
很明顯,它增加了大量的維度,但通常來說,維數越小越好。例如,如果設置一個列代表美國的州(例如加利福尼亞州、紐約州)的話,那么獨熱編碼方案將會多出50個維度。
這樣做不僅會為數據集增加大量維度,而且實際上并沒有太多信息——大量0中零散分布著幾個1。這使得優化難以進行,對于神經網絡來說尤其如此,其優化器在大量的空白維度中很容易進入錯誤的空間。
更糟糕的是,每個信息稀疏列之間都具有線性關系。這意味著一個變量可以很容易地使用其他變量進行預測,從而可能導致高維的并行性和多重共線性問題。
最佳數據集包含了信息具有獨立價值的特征,而獨熱編碼可創建一個完全不同的環境。當然,如果只有三個或甚至四個類,那么獨熱編碼可能并不是一個糟糕的選擇。不過根據數據集的相對大小,其他的替代方法有可能值得一探。
目標編碼可以有效表示分類列,而且僅占用一個特征空間。它也稱為均值編碼,該列中的每個值都被該類別的平均目標值代替。這樣可以更直接地表示分類變量和目標變量之間的關系,并且這也是一種非常流行的技術(尤其是在Kaggle比賽中)。
這種編碼方法有一些缺點。首先,它使模型更難以學習均值編碼變量和另一個變量之間的關系。它只能根據它與目標的關系在在列中繪制相似性,這有利有弊。
這種編碼方法對y變量非常敏感,會影響模型提取編碼信息的能力。
由于該類別的每個值都被相同的數值替換,因此該模型可能會趨于過擬合它所看到的編碼值(例如,將0.8與完全不同于0.79的值相關聯)。這是將連續規模上的值視為嚴重重復的類處理的結果。因此,需要仔細監控y變量是否存在異常值。
為實現這一目的,可以使用category_encoders庫。目標編碼器是一種受監督的方法,因此需要X和y訓練集。
from category_encoders importTargetEncoder enc =TargetEncoder(cols=['Name_of_col','Another_name']) training_set = enc.fit_transform(X_train, y_train)
留一法編碼(Leave-one-out encoding)試圖通過計算平均值(不包括當前行值)來彌補對y變量和值多樣性的依賴。這使異常值的影響趨于平穩,并創建了更多不同的編碼值。
模型不僅為每個編碼的類提供了相同的值,還為其提供了一個范圍,可以更好地進行泛化。可以像往常一樣使用LeaveOneOutEncoder在category_encoders庫中執行實現。
from category_encoders importLeaveOneOutEncoder enc =LeaveOneOutEncoder(cols=['Name_of_col','Another_name']) training_set = enc.fit_transform(X_train, y_train)
實現類似效果的另一種策略是將正態分布的噪聲添加到編碼分數中,其中標準偏差是可以調整的參數。
貝葉斯目標編碼(Bayesiantarget encoding)是一種將目標用作編碼方法的數學方法。僅使用均值可能是一種欺騙性度量,因此貝葉斯目標編碼試圖結合使用其他統計量來衡量目標變量的分布,例如其方差或偏度(highermoments)。
然后,通過貝葉斯模型合并這些分布的屬性,該模型能夠產生一種編碼,這種編碼可以更清楚類別目標分布的各個方面。但是,結果卻難以解釋。
證據權重(WoE)是對分類自變量與因變量之間關系的另一種細微看法。WoE源自信用評分行業,用于衡量拖欠或償還貸款的客戶之間的差別。證據權重的數學定義是優勢比的自然對數,或:
ln (% of non events / % of events)
WoE越高,事件發生的可能性就越大。“Non-events”是指那些不屬于某個類的事件所占的百分比。使用證據權重與因變量建立單調(永不停止朝一個方向發展)關系,并在邏輯尺度范圍內確保類別。WoE是“信息價值”指標的關鍵組成部分,該指標用于衡量功能如何為預測提供信息。
from category_encoders importWOEEncoder enc =WOEEncoder(cols=['Name_of_col','Another_name']) training_set = enc.fit_transform(X_train, y_train)
這些方法是監督編碼器,或者是考慮目標變量的編碼方法,因此在預測任務中它們通常是更有效的編碼器。但是,當需要執行無監督分析時,就并不一定是這種情況了。
非線性PCA(Nonlinear PCA)是一種處理主成分分析的方法,可以通過使用分類量化來處理分類變量。這樣可以找到類別的最佳數值,從而使常規PCA的性能(解釋的方差)最大化。
到此,相信大家對“為什么不對分類變量進行獨熱編碼”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。