阅读 105

机器学习D2--Encoding:机器学习中类别变量的编码方法总结

这篇文章主要介绍一下encoding的几种类型。以下是一个最基础的分类:


什么是catergorical data

当一个数据的特征是有限的离散变量时,它分为Nominal, Ordinal and Continuous 这几个不同的种类;

为什么要进行encoding处理:

处理后可以放入

常见的encoding类型

1. Label Encoding

直观例子:

•根据数据的分类直接进行编码, 例子:classMap = {'大一':1,'大二':2,'大三':3,'大四':4}

适用情况

• 对于有固定类型,且类型之间有排序高低的离散变量

代码

• labelEncoder(sklearn), factorize (pandas)

优势

• 可以自由定义顺序

劣势

• 顺序的数值大小没有任何的含义,可以自己定义

• 自己定义的情况下,有些地方把它定义为ordinal encoding

下一步问题

• 如果想根据排列等级高级进行有序排序,可以使用怎样的方法?Ordinal Encoding

2. Ordinal Encoding

• 对于有固定类型,且类型之间有排序高低的离散变量;可以参照lable encoding

• 代码

• map in a dataframe(pandas)

• from sklearn.preprocessing import OrdinalEncoder

3. One hot Encoding

方法

• 根据离散特征值,有几种数值就建立几个特征向量,取值为(1,0,0)的情况

适用情况

• 离散特征值取值的大小没有意义的情况下

• 对于数值大小敏感的模型适用,如SVM,LR

代码

• 实现方法1: get_dummies from pandas

• 实现方法2:OneHotEncoder() from preprocessing

优势

• 不会人为引入有序性

• 让特征的距离更加合理:通过把特征向量投射到欧式空间,每个变量之间的距离是一样的,如果是3个向量的话,类比一个正方体,(1,0,0),(0,1,0),(0,0,1)

• 可以进行特征的归一化处理: 可以看做连续的特征,这样可以进行归一化处理

劣势

• 特征越多,产生的feature越多,容易sparse,导致模型的overfitting,如tree based model如果feature太多,就不适用这个方法

• Dummy variable trap

• 如果feature高度相似,容易陷入Dummy variable trap,即用过多的变量来描述类似的特征,但想解决需要前期有行业知识或经验来支撑你的推论。

4.Dummy Encoding

方法

• 和one hot encoding很相似,但是会去掉一个feature,即用N-1个feature来表示所有的离散变量,被去掉的那个用(0,0,0,0)来表示


5.Binary Encoding

方法

• 可以理解为lable encoding的变种,把数字转化为二进制的数,再根据有多少位数,把它分别转化成每一行


代码

• BinaryEncoder from category_encoders package

6.Target Encoding ----Mean Encoding

• 方法

• 这里涉及到两个因素,一个是特征向量本身,一个是target(往往是1,0的lable),通过计算一个类别中sum(target)/count(label)来算平均数,并把这个值作为计算的平均值

• 通常需要进行正则化

• 例子

• 优势

• kaggle比赛常用,可能效果比较好

• 既反映不同feature的特点(不同数值),也把target和lable的关系反应进去

• 不影响数据的量,且不影响机器学习效率

• 劣势

• 很难validate,必须进行cross validation

特点

• encoding的lable直接与target相关

7. Frequency Encoding

方法

• 把特征向量按照类别计数,并计算出每个类别的频率,用频率来代替特征向量的值

代码

• pandas,groupby,len(df)计算总数

优势

• 加入了频率的信息

 其他还没有来得及介绍的Encoding:

8) Weight of Evidence Encoding

9) Probability Ratio Encoding

10) Hashing Encoding

11) Backward Difference Encoding

12) Leave One Out Encoding

13) James-Stein Encoding

14) M-estimator Encoding

15) Effect Encoding

16) BaseN Encoding

参考文献:

One hot Encoding

https://www.cnblogs.com/zongfa/p/9305657.html#:~:text=%E4%B8%BA%E4%BA%86%E8%A7%A3%E5%86%B3%E4%B8%8A%E8%BF%B0%E9%97%AE%E9%A2%98%EF%BC%8C%E5%85%B6%E4%B8%AD,%E5%85%B6%E4%B8%AD%E5%8F%AA%E6%9C%89%E4%B8%80%E4%BD%8D%E6%9C%89%E6%95%88%E3%80%82

Label encoding

https://zhuanlan.zhihu.com/p/42075740

other

https://towardsdatascience.com/all-about-categorical-variable-encoding-305f3361fd02

https://www.datacamp.com/community/tutorials/encoding-methodologies

https://www.analyticsvidhya.com/blog/2020/08/types-of-categorical-data-encoding/

作者:阿呆很忙

原文链接:https://www.jianshu.com/p/81b80989de62

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐