[CART决策树]如何划分离散型特征

在CART(分类与回归树)算法中,当处理离散型属性或者类别型属性的时候,节点的分裂过程遵循以下步骤:

1. 生成所有可能的二分方式

  • 对于具有k个类别的离散属性,需枚举所有可能的非空真子集划分,将属性值分为两个互斥的子集(左子集和右子集)。

  • 由于对称性(左右子集互换不影响分裂效果),实际划分方式数为 2k−1−12k−1−1。

  • 例如,当属性有3个类别(红、蓝、绿)时,可能的有效划分包括:

    • {红} vs {蓝, 绿}
    • {蓝} vs {红, 绿}
    • {绿} vs {红, 蓝}
    • {红, 蓝} vs {绿}
    • {红, 绿} vs {蓝}
    • {蓝, 绿} vs {红}
      但通过对称性简化后,只需考虑前三种或后三种,总数为 23−1−1=323−1−1=3 种。

2. 计算每种划分的基尼指数

  • 对每个候选划分,计算分裂后左右子节点的基尼指数(Gini Index),并按样本占比加权求和。基尼指数公式为:

    Gini(D)=1−∑i=1Cpi2Gini(D)=1−i=1∑C​pi2​

    其中 CC 是类别数,pipi​ 是第 ii 类的比例。分裂后的总基尼指数为:

    Ginisplit=NleftNGini(Dleft)+NrightNGini(Dright)Ginisplit​=NNleft​​Gini(Dleft​)+NNright​​Gini(Dright​)

    选择使 GinisplitGinisplit​ 最小的划分方式。

3. 选择最优划分

  • 比较所有候选划分的基尼指数,选择下降最大(即总基尼指数最小,越小代表数据越纯)的划分作为分裂规则。例如,若将{红, 蓝}归为左子节点、{绿}归为右子节点时基尼指数最小,则分裂条件为"颜色是否为绿"。

4. 处理类别较多的情况

  • 当离散属性类别数 kk 较大时,穷举所有划分计算量过大。此时可采用优化策略:

    • 按目标变量排序:对类别按目标变量(如正类比例)排序,转化为类似连续变量的处理,仅需 k−1k−1 次划分。
    • 启发式方法:限制候选划分数量或使用贪心策略减少计算量。

示例

假设颜色属性为红、蓝、绿,样本分布如下:

  • 左子集候选划分 {红, 蓝}:包含红、蓝样本,基尼指数较低。
  • 右子集候选划分 {绿}:包含绿样本,基尼指数较低。
    若此划分的总基尼指数最小,则节点分裂为"颜色 ∈ {红, 蓝}"和"颜色 = 绿"。

结论

CART通过遍历离散属性的所有有效二分方式,选择基尼指数最小的划分,生成二叉树结构。

该方法确保局部最优性,同时通过优化策略应对高基数离散属性,平衡计算效率与分类性能。

相关推荐
Learn Beyond Limits30 分钟前
Mean Normalization|均值归一化
人工智能·神经网络·算法·机器学习·均值算法·ai·吴恩达
ACERT3331 小时前
5.吴恩达机器学习—神经网络的基本使用
人工智能·python·神经网络·机器学习
Aaplloo1 小时前
【无标题】
人工智能·算法·机器学习
可触的未来,发芽的智生2 小时前
触摸未来2025.10.06:声之密语从生理构造到神经网络的声音智能革命
人工智能·python·神经网络·机器学习·架构
我是Feri3 小时前
机器学习之线性回归的特征相关性:避免“双胞胎特征“干扰模型
人工智能·机器学习
盼小辉丶3 小时前
TensorFlow深度学习实战(39)——机器学习实践指南
深度学习·机器学习·tensorflow
蒋星熠4 小时前
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
人工智能·pytorch·爬虫·python·深度学习·机器学习·计算机视觉
唤醒手腕12 小时前
唤醒手腕2025年最新机器学习K近邻算法详细教程
人工智能·机器学习·近邻算法
禁默15 小时前
机器学习基础入门(第四篇):无监督学习与聚类方法
学习·机器学习·聚类
AI数据皮皮侠15 小时前
中国地级市旅游人数、收入数据(2000-2023年)
大数据·人工智能·python·深度学习·机器学习·旅游