机器学习之决策树模型:从基础概念到条件类型详解
机器学习之决策树模型:从基础概念到条件类型详解
摘要:本文深入探讨决策树模型的概念、构成以及不同条件类型。首先介绍决策树的基本结构和工作原理,随后详细阐述轴心对齐条件与倾斜条件、二元条件与非二元条件的差异及应用场景,并通过示例分析展示决策树在分类和回归任务中的实际应用,最后简要提及 YDF 代码在决策树训练中的使用方法。
决策树基础
决策森林模型由多个决策树组成,像随机森林这样的决策森林学习算法在一定程度上依赖于决策树的学习过程。在研究小型示例数据集时,我们可以了解如何训练单个决策树,进而学会组合决策树以训练决策森林。
决策树由一系列以树形结构分层排列的“问题”组成,这些问题也称为条件、分块或测试,在本文中统称为 “条件”。每个非叶节点包含一个条件,而每个叶节点包含一个预测结果。决策树通常从顶部的根节点向下生长。
图 1:简单分类决策树
graph TDA[根节点] --> B[num_legs ≥ 3?]B --> C[num_eyes ≥ 3?]B --> D[否]C --> E[是]C --> F[否]E --> G[狗]F --> H[猫]D --> I[鱼]
图 2:示例推理路径
以 {num_legs : 4, num_eyes : 2}
为例,推理路径以叶节点 dog
为终点:
graph TDA[根节点] --> B[num_legs ≥ 3?]B --> C[num_eyes ≥ 3?]C --> D[否]D --> E[狗]
图 3:数值预测决策树
graph TDA[根节点] --> B[num_legs ≥ 3?]B --> C[num_eyes ≥ 3?]B --> D[否]C --> E[是]C --> F[否]E --> G[可爱程度得分: 8]F --> H[可爱程度得分: 5]D --> I[可爱程度得分: 3]
决策树条件类型
轴心对齐条件与倾斜条件
轴心对齐条件仅涉及单个特征项,例如 num_legs ≥ 2
。倾斜条件则涉及多个特征项,比如 num_legs ≥ num_fingers
。通常,决策树使用轴对齐条件进行训练,但倾斜条件能表达更复杂模式,可能带来更好结果,不过训练和推理成本更高。在 YDF 中,决策树默认使用轴对齐条件,可通过 split_axis="SPARSE_OBLIQUE"
参数启用倾斜树。
图 4:条件类型示例
图 5:特征空间分离示例
二元条件与非二元条件
具有两个可能结果的条件是二元条件,仅含二元条件的决策树称为二元决策树。非二元条件有多种可能结果,区分能力更强,包含非二元条件的树称为非二元决策树。但过于强大的条件易过拟合,决策森林通常使用二元决策树。
图 6:决策树类型
常见二进制条件类型
最常见的条件类型是阈值条件,表示为 feature ≥ threshold
,如 num_legs ≥ 2
。其他常见二元条件类型包括:
名称 | 条件 | 示例 |
---|---|---|
阈值条件 | ( feature_i \geq threshold ) | num_legs ≥ 2 |
等式条件 | ( feature_i = value ) | species = ‘cat’ |
在组合中的条件 | ( feature_i \in collection ) | species ∈ {‘cat’, ‘dog’, ‘bird’} |
倾斜条件 | ( \sum_i weight_i feature_i \geq threshold ) | 5 num_legs + 2 num_eyes ≥ 10 |
缺少功能 | ( feature_i ) is Missing | num_legs is Missing |
YDF 代码示例
在 YDF 中,可使用 CART 学习器训练决策树模型:
import ydf
model = ydf.CartLearner(label="my_label").train(dataset)