为什么我们需要虚拟代码分类变量


22

我不确定为什么我们需要虚拟代码分类变量。例如,如果我有一个类别变量,它具有四个可能的值0、1、2、3,则可以用二维替换它。如果变量的值为0,则它​​在二维中的值为0,0,如果变量为3,则它在二维中的值为1,1,依此类推。

我不确定为什么我们需要这样做?

Answers:


20

假设您的四个类别是眼睛的颜色(代码):棕色(1),蓝色(2),绿色(3),淡褐色(4)-暂时忽略异色症,紫色,红色,灰色等。

即使我3 = 3 × 14 = 2 × 2,也绝不会(我现在可以想象)表示绿色= 3 ×棕色,或榛树= 2 ×蓝色,正如我们的代码所暗示的那样。=3×=2×3=3×1个4=2×2

因此(除非出于某种原因我们希望这种含义渗入我们的分析中),我们需要使用某种编码。虚拟编码就是一个例子,它从我们想要讲述的关于眼睛颜色的统计故事中消除了这种关系。效果编码和赫克曼编码是其他示例。

更新:您针对四个类别的两个变量的示例与我对“虚拟代码”一词的理解不符,该术语通常需要用k 1个虚拟变量(按类别对观察结果进行排序)替换类别(例如4 ):ķķ-1个

id  category  dummy1 dummy2 dummy3
 1         1       1      0      0
 2         1       1      0      0
 3         2       0      1      0
 4         2       0      1      0
 5         3       0      0      1
 6         3       0      0      1
 7         4       0      0      0
 8         4       0      0      0

假设模型中存在常量,类别4是参考类别,例如:

ÿ=β0+β1个d1个+β2d2+β3d3+ε

其中是的平均值Ŷ当类别= 4,和β与每个虚设相关术语表示通过什么量ý更改自β 0该类别。β0ÿβÿβ0

如果你具有恒定的()的模型项,那么你就需要多一个“虚拟”的预测(也许不经常被称为“指标变量”),实际上则假人的每个表现为每种类别的模型常数:β0

ÿ=β1个d1个+β2d2+β3d3+β4d4+ε

因此,这可以解决我首先提到的类别代码之间创建荒谬的定量关系的问题,但是为什么不按照您的建议使用user12331编码呢?user12331编码候选A:

id  category   code1  code2
 1         1       0      ?
 2         1       0      ?
 3         2       1      ?
 4         2       1      ?
 5         3       ?      0
 6         3       ?      0
 7         4       ?      1
 8         4       ?      1

您很正确地指出,一个可以使用2个二进制变量(即两位)表示4个值。不幸的是,一种解决方法(类别1和类别2的代码1,类别3和类别4的代码2)留下了由问号表示的歧义:在那里会有什么值?

好吧,关于第二种方法,将其称为user12331编码候选B:

id  category   code1  code2
 1         1       0      0
 2         1       0      0
 3         2       0      1
 4         2       0      1
 5         3       1      0
 6         3       1      0
 7         4       1      1
 8         4       1      1

那里!没有歧义吧?对!不幸的是,所有这些编码所做的都是以二进制表示形式表示数字量1-4(或0-3),这完全保留了将这些不良数量关系赋予类别的问题。

因此,需要另一种编码方案。

β


5
虽然此答案说明了我们不能使用一个变量的原因(即我们确实需要“某种编码”),但它(尚未)解释为什么我们不能说两个变量,例如OP在问题中提出建议。
Glen_b-恢复莫妮卡2014年

@Glen_b谢谢。希望我的更新对您有所帮助。
Alexis 2014年

2
请注意,两个二进制变量足以表示4个类别[(0,0),(0,1),(1,0),(1,1)],但这不是伪代码进行分析的适当方法。OP似乎编码错误。
Ellis Valentiner

@ user12202013是。就像我上一个例子一样。
Alexis 2014年

如果我要按照OP的建议使用两个变量进行二进制编码,但是如果目标是预测,那么非参数,非线性分类器/回归器将不能很好地工作呢?
tool.ish

1

我对这个问题的看法是,在某些机器学习算法中,仅使用两个变量对四个可能的状态进行编码就不如使用四个变量来表达。

例如,假设您要进行线性回归,并且您的真实映射将值0,1和2映射为0,将值3映射为1。您可以快速检查是否在编码时无法通过线性回归学习此映射您的类别变量只有两个二进制变量(只需尝试使相应平面适合您的头部即可)。另一方面,当您使用1-Of-K编码时,这不会有问题。


0

您也可以选择一个伪代码。您选择最能表达与因变量之间关系的伪代码。例如,颜色可以表示为n的1,或者可以转换为数字rgb分量,也可以分类:n的girly / muddy / ... 1基本上意味着分别学习每个实例,如果没有关系,则很好。..但在存在关系的情况下,您正在浪费数据。.您必须分别估计类别的每个实例的系数...将作业视为类别变量。您可能会重新分类为市场部门和资历。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.