自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

從機(jī)器學(xué)習(xí)的角度來看,one-hot 編碼并不是一種良好的分類變量編碼方法。

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

one-hot 編碼不僅會(huì)為數(shù)據(jù)集增加大量維度,而且實(shí)際上并沒有太多信息,很多時(shí)候 1 散落在眾多零之中,即有用的信息零散地分布在大量數(shù)據(jù)中。這會(huì)導(dǎo)致結(jié)果異常稀疏,使其難以進(jìn)行優(yōu)化,對(duì)于神經(jīng)網(wǎng)絡(luò)來說尤其如此。

更糟糕的是,每個(gè)信息稀疏列之間都具有線性關(guān)系。這意味著一個(gè)變量可以很容易地使用其他變量進(jìn)行預(yù)測(cè),導(dǎo)致高維度中出現(xiàn)并行性和多重共線性的問題。

 

最優(yōu)數(shù)據(jù)集由信息具有獨(dú)立價(jià)值的特征組成,但 one-hot 編碼創(chuàng)建了一個(gè)完全不同的環(huán)境。

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

目標(biāo)編碼

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

但這種編碼方法也有一些缺點(diǎn)。首先,它使模型更難學(xué)習(xí)均值編碼變量和另一個(gè)變量之間的關(guān)系,僅基于列與目標(biāo)的關(guān)系就在列中繪制相似性。

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

由于該類別的每個(gè)值都被相同的數(shù)值替換,因此模型可能會(huì)過擬合其見過的編碼值(例如將 0.8 與完全不同的值相關(guān)聯(lián),而不是 0.79),這是把連續(xù)尺度上的值視為嚴(yán)重重復(fù)的類的結(jié)果。

因此,需要仔細(xì)監(jiān)控 y 變量,以防出現(xiàn)異常值。要實(shí)現(xiàn)這個(gè)目的,就要使用 category_encoders 庫。由于目標(biāo)編碼器是一種有監(jiān)督方法,所以它同時(shí)需要 X 和 y 訓(xùn)練集。

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

留一法編碼

留一法(Leave-one-out)編碼試圖通過計(jì)算平均值(不包括當(dāng)前行值)來彌補(bǔ)對(duì) y 變量的依賴以及值的多樣性。這使異常值的影響趨于平穩(wěn),并創(chuàng)建更多樣化的編碼值。

由于模型不僅要面對(duì)每個(gè)編碼類的相同值,還要面對(duì)一個(gè)范圍值,因此它可以更好地泛化。

在實(shí)現(xiàn)方面,可以使用 category_encoders 庫中的 LeaveOneOutEncoder。

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

實(shí)現(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)計(jì)度量。例如其方差或偏度(稱為高階矩「higher moments」)。

然后通過貝葉斯模型合并這些分布的屬性,從而產(chǎn)生一種編碼,該編碼更清楚類別目標(biāo)分布的各個(gè)方面,但是結(jié)果的可解釋性比較差。

證據(jù)權(quán)重

證據(jù)權(quán)重(Weight of Evidence,簡(jiǎn)稱 WoE)是另一種關(guān)于分類自變量和因變量之間關(guān)系的方案。WoE 源自信用評(píng)分領(lǐng)域,曾用于區(qū)分用戶是違約拖欠還是已經(jīng)償還貸款。證據(jù)權(quán)重的數(shù)學(xué)定義是優(yōu)勢(shì)比的自然對(duì)數(shù),即:

  1. ln (% of non events / % of events) 

WoE 越高,事件發(fā)生的可能性就越大?!窷on-events」是不屬于某個(gè)類的百分比。使用證據(jù)權(quán)重與因變量建立單調(diào)關(guān)系,并在邏輯尺度上確保類別,這對(duì)于邏輯回歸來說很自然。WoE 是另一個(gè)衡量指標(biāo)「Information Value」的關(guān)鍵組成部分。該指標(biāo)用來衡量特征如何為預(yù)測(cè)提供信息。

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

這些方法都是有監(jiān)督編碼器,或者是考慮目標(biāo)變量的編碼方法,因此在預(yù)測(cè)任務(wù)中通常是更有效的編碼器。但是,當(dāng)需要執(zhí)行無監(jiān)督分析時(shí),這些方法并不一定適用。

非線性 PCA

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

 

 

責(zé)任編輯:張燕妮 來源: 機(jī)器之心
相關(guān)推薦

2021-03-18 07:52:42

代碼性能技巧開發(fā)

2022-11-30 13:13:41

節(jié)能減碳PUE

2014-02-17 10:56:21

Hadoop

2017-10-10 11:11:14

2021-07-05 09:40:57

工具Node開源

2020-06-15 14:43:16

Python開發(fā)工具

2021-11-11 10:41:25

代碼開發(fā)工具

2019-09-18 16:14:16

編碼方法重構(gòu)

2017-04-13 07:47:06

2021-09-04 00:11:32

大數(shù)據(jù)Hadoop工具

2021-09-06 10:22:47

匿名對(duì)象編程

2022-02-08 22:18:10

Chrome插件服務(wù)器

2020-10-18 12:36:06

Python開發(fā)函數(shù)

2009-06-22 09:16:00

無線網(wǎng)絡(luò)加密網(wǎng)絡(luò)安全

2023-12-29 08:17:26

Python代碼分析Profile

2009-03-19 09:02:44

2017-11-13 14:06:56

2016-11-24 12:07:42

Android萬能圓角ImageView

2024-03-06 11:16:10

2021-01-21 09:45:16

Python字符串代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)