数据处理:离散型变量编码及效果分析

本文介绍了离散型变量的多种编码方法,如Label Encoder、OneHot Encoder、Sum Encoder等,并分析了它们的效果和适用场景。通过实验数据表明,CatBoost Encoder和Ordinal Encoder在交叉验证后表现出较好的效果,而LeaveOneOutEncoder在未使用交叉验证时表现不佳。对于无序离散特征,OneHot、Hashing和Target Encoding等方法效果良好,但OneHot要注意高基数特征。对于有序特征,Ordinal编码可能更合适。文章还提到了过拟合问题和防止过拟合的策略。
摘要由CSDN通过智能技术生成

Datawhale

作者:小雨姑娘,Datawhale成员

离散型变量编码的Python库

首先我要介绍这个关于离散型编码的Python库,里面封装了十几种(包括文中的所有方法)对于离散型特征的编码方法,接口接近于Sklearn通用接口,非常实用。下面是这个库的链接:

http://contrib.scikit-learn.org/categorical-encoding/

1.Label Encoder / Ordered Encoder

这个编码方式非常容易理解,就是把所有的相同类别的特征编码成同一个值,例如女=0,男=1,狗狗=2,所以最后编码的特征值是在[0, n-1]之间的整数。

这个编码的缺点在于它随机的给特征排序了,会给这个特征增加不存在的顺序关系,也就是增加了噪声。假设预测的目标是购买力,那么真实Label的排序显然是 女 > 狗狗 > 男,与我们编码后特征的顺序不存在相关性。

2.OneHot Encoder / Dummy Encoder / OHE

大家熟知的OneHot方法就避免了对特征排序的缺点。对于一列有N种取值的特征,Onehot方法会创建出对应的N列特征,其中每列代表该样本是否为该特征的某一种取值。因为生成的每一列有值的都是1,所以这个方法起名为Onehot特征。Dummy特征也是一样,只是少了一列,因为第N列可以看做是前N-1列的线性组合。但是在离散特征的特征值过多的时候不宜使用,因为会导致生成特征的数量太多且过于稀疏。

3. Sum Encoder (Deviation Encoder, Effect Encoder)

求和编码通过比较某一特征取值下对应标签(或其他相关变量)的均值与标签的均值之间的差别来对特征进行编码。但是据我所知 ,如果做不好细节,这个方法非常容易出现过拟合,

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值