0

我看到许多特征工程在对象特征上都有 get_dummies 步骤。例如,将包含“M”和“F”的性别列虚拟成两列,并将它们标记为 one-hot 表示。为什么我们不直接将性别列中的'M'和'F'设为0和1?虚拟方法在分类和回归模型中对机器学习模型有积极影响吗?如果是,为什么?谢谢。

4

2 回答 2

1

通常,直接使用 (0,1, ... , N-1) 直接编码具有 N 个不同值的分类变量并转换为数值变量不适用于许多算法,因为您正在为不同的类别变量。性别示例之所以有效,是因为它是二元的,但请考虑汽车模型的价格估算示例。如果有 N 个不同的模型,并且如果您将模型 A 编码为 3,将模型 B 编码为 6,这将意味着,例如,对于 OLS 线性回归,模型 B 对响应变量的影响是模型 A 的 2 倍。您不能简单地给不同的分类值赋予这样的随机含义,生成的模型将毫无意义。为了防止这种数值歧义,最常见的方法是用 N-1 个二进制对具有 N 个不同值的分类变量进行编码,

于 2016-12-03T11:27:04.337 回答
0

要对具有可能值的功能进行一次热编码,N您只需要N-1带有0/1值的列。所以你是对的:二进制性别可以用一个二进制特征编码。

使用具有N特征的虚拟编码而不N-1应该真正增加任何机器学习模型的性能,并且它会使一些统计分析(例如方差分析)复杂化。

请参阅有关对比的 patsy 文档以供参考。

于 2016-12-02T22:39:47.873 回答