分类编码方式

分类编码

记录一下除了one-hot编码、target-encoding和直方图编码等等,还有一些没有学习过的编码方式。使⽤不同的编码归根结底就是从具有分类特征的单个列中创建不同的 (设计) 矩阵。

1.Dummy coding(哑编码)

和 pandas 的 get_dummy 函数一致。设计矩阵为

1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 \begin{array}{ccc} 1 & 0 & 0\\\\ 1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 1 & 0\\\\ 0 & 0 & 1\\\\0 & 0 & 1\end{array} 110000001100000011

2.effect encoding(效应编码)

ucla的一篇讲解文章FAQ: What is effect coding?

为什么使用effect encoding?

如果只有几个简单的类别变量,那么使用dummy encoding和effect encoding都是一样的。但是,对于有两个类别变量交互的情况,使用effect encoding会有更多好处。主要的好处是你可以使用效果编码对主效应和交互作用进行合理的估计。使用虚拟编码,对交互作用的估计很好,但主效应不是“真正的”主效应,而是所谓的简单效应,即一个变量在另一个变量的一个水平上的效应。这就是为什么大多数方差分析程序在估计方差分析模型中的各种效应时使用某种类型的效应编码。设计矩阵为

1 − 1 − 1 1 − 1 − 1 1 1 0 1 1 0 1 0 1 1 0 1 \begin{array}{ccc} 1 & -1 & -1\\\\ 1 & -1 & -1\\\\1 & 1 & 0\\\\1 & 1 & 0\\\\ 1 & 0 & 1\\\\1 & 0 & 1\end{array} 111111111100110011

3.Treatment Coding

在 Treatment Coding 中,每个类别的权重是对应类别和参照类别之间预测的估计差值。线性模型的截距是参照类别的平均值 (当所有其他特征保持不变时)。设计矩阵的第⼀列是截距,它始终是 1。第⼆列表⽰实例是否在 B 类中,第三列表⽰实例是否在 C 类中。A 类不需要列,因为此时只要知道⼀个实例既不属于 B 类也不属于 C 类就⾜够了,不然线性⽅程会被过度指定,并且找不到权重的唯⼀解。

1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 \begin{array}{ccc} 1 & 0 & 0\\\\ 1 & 0 & 0\\\\1 & 1 & 0\\\\1 & 1 & 0\\\\ 1 & 0 & 1\\\\1 & 0 & 1\end{array} 111111001100000011

这些编码方式主要应用于线性回归的相应分类特征的权重分析,可解释性分析。

详细编码介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值