132

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

4

3 回答 3

259

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

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

现在的问题是权重 w 不能编码三向选择。w×x 的三个可能值是 0、w 和 2×w。这三个都导致相同的决定(它们都是 < b 或 ≥b)或“UK”和“French”导致相同的决定,或者“French”和“US”给出相同的决定。模型不可能知道“UK”和“US”应该被赋予相同的标签,而“French”则是奇数。

通过 one-hot 编码,您可以有效地将特征空间炸毁为三个特征,每个特征都有自己的权重,因此决策函数现在是 w[UK]x[UK] + w[FR]x[FR] + w [US]x[US] < b,其中所有 x 都是布尔值。在这个空间中,这样的线性函数可以表达任何可能性的总和/分离(例如“英国或美国”,这可能是说英语的人的预测指标)。

类似地,任何基于样本之间标准距离度量(例如 k-最近邻)的学习器在没有 one-hot 编码的情况下都会感到困惑。使用朴素编码和欧几里得距离,French 和 US 之间的距离为 1。US 和 UK 之间的距离为 2。但是使用 one-hot 编码,[1,0,0],[0,1] 之间的成对距离, 0] 和 [0, 0, 1] 都等于 √2。

并非所有学习算法都是如此;决策树和随机森林等派生模型如果足够深,可以处理分类变量而无需一次性编码。

于 2013-07-04T12:20:11.243 回答
4

关于通过一次热编码来增加特征,可以使用特征散列。当你做散列时,你可以指定桶的数量比新引入的特性的数量少得多。

于 2015-07-16T21:08:55.977 回答
0

当您想要预测类别时,您想要预测集合中的项目。不使用 one-hot 编码类似于让类别具有以特定方式和特定顺序组织的相邻类别(例如:如果您使用类别的整数进行回归)。

现在,如果您将类别 0 分配给 0,类别 1 分配给 1,类别 2 分配给 2 而没有 one-hot 编码,并且您的算法的预测不确定它应该选择 0 还是 2:他应该预测 1 尽管他认为是 0 还是 2?

你看它的去向。您的数据输入也是如此:如果它们不应该是邻居,那么不要将它们作为邻居显示给您的算法。

于 2020-02-19T15:09:58.703 回答