【从零开始的ML-02】LinearRegression 类别型变量引入线性回归的几种方法

1. Replace 直接替换

例如根据学生测验成绩(0-100分)划分为A(>90)B(80-90)C(70-80)D(<70)四个阶段.
在这里插入图片描述

2.map()替换

类似replace(),没有指定全部映射关系会出现NaN
在这里插入图片描述

3.LabelEncoding标签编码

作用是为变量的n个唯一取值分配一个[0,n-1]之间的编码,将该变量转化成连续的数值型变量。LabelEncoding根据原各唯一取值的先后顺序进行排序后为其转化为对应次序的数值,转化后的结果也在数值上体现了这一优势。
在这里插入图片描述


• 相较于 Replace 等直接替换的方法,LabelEncoding 可以快速简便地将各取值转换成数值
• LabelEncoding 处理后的数值为取值范围[0, n-1]的整数数值,在计算空间距离等算法中存在优先级关系。因此 LabelEncoding 适合有序数据的处理
• LabelEncoding 处理后的取值,是没有具体含义的,数值不同只做区分作用,而不同于连续性数值一般具有现实意义(如在房屋售价回归模型中,房屋面积的增量可能导致售价的增量)
• 对于无序数据,如动物的种类,LabelEncoding 处理后的结果会使得无序数据存在有序性,这会扰乱原数据间的关系。因此 LabelEncoding 不适用于无序数据的处理


4.OneHot Encoding独热编码

独热编码是针对无序数据常用的编码方案,对于原变量中存在的 n 个唯一的类别取值,OneHotEncoding 会依赖于原取值生成新的 n 个0-1变量,新生成的每个变量都只有0和1两个取值。新生成的 n 个变量进行组合,就可以表示原变量的 n 个唯一取值。可以理解为对有 n 个取值的变量,经过独热编码处理后,转为 n 个二元变量,每次只有一个激活。处理后的新数据既能解决数值化问题,又能够避免数值大小带来的优先级影响,但因为根据一个原有变量会生成n个新变量,数据集会变得稀疏。
百度解释:
在这里插入图片描述

两种实现方式:
一:sklearn包的OneHotEncoder。
在这里插入图片描述

Sklearn库中的OneHotEncoder()方法只能处理数值型变量,对于字符型变量需要使用LabelEncoder()转化为数值数据后再使用独热编码处理,且需要自行在原数据集中删去进行独热编码处理的原变量

在这里插入图片描述


• 小结:独热编码将类别型数据转换成 n 个0-1变量,从而在数值上避免了这部分数据不应有的优先级问题。
• 优点:独热编码解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。
• 缺点:当类别的数量很多时,特征空间会变得非常大,即庞大的稀疏矩阵。在这种情况下,一般可以用PCA来减少维度。而且独热编码+PCA这种组合在实际中也非常有用。
• 独热编码同下文提及的虚拟变量,在应用时认为是同一处理方法的不同表达。


5. 虚拟变量(Dummy Variable)

定性变量成为指标变量,二元变量或分类变量,例如性别,年龄,宗教,民族,婚姻状况,教育程度等。

虚拟变量的作用:

分离异常因素的影响,检验不同属性类型对因变量的作用,提高模型精度,将不同属性的样本合并,扩大了样本容量(增加误差自由度,降低误差方差)

在这里插入图片描述

小结:

虚拟变量将类别型变量转化成n-1个0-1变量,在数值上避免了这部分数据不应有的优先级和虚拟变量陷阱问题,在应用时,虚拟变量和独热编码一般认为是同一处理方法,一般情况下使用独热编码(n个0-1变量),如果涉及线性回归问题则需要转化虚拟变量处理(n-1个0-1 变量)

针对高势集的解决方法:

高势集,或称高数量类别特征(high-cardinality categorical attributes),是指不同值的数量非常多的类别型特征。反正,则称之为“低数量类别特征”,也就是我们一般考虑时的情况。在高势集上使用独热编码会导致数据集的列数变得十分庞大。
①. 主观合并类别

,根据相关业务背景、专业知识,对这些取值进行划分合并,手动将原始的 n 种取值降为 k 种取值(k远小于n)。这样就可以把高数量类别特征转化成为低数量类别特征。随后,再对转化后的低数量类别特征应用OneHot编码等处理,即可避免产生过于庞大的稀疏矩阵。

②.Clustering,

将原始的 1-to-n 的 mapping 问题变成 1-to-k 的 mapping 问题(k远小于n)。为了达到这个目标,这个高数量类别属性首先将依据 target 的值 grouping 成k个类(clusters),然后再依据这个 grouping 的结果进行 one-hot 编码。Clustering侧重于使用相关算法及度量指标进行转化,最大化的保留了原始数据的信息。

③.重编码:
3.1:哈希编码

哈希值是一个有限集合,输入数据则可以是无穷多,成熟的哈希算法会有较好的抗冲突性,同时在实现哈希表的结构时要考虑到哈希冲突的问题,哈希法可以降低特征数量,从而加速算法训练与预测过程,以及降低内存消耗,哈希法会把多个原始特征哈希到相同的位置上,出现哈西里的collision现象,但对算法的精度影响很小
在这里插入图片描述

 哈希编码可以作为一种降维方法,实现简单,所需计算量小且效果好
 哈希编码可以保持原有特征的稀疏性
 哈希后学习到的模型很难检验,无法对模型参数做解释

3.2均值编码:将原来独立的高数量类别特征的每个值映射到概率估计上

总结:

定类类型数据:

使用OneHotEncoding。定类类型就是纯分类,不排序,没有逻辑关系,比如性别分男女,男女之间不存在逻辑关系, 中国各省市分类也可以使用独热编码,各省间不存在逻辑关系。如果转化为n-1个变量,即做虚拟变量

定序类型数据:

使用LabelEncoding。定序类型也是分类,但有排序逻辑关系,等级上高于定类,例如,学历上小学初中高中本科研究生,各个类别之间存在一定的逻辑,显然研究生学历是最高的小学最低,此时使用LabelEncoding会更合适,因为自定义的数字顺序可以不破坏原有逻辑,并与这个逻辑相对应。

数值大小敏感的模型:

必须使用OneHotEncoding或者Dummy.典型例子就是LR和svm。二者的损失函数对数值大小是敏感的,并且变量间的数值大小是比较有意义的,而LabelEncoding的数字编码没有数值大小的含义,只有一种排序,因此这些模型都使用OneHotEncoding

数值大小不敏感的模型:

对数值大小不敏感的模型(例如树模型)最好不适用OneHotEncoding。一般这类模型为树模型,将离散型特征进行OneHot编码的作用,是为了让距离计算更合理,但如果特征是离散的,并且不用one_hot编码就可以很合理的计算出距离,那就没必要进行One_hot编码。有些基于树的算法在处理变量时,并不是基于向量空间度量,数值只是个类别符号,即没有偏序关系,所以不用进行独热编码。 Tree Model不太需要one-hot编码: 对于决策树来说,one-hot的本质是增加树的深度。如果分类类别特别多,那么one-hot encoding会分裂出很多特征变量。这时候,如果我们限制了树模型的深度而不能向下分裂的话,一些特征变量可能就因为模型无法继续分裂而被舍弃损失掉了。因此,此种情况下可以考虑使用Label encoding。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值