【问题标题】:One-hot encoding in random forest classifier随机森林分类器中的 One-hot 编码
【发布时间】:2021-04-19 16:08:35
【问题描述】:

python 中的随机森林分类器是否需要 one-hot 编码?我想从逻辑上理解随机森林是否可以使用标签编码而不是单热编码来处理分类特征。

【问题讨论】:

标签: machine-learning scikit-learn random-forest


【解决方案1】:

编码的概念在机器学习中是必要的,因为借助它,我们可以将非数字特征转换为任何模型都可以理解的数字特征。

任何类型的编码都可以对任何非数字特征进行,这完全取决于直觉。

现在,关于何时使用标签编码以及何时使用 One-hot 编码的问题:

  1. 使用标签编码 - 当您想要保留功能的序数时使用此选项。例如,您有一个受教育程度的特征,它具有诸如“Bachelor”、“Master”、“Ph.D”之类的字符串值。在这种情况下,您希望保留 Ph.D > Master > Bachelor 的序数性质,因此您将使用标签编码进行映射,例如 - Bachelor-1、Master-2、Ph.D-3。
  2. 使用 One-hot 编码 - 当您想以相同的顺序处理分类变量时使用此选项。例如,您有颜色变量,其值为“红色”、“黄色”、“橙色”。现在,在这种情况下,任何值都不会优先于其他值,因此您将在此处使用 One hot encoding。

注意:在 One-hot 编码中,您的特征数量会增加,这对于任何基于树的算法(如决策树、随机森林等)都不利。这就是为什么在这种情况下通常首选标签编码,但如果您仍然使用一种热编码,您可以通过使用 sklearn 中的feature_importances_ 超参数来检查分类特征的重要性。如果该功能的重要性较低,您可以将其删除。

【讨论】:

    【解决方案2】:

    随机森林基于对one-hot编码敏感的决策树原理。现在这里敏感的意思是,如果我们对决策树进行单热分裂,可能会导致决策树稀疏。树通常倾向于向一个方向生长,因为在分类变量的每次拆分中只有两个值(0 或 1)。树在虚拟变量中的零方向上生长。

    现在您一定想知道如何在没有 one-hot 编码的情况下处理分类值?为此,您可以进一步参考Hashing Trick,您还可以查看h2o Random Forest

    【讨论】:

      猜你喜欢
      • 2018-02-18
      • 2018-05-20
      • 2020-07-02
      • 2018-03-05
      • 1970-01-01
      • 2019-09-05
      • 2013-09-22
      • 2020-04-27
      • 2019-08-11
      相关资源
      最近更新 更多