分类变量的转换(二进制与数值)

数据挖掘 神经网络 预处理 编码
2022-03-06 11:42:54

在使用分类编码时,我看到一些作者使用任意数值变换,而另一些作者使用二进制变换。例如,如果我有一个值为 A、B 和 c 的特征向量。第一种方法将 A、B 和 C 分别转换为 1,2 和 3 等数值,其他研究使用 (1,0,0)、(0,1,0) 和 (0,0,1)。

第一种方法和第二种方法有什么区别?

我能想到的唯一区别是,如果你使用二进制值,训练/测试数据的大小将根据你有多少值线性增加,这可能会降低性能,而第一个将保持大小不变.

这些方法中的任何一种都会影响您的机器学习模型(或分类器)的准确性吗?

3个回答

虽然使用 one-hot(二进制)编码肯定会占用更多空间,但它也意味着数据之间的独立性假设。另一方面,使用 1、2 和 3 等整数意味着它们之间存在某种关系。

您提到的使用 one-hot 编码线性增加大小的问题很常见,可以通过使用诸如嵌入之类的东西来处理。嵌入还有助于定义不同数据点之间的距离感。

https://en.wikipedia.org/wiki/Word_embedding

数字显示了一种关系,即当您使用数值代替文本数据时,这意味着一个值高于另一个值。假设您采用标称值,即 (Red, Blue, Green) 并使用 (1 , 2 , 3) 表示它。您的模型会将其视为3>2>1但通常我们使用的颜色不是Red>Blue>Green因此,我们更喜欢One Hot 编码,它创建虚拟变量并使用 1/0 值来表示它们。

虽然如果您更喜欢序数变量,即高、中、低。那么这些值可以用数字表示,因为它确实显示了 3>2>1 的顺序。它可以使用标签编码器或按顺序映射进行编码。

如果您的分类变量有顺序,请使用数字,如果没有任何顺序,请使用二进制。当你使用数字类型时,它有一些含义,所以要小心。

一些算法可以一起处理很多变量。如果它们非常罕见,或者为了显示 3 个值,你也可以合并一些热编码变量,你可以只使用两个二进制变量。

如果您需要更多解释,请告诉我。