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


127

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

Answers:


260

许多学习算法或者每个特征学习一个权重,或者使用样本之间的距离。前者是逻辑模型(例如逻辑回归)的情况,很容易解释。

假设您有一个数据集,该数据集仅具有一个单一分类特征“国籍”,值分别为“ UK”,“ French”和“ US”。在不失一般性的前提下,假设将它们编码为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”则是奇数。

通过一键编码,您可以有效地将特征空间扩展为三个特征,每个特征将获得各自的权重,因此决策函数现在为w [UK] x [UK] + w [FR] x [FR] + w [US] x [US] <b,其中所有x均为布尔值。在这个空间中,这样的线性函数可以表达各种可能性的总和/分离(例如“ UK或US”,这可能是说英语的人的预测指标)。

类似地,任何基于样本之间标准距离度量标准(例如k近邻)的学习者都会感到困惑,而无需进行一次热编码。使用朴素编码和欧几里得距离,法国和美国之间的距离为1。美国和英国之间的距离为2。但是使用单点编码,[1、0、0],[0、1之间的成对距离,0]和[0,0,1]都等于√2。

并非所有的学习算法都是如此。决策树和诸如随机森林之类的派生模型(如果足够深的话)可以在无需一键编码的情况下处理分类变量。


4
感谢Lars,但是当我们进行有效增加功能数量的OneHotEncoding时,也不必增加样本以确保其不会过拟合。
Manoj 2014年

@Manoj与分类变量的明显替代表示形式(将每个级别编码为一个不同的整数)相比,我认为这并不重要:两种方式都需要足够的统计信息。
Fred Foo 2014年

7
您是否可以参考任何文献,以便我进一步阅读?谢谢。
Dr.Knowitall,2015年

1
在采用诸如Boosting之类的机器学习技术时,使用小于满秩的矩阵(在构建常规统计模型时会这样做)是否有好处?
Steve S

2
在我看来,这就像统计学家所说的“虚拟变量”一样。但是也许可以节省一些存储空间。
Soldalma

3

关于通过一键编码增加特征,可以使用特征哈希。进行哈希处理时,可以将存储桶的数量指定为比新引入的功能的数量少得多。


0

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

现在,如果您将类别0分配给0,将类别1分配给1,将类别2分配给2而没有使用一键编码,那么会发生什么,并且算法的预测不确定是否应该选择0或2:尽管他认为是0还是2?

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.