大纲
- One-hot encoding
- Target encoding
- Leave-one-out
- Bayesian Target Encoding
- Weight of Evidence,简称 WoE
- Nonlinear PCA
One-hot 编码 (One-hot encoding)
-
图解:
-
说明:
- 向量的长度 与 类别的个数 相关
- 向量中值为
1
的部分代表属于的类别
-
优点:
- 方便理解
-
缺点:
- 维度太大 导致计算量大
- 表示中真正有用的信息 零散 分布在大量数据中
- 高维度中会出现 并行性 和 多重共线性 的问题 【即一个变量可以由其余的变量线性表示】
目标编码 (Target encoding)
-
图解:
-
说明:
-
States 值的由来:
- 计算 California 的平均值:
- 计算 New York 的平均值:
- 计算 Texas 的平均值:
得到上述的值之后,可以使用得到的值代表该 State
-
-
优点:
- 使用一个值就可以代替一个类别,因此能够更加直接地表示分类变量和目标变量之间的关系
-
缺点:
- 模型难以学习到编码变量与另一个变量之间的关系
- 该编码方式对 y 变量及其敏感,会影响到模型提取编码信息的能力
监督
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
的依赖 - 异常值的影响趋于平稳,从而得到更多的编码值
- 降低了对
实现方式:
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)
-
说明:
- 关于分类自变量和因变量之间关系的方案
- 证据权重的数学定义是优势比的自然对数
表达式:ln (% of non events / % of events)
WoE 越高,事件发生的可能性就越大。「Non-events」是不属于某个类的百分比 -
优点:
- 在预测任务中通常是更有效的编码器
-
缺点:
- 执行无监督分析时,这些方法并不一定适用
代码实现
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)方法
-
优点:
- 它会找到对类别来说的最佳数值,从而使常规 PCA 的性能(可解释方差)最大化