【问题标题】:Why does one hot encoding improve machine learning performance? [closed]为什么一种热编码可以提高机器学习性能? [关闭]
【发布时间】:2013-07-02 10:22:46
【问题描述】:

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

【问题讨论】:

标签: machine-learning data-mining scikit-learn data-analysis


【解决方案1】:

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

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

现在的问题是权重 w 不能编码三路选择。 w×x 的三个可能值是 0、w 和 2×w。这三个都导致相同的决定(它们都是

通过 one-hot 编码,您有效地将特征空间炸毁为三个特征,每个特征都有自己的权重,因此决策函数现在为 w[UK]x[UK] + w[FR]x[FR ] + w[US]x[US]

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

并非所有学习算法都如此;决策树和衍生模型(如随机森林)如果足够深,可以处理分类变量而无需 one-hot 编码。

【讨论】:

  • 感谢 Lars,但是当我们做一个有效增加特征数量的 OneHotEncoding 时,我们是否也不需要增加样本,以确保它不会过拟合。
  • @Manoj 与分类变量的明显替代表示相比,将每个级别编码为不同的整数,我认为这并不重要:无论哪种方式都需要足够的统计数据。
  • 您是否可以指出任何文献,以便我进一步阅读?谢谢。
  • 在采用机器学习技术(如 boosting)时,使用小于满秩矩阵(在构建常规统计模型时不会这样做)是否有好处?
  • 这在我看来就像统计学家所说的“虚拟变量”。但也许可以节省一些存储空间。
【解决方案2】:

关于通过one-hot-encoding增加特征可以使用特征散列。当你做散列时,你可以指定桶的数量比新引入的特性的数量少得多。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      相关资源
      最近更新 更多