虚拟变量和独热编码有什么区别?

14

我正在为一个机器学习模型制作功能。 我对虚拟变量和独热编码感到困惑。例如,类别变量“week”范围为1-7。使用独热编码时,将 week = 1 编码为1,000,000, week = 2 编码为0,100,000...。但我也可以创建一个虚拟变量 'week_v' ,需要设置一个基准变量 hidden variable ,并且特征 week_v = 1 为100,000, week_v = 2 为010,000...而不出现 week_v = 7 。那么它们之间有什么区别?我正在使用逻辑回归模型,然后尝试gbdt。


其实并没有什么区别。One-hot编码是创建虚拟变量的方法。选择其中一个作为基础变量是必要的,以避免变量之间的完全多重共线性。 - ayhan
你可能会对查看这个链接感兴趣,以了解根据所选择的方法如何改变自由度。 - Mattia Paterna
2个回答

11

事实上,两种方法(即措辞)对回归的影响没有区别。

不管哪种情况,你都必须确保其中一个虚拟变量被省略(即作为基础假设),以避免集合中的完全多重共线性问题。

例如,如果您想考虑观察结果的“工作日”因素,则只需使用6个(而不是7个)虚拟变量,假定留出一个做为基准变量。当使用独热编码时,您的“工作日”变量将作为分类值出现在单个列中,有效地使回归使用其值中的第一个作为基础。


4

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

 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正则化等方法来修剪冗余输入。这种额外的自由度使框架能够在生产环境中透明地处理缺失的输入,因为所有缺失的输入将被视为全零。

 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
这似乎是来自“Lakshmanan,V.,Robinson,S.和Munn,M。(2020)。机器学习设计模式。O'Reilly Media.,第29页”的逐字引用,请引用出处。 - Disenchanted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接