使用决策树时标签编码或单热编码或无?

数据挖掘 机器学习 决策树
2022-02-18 05:39:20

我一直在从多种资源中学习决策树,但仍未完全理解数据预处理步骤。

来自https://www.youtube.com/watch?v=PHxYNGo8NcI&t=535s&ab_channel=codebasics它使用带有标签编码器的决策树,在另一个资源中它说我们不需要将类别转换为字符串,我很困惑。

鉴于我的数据看起来像

   gender       level        score
    male          1           34
    female        2           77
    female        1           44

如果我们使用标签编码器,我们只需要转换性别,但是如果映射男性 = 0,女性 = 1,机器不会处理女性 > 男性吗?如果它忽略序数,它将忽略 level1 < level2 并认为 level 1 和 level 2 是同一级别,这是不正确的。

什么是正确的预处理步骤,为什么?

1个回答

如果我们使用标签编码器,我们只需要转换性别,但是如果映射男性 = 0,女性 = 1,机器不会处理女性 > 男性吗?

您是对的,出于您提到的原因,使用标签编码器对分类特征进行编码通常是错误的。请注意,scikit 文档建议不要将其与功能一起使用,它应该仅与响应变量一起使用。

在决策树中使用像“性别”这样的二进制变量的特殊情况下,使用标签编码器实际上并不重要,因为决策树算法唯一能做的就是将变量分成两个值:条件是否是gender > 0.5gender == female将给出完全相同的结果。

另请注意,变量是否被解释为序数是一个实现问题。例如,在 Weka 中,可以指定一个特征是分类的(“名义上的”)。

如果它忽略序数,它将忽略 level1 < level2。

不一定,因为理论上可以有不同类型的特征(例如一些分类和一些数字)。然而,这也可能取决于实现。