单热编码不是浪费信息吗?

数据挖掘 机器学习 特征提取 一热编码
2022-02-14 15:40:43

我只是在玩一些简单的特征表示,然后想到了以下几点:

假设我们有 4 个类别用于给定特征(例如水果){Apple、Orange、Pear、Melon}。在这种情况下,one-hot 编码将产生:

Apple:  [1 0 0 0]
Orange: [0 1 0 0]
Pear:   [0 0 1 0]
Melon:  [0 0 0 1]

上面的意思是,当我们从一个特征变成四个特征时,我们将特征空间翻了两番。

这看起来像是在浪费一些位,因为我们可以用 4 个值表示log24=2位/功能:

Apple:  [0 0]
Orange: [0 1]
Pear:   [1 0]
Melon:  [1 1]

在任何最常见的机器学习模型中,这种表示会有问题吗?

1个回答

好主意,但是...

您编码不仅仅是为了从分类特征转换为数字特征,而是将这些信息提供给您的模型。

假设您这样做并通过线性模型对其进行输入以尝试预测价格。假设梨真的很贵(500 欧元),而甜瓜很便宜(1 欧元)。

您使用一种热编码的模型系数将是:

price=500Pear[0,1]+1Melon[0,1]

如果您进行编码,则线性组合将不起作用。系数是多少?

有人可能会争辩说,对于决策树,这不会发生,因为它可以分裂......但它必须在确定它是否是瓜之前进行两次分裂(贪婪的决策树不会这样做)所以你会再次在这里也失去了计算能力。

您可以尝试运行实验,看看这是否是您的结果。最后,这应该是科学,可以做实验来证明一个假设。

另一方面,是的,一个热编码很容易增加计算时间和内存,因为你从一个热编码中创建了很多特征,如果它具有高基数,你最终可以得到很多特征。