为什么独热编码能提高机器学习的性能?

我注意到,当对特定数据集(矩阵)使用独热编码并将其用作学习算法的训练数据时,与直接使用原始矩阵作为训练数据相比,预测准确性有了显著提高。为什么会出现这种性能提升?


回答:

许多学习算法要么为每个特征学习一个权重,要么使用样本之间的距离。前者适用于线性模型,如逻辑回归,这种模型易于解释。

假设你有一个数据集,仅包含一个分类特征“国籍”,其值为“英国”、“法国”和“美国”。假设这些值分别编码为0、1和2。在线性分类器中,你为这个特征设置一个权重w,它将基于约束w×x + b > 0或等价的w×x < b做出某种决策。

现在的问题是,权重w无法编码三选一的选择。w×x的三个可能值是0、w和2×w。这三者要么导致相同的决策(它们都< b≥b),要么“英国”和“法国”导致相同的决策,要么“法国”和“美国”导致相同的决策。模型无法学习到“英国”和“美国”应该被赋予相同的标签,而“法国”是例外的情况。

通过独热编码,你实际上将特征空间扩展到三个特征,每个特征都有自己的权重,因此决策函数现在变为w[UK]x[UK] + w[FR]x[FR] + w[US]x[US] < b,其中所有x都是布尔值。在这个空间中,这样的线性函数可以表达任何可能性之和/析取(例如,“英国或美国”,这可能是预测某人讲英语的指标)。

同样,任何基于标准距离度量(如k近邻)的学习器在没有独热编码的情况下也会感到困惑。使用原始编码和欧几里得距离,法国和美国之间的距离是1。美国和英国之间的距离是2。但使用独热编码,[1, 0, 0]、[0, 1, 0]和[0, 0, 1]之间的成对距离都等于√2。

这并不适用于所有学习算法;决策树及其衍生模型如随机森林,如果足够深,可以在没有独热编码的情况下处理分类变量。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注