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

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


回答:

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

假设你有一个数据集,仅包含一个分类特征“国籍”,其值为“英国”、“法国”和“美国”。假设这些值分别编码为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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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