资讯 人工智能开发者
此为临时链接,仅用于文章预览,将在时失效

请停止对分类变量进行独热编码!

作者:AI研习社-译站
2020/09/03 14:56

请停止对分类变量进行独热编码!

字幕组双语原文:请停止对分类变量进行独热编码!

英语原文:Stop One-Hot Encoding Your Categorical Variables.

翻译:雷锋字幕组(chenx2ovowiige


独热编码,又称虚拟变量,是一种将分类变量转换为若干二进制列的方法,其中1表示存在属于该类别的那一行。

请停止对分类变量进行独热编码!

很显然,从机器学习的角度来看,它并不是一个对分类变量编码的很好的选择。

一般来说,维度的数量越低越好,而这种方法很明显增加了大量的维度。例如,如果我们要有一列代表美国的州(比如加州、纽约州),独热编码就会增加五十个维度。

它不仅给数据集增加了大量的维度,而且冗余信息太多——1偶尔点缀在零的海洋中。这个异常稀疏的矩阵,使得它很难处理优化问题。对于神经网络来说尤其如此,这几十个空的维度使得神经网络的优化器在错误空间中寻找最优解时就会遇到许多麻烦。

更糟糕的是,每一个信息稀疏的列之间都有线性关系。这意味着一个变量可以很容易地使用其他变量进行预测,高维度下这会造成的并行性和多线性问题。

请停止对分类变量进行独热编码!

最优的数据集由独立且包含有价值信息的特征组成,而独热编码张成的空间却不是这样的。

当然,如果只有三个或四个类别,独热编码可能还不是那么糟糕,但根据数据集的相对大小,探索其他选择也是值得。

目标编码是表示分类列的一种非常有效的方法,只占用一个特征的空间。其又称均值编码,列中的每个值都用该类别的目标均值代替。这样可以更直接地表示分类变量和目标变量之间的关系,是一种非常流行的技术(尤其是在Kaggle比赛上)。

请停止对分类变量进行独热编码!

这种编码方法有一些缺点。首先,它使模型更难学习均值编码变量和另一变量之间的关系,它只根据一列变量与目标变量的关系来得出相似性,这既可能是个优点也可能是个缺点。

但主要的是,这种编码方法会对变量y非常敏感,从而影响模型提取编码信息的能力。

由于类别的每一个值都被替换为相同的数值,模型可能会倾向于过拟合它所见的编码值(比如将0.8与0.79联系成完全不同的东西)。这就是将连续值视为大量重复类的影响。

因此,需要仔细监控y变量是否存在异常值。

要实现这一点,可以使用category_encoders库。由于目标编码器是一种监督方法,所以它需要包含x和y两个值才能训练。

请停止对分类变量进行独热编码!

留一法编码试图弥补这种对y变量的依赖,并通过排除当前行的数值来计算平均值作为编码,使数值更加多样化。这种方法可以消除离群值的影响,并生成了更多样化的编码值。

请停止对分类变量进行独热编码!

由于该方法显示了每个编码类相同的数值和范围,因此他可以学到更好的泛化能力。

与其他方法一样,留一法编码可以通过category_encoders库中的LeaveOneOutEncoder来进行实现。

请停止对分类变量进行独热编码!

另一种能实现类似效果的方法是在编码中加入正态分布的噪声,其中正态分布的标准差是一个可调节的参数。

贝叶斯标签编码是一种更偏向数学的方法,将标签作为一种编码方法。只使用平均数作为度量可能存在一定的欺骗性,因此贝叶斯标签编码寻求纳入标签变量分布的其他统计量,例如它的方差或偏度--被称为 "高矩"。

然后通过贝叶斯模型将这些分布的属性纳入其中,从而能够产生一个更了解类别标签分布的编码。但是,这种方法结果可解释性较差。

证据权重是对分类独立变量和因变量之间的关系的另一种微妙的表现。WoE是从信用评分领域演变而来的。它用于衡量违约客户和还款客户之间的差异。证据权重的数学定义是几率比的自然对数:

ln (% of non events / % of events)

WoE越高,表明事件发生的可能性越大。'非事件'是那些不在某个类别中的事件发生的百分比。对于逻辑回归来说,使用证据权重建立与因变量的单调关系(永远不会停止向一个方向发展),并确保逻辑尺度上的类别,这是很自然的一件事。WoE还是另一个度量指标 "信息值 "的关键组成部分,它可以衡量一个特征能为预测提供的信息量大小。

请停止对分类变量进行独热编码!

这些方法都是有监督的编码器,或者说是考虑目标变量的编码方法,因此他们在预测任务中大都效果较好。然而当需要进行无监督分析时,他们就未必能取得类似的结果。

非线性PCA是一种通过使用分类量化来处理分类变量的PCA方法。它可以为类别找到最佳的数值,从而使常规PCA的性能(解释方差)最大化。在下面阅读更多信息:
超越普通PCA:非线性主成分分析
这里的类别编码文档中探索其他几种编码选项。

感谢您的阅读!


雷锋字幕组是一个由 AI 爱好者组成的翻译团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业变革与技术创新的见解。

团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。

如果,你也是位热爱分享的AI爱好者。欢迎与雷锋字幕组一起,学习新知,分享成长。

请停止对分类变量进行独热编码!

雷锋网雷锋网

长按图片保存图片,分享给好友或朋友圈

请停止对分类变量进行独热编码!

扫码查看文章

正在生成分享图...

取消
相关文章