one-hot encoding不是萬能的,這些分類變量編碼方法你值得擁有

2020-12-24 澎湃新聞

選自towardsdatascience

機器之心編譯

作者:Andre Ye

編輯:小舟、張倩

one-hot encoding 是一種被廣泛使用的編碼方法,但也會造成維度過高等問題。因此,medium 的一位博主表示,在編碼分類變量方面,我們或許還有更好的選擇。

one-hot 編碼(one-hot encoding)類似於虛擬變量(dummy variables),是一種將分類變量轉換為幾個二進位列的方法。其中 1 代表某個輸入屬於該類別。

從機器學習的角度來看,one-hot 編碼並不是一種良好的分類變量編碼方法。

眾所周知,維數越少越好,但 one-hot 編碼卻增加了大量的維度。例如,如果用一個序列來表示美國的各個州,那麼 one-hot 編碼會帶來 50 多個維度。

one-hot 編碼不僅會為數據集增加大量維度,而且實際上並沒有太多信息,很多時候 1 散落在眾多零之中,即有用的信息零散地分布在大量數據中。這會導致結果異常稀疏,使其難以進行優化,對於神經網絡來說尤其如此。

更糟糕的是,每個信息稀疏列之間都具有線性關係。這意味著一個變量可以很容易地使用其他變量進行預測,導致高維度中出現並行性和多重共線性的問題。

最優數據集由信息具有獨立價值的特徵組成,但 one-hot 編碼創建了一個完全不同的環境。

當然,如果只有三、四個類,那麼 one-hot 編碼可能不是一個糟糕的選擇。但是隨著類別的增加,可能還有其他更合適的方案值得探索。本文作者列舉了幾個方案供讀者參考。

目標編碼

目標編碼(Target encoding)是表示分類列的一種非常有效的方法,並且僅佔用一個特徵空間,也稱為均值編碼。該列中的每個值都被該類別的平均目標值替代。這可以更直接地表示分類變量和目標變量之間的關係,並且也是一種很受歡迎的技術方法(尤其是在 Kaggle 比賽中)。

但這種編碼方法也有一些缺點。首先,它使模型更難學習均值編碼變量和另一個變量之間的關係,僅基於列與目標的關係就在列中繪製相似性。

而最主要的是,這種編碼方法對 y 變量非常敏感,這會影響模型提取編碼信息的能力。

由於該類別的每個值都被相同的數值替換,因此模型可能會過擬合其見過的編碼值(例如將 0.8 與完全不同的值相關聯,而不是 0.79),這是把連續尺度上的值視為嚴重重複的類的結果。

因此,需要仔細監控 y 變量,以防出現異常值。要實現這個目的,就要使用 category_encoders 庫。由於目標編碼器是一種有監督方法,所以它同時需要 X 和 y 訓練集。

from category_encoders import TargetEncoder enc = TargetEncoder(cols=['Name_of_col','Another_name']) training_set = enc.fit_transform(X_train, y_train)

留一法編碼

留一法(Leave-one-out)編碼試圖通過計算平均值(不包括當前行值)來彌補對 y 變量的依賴以及值的多樣性。這使異常值的影響趨於平穩,並創建更多樣化的編碼值。

由於模型不僅要面對每個編碼類的相同值,還要面對一個範圍值,因此它可以更好地泛化。

在實現方面,可以使用 category_encoders 庫中的 LeaveOneOutEncoder。

from category_encoders import LeaveOneOutEncoder enc = LeaveOneOutEncoder(cols=['Name_of_col','Another_name']) training_set = enc.fit_transform(X_train, y_train)

實現類似效果的另一種策略是將正態分布的噪聲添加到編碼分數中,其中標準差是可以調整的參數。

貝葉斯目標編碼

貝葉斯目標編碼(Bayesian Target Encoding)是一種使用目標作為編碼方法的數學方法。僅使用均值可能是一種欺騙性度量標準,因此貝葉斯目標編碼試圖結合目標變量分布的其他統計度量。例如其方差或偏度(稱為高階矩「higher moments」)。

然後通過貝葉斯模型合併這些分布的屬性,從而產生一種編碼,該編碼更清楚類別目標分布的各個方面,但是結果的可解釋性比較差。

證據權重

證據權重(Weight of Evidence,簡稱 WoE)是另一種關於分類自變量和因變量之間關係的方案。WoE 源自信用評分領域,曾用於區分用戶是違約拖欠還是已經償還貸款。證據權重的數學定義是優勢比的自然對數,即:

ln (% of non events / % of events)

WoE 越高,事件發生的可能性就越大。「Non-events」是不屬於某個類的百分比。使用證據權重與因變量建立單調關係,並在邏輯尺度上確保類別,這對於邏輯回歸來說很自然。WoE 是另一個衡量指標「Information Value」的關鍵組成部分。該指標用來衡量特徵如何為預測提供信息。

from category_encoders import WOEEncoder enc = WOEEncoder(cols=['Name_of_col','Another_name']) training_set = enc.fit_transform(X_train, y_train)

這些方法都是有監督編碼器,或者是考慮目標變量的編碼方法,因此在預測任務中通常是更有效的編碼器。但是,當需要執行無監督分析時,這些方法並不一定適用。

非線性 PCA

非線性 PCA(Nonlinear PCA)是一種使用分類量化來處理分類變量的主成分分析(PCA)方法。它會找到對類別來說的最佳數值,從而使常規 PCA 的性能(可解釋方差)最大化。

原文連結:

https://towardsdatascience.com/stop-one-hot-encoding-your-categorical-variables-bbb0fba89809

如何根據任務需求搭配恰當類型的資料庫?

在AWS推出的白皮書《進入專用資料庫時代》中,介紹了8種資料庫類型:關係、鍵值、文檔、內存中、關係圖、時間序列、分類帳、領域寬列,並逐一分析了每種類型的優勢、挑戰與主要使用案例。

原標題:《one-hot encoding不是萬能的,這些分類變量編碼方法你值得擁有》

閱讀原文

相關焦點

  • 《生命遊戲》FPGA實例評測:有限狀態機用哪種編碼更好?
    綜合工具通常會檢查你的代碼以檢測FSM,並執行可能會修改狀態編碼的優化。FSM的三種編碼用於FSM的三種最受歡迎的編碼是二進位(Binary)、格雷(Gray)和獨熱碼(one-hot)。 二進位編碼二進位編碼是在將值順序分配給狀態時可以直觀使用的簡單方法。這樣,您將使用儘可能少的位來編碼狀態。
  • 電視機萬能遙控怎麼使用?電視萬能遙控器設置方法?
    看電視的時候我們肯定都知道是需要使用的遙控器的,而且現在電視機也是擁有著萬能的遙控器,所以說不管怎麼樣,是在進行使用,都是非常的方便,在進行使用的過程,使人們一定要知道方法,要知道電視機萬能遙控怎麼使用,另外對於電視萬能遙控器設置方法也是應該要知道。電視機萬能遙控怎麼使用?
  • 柯南擁有的神技能,萬能的夏威夷,你值得擁有
    之前的內容有說到柯南擁有的逆天黑科技,像犯人追蹤眼鏡、手錶型麻醉針等等之類的,這些黑科技雖然個頂個的厲害,但是作為主角怎麼能只有這些裝備呢?柯南除了這些外在的裝備之外,本人也是實力過硬。自身有著異於常人的推理能力和敏銳的觀察力,雖然說自身武力值不是那麼厲害,甚至都沒有女朋友毛利蘭那麼強,但是也不是很弱。
  • 單變量和多變量對基因表達式的預測能力對比
    為了與組學整合的後選擇特徵相一致,我們將使用性別作為我們將要預測的響應變量Y。讓我們通過降維(如PCA)來快速可視化這些樣本。讓我們對其進行編碼,並比較模型之間的ROC曲線。它涉及很多編碼,我在這裡不介紹代碼,但是歡迎您在我的github上檢查它們。在下面,我僅介紹經過多次訓練測試後的每個模型的平均ROC曲線,以及AUC的箱線圖。我們在這裡觀察到一些有趣的事情。首先,與所有多變量模型相比,所有單變量模型的預測能力似乎都更差。
  • 萬字乾貨 | 一文助你了解機器學習
    one-hot特徵編碼也是一種常見的處理特徵的方法,如一個特徵包含0,1,2三個數值,那麼可以一特徵拆成三個,分別用0,0,1代表0,用0,1,0代表1,用戶1,0,0代表2,也就是把不同的類別特徵都用0和1去表示,還有很多其他方式,如結合業務規則構建特徵,特徵多項式交叉相乘,PCA降維等。
  • 如何Keras自動編碼器給極端罕見事件分類
    對這些罕見事件進行分類非常有挑戰性。近來,深度學習被廣泛應用於分類中。然而正樣本數太少不利於深度學習的應用。不論數據總量多大,深度學習的使用都會受制於陽性數據的數量。2. 為什麼要使用深度學習?這個問題很合理。為什麼不考慮使用其他機器學習方法呢?答案很主觀。我們總是可以採用某種機器學習方法來達到目的。
  • 記住:「I'm hot」 不是 「我很熱」的意思!
    來和我學一學吧~性感I’m hot≠我很熱!這句話不是說:她很熱。而是說「她很性感」。所以這裡的「hot」=身材好,性感這句話不是說:她很熱。而是說「她很性感」。He is one of the hottest young talents around.他是這裡當紅的青年才俊。
  • 第二章 使用scikit-learn進行分類預測
    然而這是慣例,並不是使用接口的必要條件。scikit-learn中實現了很多估計器,其他開源項目中也有更多的估計器使用相同的接口。例如(SVM)、隨機森林。後面的章節將會提到這些算法。在本章將使用最近鄰算法。
  • I’m hot』不是『我很熱』,理解錯誤太尷尬
    「熱」,『I’m hot』意思真的不是『我很熱』。 所以,你想表達我愛吃辣的話,就可以說成「I love hot food」。 6 關於「hot」的其他搭配 還有一個有趣的搭配hot desking,說的並不是桌子很熱~而是有點資源共享的意思。
  • 中文文本分類:你需要了解的10項關鍵內容
    通常情況下,在文本中去掉這些停用詞能夠使模型更好地去擬合實際的語義特徵,從而增加模型的泛化能力。但值得注意的是,停用詞表並不是一成不變的。針對不同的文本分類情景,所採用的停用詞表也應該作出針對性的調整。例如書名號「《」和「》」往往比書名本身更能代表書名的特徵、冒號「:」通常出現在人物訪談類文章的標題中,以及人稱代詞「他」和「她」在情感類文章標題中的頻繁使用等。
  • 多變量回歸模型分析應用概述
    (一)回歸方法的選擇  統計方法的確定是統計分析的關鍵,在課題設計或進行數據分析時,根據研究目的及收集數據的特點,選擇統計方法。通常情況下的多變量回歸分析,據因變量的類型確定分析方法,如前所述。(二)確定自變量納入模型的形式  自變量有三種類型:連續變量、分類變量和等級變量。
  • 萬能遙控器怎樣對碼?萬能遙控器是萬能的嗎?
    這時我們就會想到萬能遙控器。萬能遙控器在附近的電子商城就可以購買到,價格也不會太高,十幾塊錢就可以購買到。需要注意的是,購買萬能遙控器的時候,一定要看一下這個品牌的萬能遙控器的說明書,說明書裡面標明了這個萬能遙控器所能控制的品牌。而自己的設備必須要在這個說明書所標明的品牌裡面。如果說明書裡面並不包括自己的設備品牌,那麼這個遙控器就不適合以自己的設備。
  • 四級作文模板萬能句型最新 2020年12月英語四級作文通用萬能模板
    2020年12月英語四級就要考試了,想必大多數考生已經做好準備了,小編為大家準備了一些四級作文萬能模板,希望能幫到各位考生。  英語四級作文萬能模板:解決方法題型  要求考生列舉出解決問題的多種途徑  1. 問題現狀  2.
  • 雅思口語話題萬能模板知多少 —外語頻道—教育優選—最權威的國際...
    大家在準備雅思口語,都期望能夠找到一個雅思口語萬能模版,其實沒有所謂的雅思口語萬能模版,如果非說有的話,更多的是一種思路,下面就來看看小編為大家收集整理的雅思口語萬能模版。  劍橋雅思九全面分析,全面解析雅思真題