您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

不要再对类别变量进行独热编码了

时间:2020-09-08 09:49:34  来源:  作者:

作者:Andre Ye

编译:ronghuaiyang

导读

还有很多更好的选择。

不要再对类别变量进行独热编码了

 

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

不要再对类别变量进行独热编码了

 

很明显,从机器学习的角度来看,它不是分类变量编码的好选择。最明显的是它增加了大量的维数,这是常识,通常低维数是更好的。例如,如果我们要用一列表示美国的一个州(例如加利福尼亚、纽约),那么独热编码方案将会导致50个额外的维度。

它不仅给数据集增加了大量的维数,而且确实没有多少信息 —— 一大堆零中偶尔点缀着几个1。这导致了一个异常稀疏的现象,这使得它很难进行最优化。这对于神经网络来说尤其如此,它的优化器在几十个空维度的情况下很容易进入错误的优化空间。

更糟糕的是,每个信息稀疏列之间都存在线性关系。这意味着一个变量可以很容易地使用其他变量进行预测,从而导致并行性和多重共线性的问题。

不要再对类别变量进行独热编码了

 

最优数据集由信息具有独立价值的特征组成,而独热编码创建了一个完全不同的环境。

诚然,如果只有3个或者甚至4个类别,独热编码可能不是一个糟糕的选择,但是它可能值得探索其他选择,这取决于数据集的相对大小。

目标编码是表示分类列的一种非常有效的方法,它只占用一个特征空间。也称为均值编码,将列中的每个值替换为该类别的均值目标值。这允许对分类变量和目标变量之间的关系进行更直接的表示,这是一种非常流行的技术(尤其是在Kaggle比赛中)。

不要再对类别变量进行独热编码了

 

这种编码方法有一些缺点。首先,它使模型更难学习一个平均编码变量和另一个变量之间的关系,它只根据它与目标的关系在一列中绘制相似性,这可能是有利的,也可能是不利的。

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

由于每个类别的值都被相同的数值所取代,模型可能会倾向于过拟合它所看到的编码值(例如,将0.8与某个与0.79完全不同的值相关联)。这是将连续尺度上的值当作重复的类来处理的结果。

因此,需要仔细监视y变量,以发现异常值等情况。

要实现这一点,请使用category_encoders库。由于目标编码器是一个受监督的方法,它需要X和y训练集。

from category_encoders import TargetEncoder
enc = TargetEncoder(cols=['Name_of_col','Another_name'])
training_set = enc.fit_transform(X_train, y_train)

Leave-one-out encoding试图通过计算平均值(不包括当前行值)来弥补对y变量的依赖以及在值方面的多样性。这将消除异常值的影响,并创建更多样化的编码值。

不要再对类别变量进行独热编码了

 

由于模型对每个编码类不仅给予相同的值,而且给予一个范围,因此它学会了更好地泛化。

像往常一样,可以在category_encoders库中使用LeaveOneOutEncoder实现。

from category_encoders import LeaveOneOutEncoder
enc = LeaveOneOutEncoder(cols=['Name_of_col','Another_name'])
training_set = enc.fit_transform(X_train, y_train)

另一个实现类似效果的策略是在编码分数中加入正态分布的噪声,其中标准偏差是一个可以调优的参数。

Bayesian Target Encoding是一种使用目标作为编码方法的数学方法。只使用平均值可能是一个欺骗的度量,所以贝叶斯目标编码试图合并目标变量的分布的其他统计度量,例如它的方差或偏度 —— 被称为‘higher moments’。

这些分布的属性然后通过贝叶斯模型合并,从而能够产生一种编码,这种编码更了解分类目标分布的各个方面。然而,其结果却难以解释。

Weight of Evidence是另一种关于分类自变量和因变量之间关系的方案。WoE 源自信用评分领域,被用来衡量违约或偿还贷款的客户之间的区别。Weight of Evidence的数学定义是比值比例的自然对数,即:

ln (% of non events / % of events)

WoE越高,事件越有可能发生。‘Non-events’是那些不属于某个类的百分比。使用Weight of Evidence因变量建立单调的关系,并在逻辑尺度上确保类别,这对于逻辑回归来说很自然。WoE是另一个度量标准 —— Information Value中的一个关键组件,IV值衡量一个特征如何为预测提供信息。

from category_encoders import WOEEncoder
enc = WOEEncoder(cols=['Name_of_col','Another_name'])
training_set = enc.fit_transform(X_train, y_train)

这些方法都是监督编码器,或考虑目标变量的编码方法,因此在预测任务中通常是更有效的编码器。但是,当需要执行非监督分析时,情况就不一定是这样了。

Nonlinear PCA是一种利用分类量化方法处理分类变量的主成分分析方法。这将为类别找到最佳数值,从而使常规PCA的性能(解释方差)最大化。

 

英文原文:https://towardsdatascience.com/stop-one-hot-encoding-your-categorical-variables-bbb0fba89809



Tags:编码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
此文由前美团前端工程师@小鱼儿授权发布背景在日常开发中很少接触到字符的概念,大部分语言对字符的转换都已经封装的足够好,不需要开发人员过多考虑编码解码的问题。但是字符...【详细内容】
2021-12-14  Tags: 编码  点击:(25)  评论:(0)  加入收藏
编码封装的好处:没有安装pycharm的电脑也可以运行代码,适合接单的同学,可以将封装好的代码发给客户。步骤如下: 第一步 安装库pip install pyinstaller因为程序自身存在缺陷,首先...【详细内容】
2021-12-07  Tags: 编码  点击:(19)  评论:(0)  加入收藏
视频编码是一门在减少视频数据体积大小或码率的同时而不对其质量产生不良影响(在人类的视觉感知下)的科学。对视频进行编码从而减少其数据体积同时保持视频质量是一项综合了艺术和科学的技术。在本篇文章中,我们将介绍这...【详细内容】
2021-10-11  Tags: 编码  点击:(43)  评论:(0)  加入收藏
H.264编码原理以及I帧B帧P帧前言-----------------------H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段...【详细内容】
2021-08-16  Tags: 编码  点击:(56)  评论:(0)  加入收藏
一、基本概念 1 比特率:表示经过编码(压缩)后的音频数据每秒钟需要用多少个比特来表示,单位常为kbps。2 响度和强度:声音的主观属性响度表示的是一个声音听来有多响的程度。响度...【详细内容】
2021-08-16  Tags: 编码  点击:(69)  评论:(0)  加入收藏
缩进使用soft tab(4个空格)。var x = 1, y = 1;if (x < y) { x += 10;} else { x += 1;}单行长度不要超过80,但如果编辑器开启word wrap可以不考虑单行长度。分号以下...【详细内容】
2021-08-13  Tags: 编码  点击:(91)  评论:(0)  加入收藏
前言 传统定时器是硬编码。但是有的时候业务上需要不断地调整问题描述 我们开发了一个定闹钟的功能。这个功能肯定是定时器开发。但是这就存在一个问题这个定时是动态的。那...【详细内容】
2021-06-17  Tags: 编码  点击:(128)  评论:(0)  加入收藏
在项目中,对豹纹进行压缩、加密后,最后一步一般是 base64 编码。因为 base64 编码的字符串更适合不同平台,不同语言的传输。base64 编码的优点: 算法是编码,不是压缩,编码后只会增...【详细内容】
2021-05-14  Tags: 编码  点击:(211)  评论:(0)  加入收藏
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)2、...【详细内容】
2021-04-02  Tags: 编码  点击:(241)  评论:(0)  加入收藏
本文由华为云资深产品专家左雯在LiveVideoStackCon2020线上峰会的演讲内容整理而成,本文从视频编解码技术的趋势、难点和挑战以及华为云视频产品的编解码关键技术实践与成果...【详细内容】
2020-10-30  Tags: 编码  点击:(60)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条