大綱
- One-hot encoding
- Target encoding
- Leave-one-out
- Bayesian Target Encoding
- Weight of Evidence没龙,簡稱 WoE
- Nonlinear PCA
One-hot 編碼 (One-hot encoding)
-
圖解:
-
說明:
- 向量的長度 與 類別的個數(shù) 相關(guān)
- 向量中值為
1
的部分代表屬于的類別
-
優(yōu)點:
- 方便理解
-
缺點:
- 維度太大 導(dǎo)致計算量大
- 表示中真正有用的信息 零散 分布在大量數(shù)據(jù)中
- 高維度中會出現(xiàn) 并行性 和 多重共線性 的問題 【即一個變量可以由其余的變量線性表示】
目標編碼 (Target encoding)
-
圖解:
-
說明:
-
States 值的由來:
- 計算 California 的平均值:
- 計算 New York 的平均值:
- 計算 Texas 的平均值:
得到上述的值之后硬纤,可以使用得到的值代表該 State
-
-
優(yōu)點:
- 使用一個值就可以代替一個類別解滓,因此能夠更加直接地表示分類變量和目標變量之間的關(guān)系
-
缺點:
- 模型難以學(xué)習(xí)到編碼變量與另一個變量之間的關(guān)系
- 該編碼方式對 y 變量及其敏感,會影響到模型提取編碼信息的能力
監(jiān)督
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 encoding)
-
圖解:
-
說明:
- 各個值的來源【同類別其余值的平均值】:
- 第一行的值 = 第五行:
- 第二行的值 = 第四行:
- 第三行的值 = 第六行:
- 第四行的值 = 第二行:
- 第五行的值 = 第一行:
- 第六行的值 = 第三行:
- 各個值的來源【同類別其余值的平均值】:
-
優(yōu)點:
- 降低了對
y
的依賴 - 異常值的影響趨于平穩(wěn)筝家,從而得到更多的編碼值
- 降低了對
實現(xiàn)方式:
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)
-
說明:
- 使用目標作為編碼方法
- 貝葉斯目標編碼試圖結(jié)合目標變量分布的其他統(tǒng)計度量洼裤,比如方差或偏度(稱為高階矩「higher moments」)
-
優(yōu)點:
- 編碼更清楚類別目標分布的各個方面
-
缺點:
- 結(jié)果的可解釋性比較差
證據(jù)權(quán)重 (Weight of Evidence,簡稱 WoE)
-
說明:
- 關(guān)于分類自變量和因變量之間關(guān)系的方案
- 證據(jù)權(quán)重的數(shù)學(xué)定義是優(yōu)勢比的自然對數(shù)
表達式:ln (% of non events / % of events)
WoE 越高溪王,事件發(fā)生的可能性就越大腮鞍。「Non-events」是不屬于某個類的百分比 -
優(yōu)點:
- 在預(yù)測任務(wù)中通常是更有效的編碼器
-
缺點:
- 執(zhí)行無監(jiān)督分析時莹菱,這些方法并不一定適用
代碼實現(xiàn)
from category_encoders import WOEEncoder
enc = WOEEncoder(cols=['Name_of_col','Another_name'])
training_set = enc.fit_transform(X_train, y_train)
非線性 PCA (Nonlinear PCA)
-
說明:
- 使用分類量化來處理分類變量的主成分分析(PCA)方法
-
優(yōu)點:
- 它會找到對類別來說的最佳數(shù)值移国,從而使常規(guī) PCA 的性能(可解釋方差)最大化