特征编码
模型输入的特征通常需要数值型的,所以需要将非数值型特征转换为数值特征。如性别、职业、收入水平、国家、汽车使用品牌等。
特征编码包括数字编码、One-Hot 编码、哑变量编码方法。
-
数字编码
例如,原始数据特征:收入水平={贫困,低收入,小康,中等收入,富有},编码后:收入水平={0,1,2,3,4}。
缺点:引入了次序关系。 -
One-Hot 编码
也称为独热编码,将类别变量转换为机器学习算法易于利用的一种形式的过程。直观来说就是有多少个状态就有多少比特,而且只有一个比特为 1,其它全为 0 的一种码制。One-Hot 编码是分类变量作为二进制向量的表示,将包含 n 个取值的离散型特征转换成 n 个二元特征(取值为 0 或 1)。
例如:学历特征={小学,中学,本科,硕士,博士},One-Hot 编码如下:
原始特征取值 f1 f2 f3 f4 f5 小学 1 0 0 0 0 中学 0 1 0 0 0 本科 0 0 1 0 0 硕士 0 0 0 1 0 博士 0 0 0 0 1 对于 One-Hot 来说,如果一个特征有 n 个类别,那么就有 n 个变量,每个变量“管理一个类别取值”,这样就形成了一个长度为 n 的稀疏向量。
如果多个特征需要独热码编码,那么就按照上面的方法依次将每个特征的独热码拼接起来。例如,有三个特征属性:性别={“男”,“女”}、学科={“语文”,“数学”、“英语”}、地区={“北京”,“上海”,“广州”,“深圳”},对于某一个样本,如[“男”,“数学”,“深圳”],可以采用序列化的数字编码方式:[0,1,3]。但是这样的特征处理并不能直接放入机器学习算法中。性别的属性是二维的,学科的属性是三维的,地区的属性则是四维的, “男”对应着[1,0],同理“数学”对应着[0,1,0], “深圳”对应着[0,0,0,1],则完整的特征数字化的结果为:[1,0,0,1,0,0,0,0,1]。这样导致的一个结果就是数据会变得非常的稀疏。
优点:
①经过 One-Hot 编码之后,不同的原始数据之间拥有相同的距离;
②One-Hot 编码对包含离散型特征的回归模型及分类模型效果有很好提升。
缺点:特征显著增多,且增加了特征之间的相关性: -
哑变量编码(dummy encoding)
将包含 n 个取值的离散型特征转换成 n −1 个二元特征(取值为 0 或 1)。哑变量编码与 One-Hot 编码很类似,区别在于哑变量认为对于一个具有 n 个类别的特征,我们只需要考察 n -1 个类别是否存在,第 n 个类别自然就知道了。对于上面的学历特征来说,如果知道一个特征值不是小学、不是中学、不是本科、不是硕士,我们自然就知道该学历特征是博士了,因此各个类别的编码变为:
原始特征取值 f1 f2 f3 f4 小学 1 0 0 0 中学 0 1 0 0 本科 0 0 1 0 硕士 0 0 0 1 博士 0 0 0 0 也就是说,One-Hot 编码方式冗余了,我们只需要知道 n -1 个类别,自然就知道第n 个类别的信息了。
优点:解决了 One-Hot 编码特征之间存在线性关系的问题,避免特征编码对线性回归等模型的影响。
来源:CSDN
作者:明天一定会更好
链接:https://blog.csdn.net/jcfszxc/article/details/103952590