为什么一种热编码可以提高机器学习性能?

我已经注意到,当 One Hot 编码用于特定的数据集(矩阵)并用作学习算法的训练数据时,与使用原始矩阵本身作为训练数据相比,它在预测准确性方面给出了明显更好的结果。这种性能提高是如何发生的?

38422 次浏览

许多学习算法要么为每个特征学习一个权重,要么使用样本之间的距离。前者是 Logit模型等线性模型的情况,这些模型很容易解释。

假设您有一个数据集,它只有一个分类特征“国籍”,值为“英国”、“法国”和“美国”。假设,不失一般性,这些被编码为0,1和2。然后在一个线性分类器中为这个特征赋予一个权重 w,它将根据约束 w × x + b > 0或等效于 w × x < b 来做出某种决定。

现在的问题是权重 w 不能编码一个三向选择。W × x 的三个可能值分别是0,w 和2 × w。要么这三个都导致相同的决定(它们都是 < b 或≥ b) ,要么“ UK”和“ French”导致相同的决定,要么“ French”和“ US”导致相同的决定。这个模型不可能知道“英国”和“美国”应该被贴上相同的标签,而“法国”则被排除在外。

通过一次热编码,可以有效地将特征空间扩展为三个特征,每个特征都有自己的权重,因此决策函数现在是 w [ UK ] x [ UK ] + w [ FR ] x [ FR ] + w [ US ] x [ US ] < b,其中所有的 x 都是布尔值。在这个空间中,这样一个线性函数可以表示任何可能性的求和/析取(例如,“ UK or US”,它可能是某个说英语的人的预测)。

类似地,任何基于样本间标准距离度量(如 k 最近邻)的学习者在没有一热编码的情况下都会感到困惑。按照幼稚的编码和欧几里得度量,法语和美国之间的距离是1。美国和英国之间的距离是2。但是使用单热编码,[1,0,0] ,[0,1,0]和[0,0,1]之间的成对距离都等于√2。

这并不适用于所有的学习算法; 决策树和随机森林这样的派生模型,如果足够深,就可以处理分类变量,而不需要一次性编码。

考虑到特征的增加,可以采用一次热编码的方法进行特征哈希。在进行散列时,可以指定比新引入的特性少得多的存储桶数量。

当您想要预测类别时,您想要预测集合中的项目。不使用一次性编码类似于让类别有相邻的类别(例如: 如果你用类别的整数进行了回归)按照一定的方式和一定的顺序组织。

现在,如果你把类别0分配给0分配给1分配给1分配给2分配给2分配给2分配给0分配给0分配给2分配给2分配给0分配给2分配给0分配给2分配给2分配给0分配给2分配给2分配给0分配给2分配给1分配给0分配给2分配给2分配给1分配给0分配给2?

你看着它往哪走。对于数据输入也是一样: 如果它们不应该是邻居,那么就不要将它们显示给算法作为邻居。