首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >伪变量和one-hot编码有什么区别?

伪变量和one-hot编码有什么区别?
EN

Stack Overflow用户
提问于 2016-12-14 15:15:39
回答 2查看 12.9K关注 0票数 14

我正在为一个机器学习模型制作功能。我混淆了伪变量和one-hot encoding.For a实例,一个类别变量'week'范围为1-7。当使用one-hot编码时,将week = 1编码为1,000,000,week = 2为0,100,000....But我也可以做一个伪变量'week_v',这样,我必须设置一个hidden variable,这意味着基变量,week_v = 1是100,000,week_v = 2是010,000...和没有出现,week_v = 7,.So,它们之间的区别是什么?我正在使用逻辑模型,然后我将尝试gbdt。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-14 15:41:07

事实上,这两种方法(更确切地说是措辞)对回归的影响没有区别。

在任何一种情况下,你都必须确保你的一个假人被遗漏(即作为基本假设),以避免集合之间的完美多重共线性。

例如,如果您想要考虑观察值的weekday,则只使用6个(而不是7个)虚拟对象,假设省略的那个是基本变量。在使用one-hot编码时,weekday变量作为分类值出现在一个单独的列中,有效地让回归使用它的第一个值作为基础。

票数 10
EN

Stack Overflow用户

发布于 2020-12-27 04:07:50

从技术上讲,一周6天足以为7大小的词汇表提供独特的映射:

代码语言:javascript
复制
 1. Sunday    [0,0,0,0,0,0]
 2. Monday    [1,0,0,0,0,0]
 3. Tuesday   [0,1,0,0,0,0]
 4. Wednesday [0,0,1,0,0,0]
 5. Thursday  [0,0,0,1,0,0]
 6. Friday    [0,0,0,0,1,0]
 7. Saturday  [0,0,0,0,0,1]

虚拟编码是一种更紧凑的表示,在输入线性独立时表现更好的统计模型中,它是首选的。

然而,现代机器学习算法不要求它们的输入是线性独立的,并使用L1正则化等方法来修剪冗余输入。额外的自由度允许框架透明地将生产中缺失的输入处理为全零。

代码语言:javascript
复制
 1. Sunday    [0,0,0,0,0,0,1]
 2. Monday    [0,0,0,0,0,1,0]
 3. Tuesday   [0,0,0,0,1,0,0]
 4. Wednesday [0,0,0,1,0,0,0]
 5. Thursday  [0,0,1,0,0,0,0]
 6. Friday    [0,1,0,0,0,0,0]
 7. Saturday  [1,0,0,0,0,0,0]

 for missing values : [0,0,0,0,0,0,0]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41136853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档