← 返回题目列表

决策树如何处理类别特征?

中等 第 16 / 25 题 更新于 2026/09/19
决策树机器学习面试题模型训练

简化版

决策树处理类别特征可采用原生集合切分、one-hot,或谨慎的目标统计编码。原生切分能表达类别子集,但高基数搜索昂贵且易过拟合;one-hot 简单却可能需要多层才能组合多个类别,目标编码则必须防止泄漏。

详细版

  • 无序类别不能直接按整数编码后的大小解释,编号 3 大于 1 没有语义。

  • 二叉树可搜索 category ∈ S,但 K 个类别的子集候选呈指数增长。

  • one-hot 将每类变成指示变量,单次切分通常隔离一个类别。

  • 有序类别可按真实顺序寻找 K-1 个阈值,前提是顺序由业务定义。

  • 目标编码需在训练折外计算并平滑,未知类别还要有默认策略。

完整版教学

一、类别没有距离,切分必须尊重语义

连续特征的阈值依赖自然顺序,而颜色、城市等无序类别不存在统一的“小于”。

随意映射成 0、1、2 会人为限定只能切连续编号集合。

原生类别树直接寻找能降低不纯度的类别集合。

某些二分类损失下可先按类别目标均值排序再扫阈值,避免穷举,但这种排序本身仍应只由训练数据得到。

二、数学机制怎么落到节点上

unordered split: x_category in S ? left : right;number of non-duplicate binary partitions = 2^(K-1) - 1。

unordered split: x_category in S ? left : right
number of non-duplicate binary partitions = 2^(K-1) - 1
K=10 -> 511 possible partitions

三、带数字的推演

颜色有 {红,绿,蓝,黄}

整数编码后用 x<2.5 只能按编号顺序分组;原生集合切分却能选择 {红,黄}{绿,蓝}

K=20 时朴素子集数超过 52 万,必须剪枝或排序近似。

四、方法对比

方法/对象核心特点代价或限制
原生类别切分直接找类别集合表达强,搜索和实现复杂
One-hot转成多个 0/1 特征稳妥但维度高
目标编码类别映射为目标统计紧凑但泄漏风险高

五、从训练到验证的执行链

识别有序/无序 -> 统计基数与稀有类别 -> 选择原生或编码
-> 仅用训练折拟合编码 -> 处理未知类别 -> 验证高基数过拟合

六、边界条件与工程代价

测试出现新类别时,one-hot 可落到全零或 unknown 列,原生算法也要定义 missing/other 分支。

若不预先设计,线上会直接报错或错误映射。

合并稀有类别能降低方差,但不能把具有重要风险含义的少数类别盲目归为 other;需要结合频数、目标差异和业务语义。

记忆钩子:先问类别有没有真实顺序,再问基数多高。

七、常见误区与追问

  • 误区:LabelEncoder 后可直接当连续数切分。 无序编号会引入虚假的大小和邻近关系。

  • 追问:原生类别切分为何昂贵? K 类的二分集合数量按指数增长。

  • 误区:目标编码用全量训练数据算均值即可。 当前样本标签会泄漏进自身特征,必须折外计算。

  • 追问:有序类别如何处理? 若顺序可靠,可保留顺序并扫描相邻阈值。

  • 追问:线上未知类别怎么办? 预留 unknown/other 规则或使用算法支持的缺失方向。

八、加强记忆

先问类别有没有真实顺序,再问基数多高。

无序类别不能相信整数大小;原生集合切分表达强,one-hot 稳妥,目标编码紧凑但必须折外防泄漏。