不同的分类变量编码方式

大纲

    1. One-hot encoding
    1. Target encoding
    1. Leave-one-out
    1. Bayesian Target Encoding
    1. Weight of Evidence,简称 WoE
    1. Nonlinear PCA

One-hot 编码 (One-hot encoding)

  • 图解:


    One-hot 编码图解
  • 说明:

    • 向量的长度类别的个数 相关
    • 向量中值为 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)

  • 图解:


    留一法图解
  • 说明:

    • 各个值的来源【同类别其余值的平均值】:
        1. 第一行的值 = 第五行:
        1. 第二行的值 = 第四行:
        1. 第三行的值 = 第六行:
        1. 第四行的值 = 第二行:
        1. 第五行的值 = 第一行:
        1. 第六行的值 = 第三行:
  • 优点:

    • 降低了对 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 的性能(可解释方差)最大化

你可能感兴趣的:(不同的分类变量编码方式)