第二章:16.5 决策树处理连续值特征

目录

[1. 引言](#1. 引言)

[2. 数据集的扩展](#2. 数据集的扩展)

[3. 连续特征的处理方法](#3. 连续特征的处理方法)

[4. 阈值的选择与信息增益计算](#4. 阈值的选择与信息增益计算)

[5. 构建决策树](#5. 构建决策树)

[6. 总结](#6. 总结)

[7. 扩展到回归树](#7. 扩展到回归树)

图片内容解释

条形图

决策树示意图

信息增益计算

结论


如何让决策树处理连续特征:以猫狗分类为例

1. 引言

决策树是一种强大的分类算法,通常用于处理离散特征(如耳朵形状、脸型、胡须等)。然而,决策树也可以扩展到处理连续特征(如体重)。本文将通过一个具体的例子,展示如何在决策树中使用连续特征进行分类。

2. 数据集的扩展

假设我们有一个猫狗分类的数据集,其中包含以下特征:

  • 耳朵形状(离散特征)

  • 脸型(离散特征)

  • 胡须(离散特征)

  • 体重(连续特征)

在这个数据集中,我们新增了一个特征------动物的体重(单位:磅)。猫通常比狗轻,但也有例外。尽管如此,体重仍然是一个有用的分类特征。

3. 连续特征的处理方法

决策树学习算法的目标通过选择最优的特征和分裂点,最大化信息增益。对于连续特征(如体重),算法需要找到一个最佳的阈值,将数据分为两部分,从而获得最大的信息增益。

4. 阈值的选择与信息增益计算

在处理连续特征时,决策树算法需要选择一个阈值来分割数据。以下是具体步骤:

  1. 排序与中点选择

    首先,根据体重对所有样本进行排序。然后,选择排序后样本值之间的中点作为可能的阈值。例如,如果有10个样本,需要测试9个可能的阈值。

  2. 信息增益计算

    对于每个可能的阈值,计算分裂后的信息增益。假设我们选择8磅作为阈值,将数据分为两部分:

    • 左边子集(体重 ≤ 8磅):包含2只猫。

    • 右边子集(体重 > 8磅):包含3只猫和5只狗。

    计算信息增益:

    • 左边子集的熵为0(因为全是猫)。

    • 右边子集的熵为0.24。

    • 整体信息增益为0.5。

    如果选择9磅作为阈值,信息增益会更高,达到0.61。这表明9磅是一个更好的阈值。

  1. 选择最优阈值

    算法会测试所有可能的阈值,计算每个阈值的信息增益,并选择信息增益最高的阈值。在这个例子中,9磅的阈值提供了最高的信息增益。

5. 构建决策树

一旦选择了最优阈值(如9磅),决策树会根据这个阈值将数据集分为两部分:

  • 一部分是体重 ≤ 9磅的动物。

  • 另一部分是体重 > 9磅的动物。

接下来,可以在这两个子数据集上继续构建决策树的其余部分。这一过程会递归进行,直到满足停止条件(如达到最大树深、节点纯度足够高或样本数量小于某个阈值)。

6. 总结

决策树在处理连续特征时,会通过以下步骤进行分裂:

  1. 排序:按特征值对样本进行排序。

  2. 选择阈值:选择排序后的中点作为可能的阈值。

  3. 计算信息增益:对每个阈值计算分裂后的信息增益。

  4. 选择最优阈值:选择信息增益最高的阈值进行分裂。

如果连续特征的分裂效果比其他特征更好,那么它就会被选为当前节点的分裂特征。这种方法使得决策树能够有效地处理连续特征,从而提高分类性能。

7. 扩展到回归树

除了分类问题,决策树还可以用于回归问题。在回归树中,目标是预测连续的数值,而不是离散的类别。此时,决策树的分裂标准不再是信息增益,而是均方误差(MSE)或其他回归性能指标。通过类似的方法,决策树可以找到最优的分裂点,从而构建回归树。


这张图片展示了如何在决策树中对连续变量进行分裂,以猫狗分类问题为例,具体来说是根据动物的体重(以磅为单位)来决定是否为猫。图片中包含了一个条形图和一个决策树的示意图,以及相关的信息增益计算公式。

图片内容解释

条形图
  • 横轴(X轴):表示动物的体重,从8磅到20磅。

  • 纵轴(Y轴):表示动物的类别,上方是猫(Cat),下方是不是猫(Not Cat)。

  • 标记:每个"×"代表一个样本点,位置表示该样本的体重和类别。

决策树示意图
  • 根节点:判断条件是"Weight ≤ 9 lbs.",即体重是否小于或等于9磅。

  • 分支

    • 左侧分支(Yes):体重小于或等于9磅的样本,包括两只猫和一只狗。

    • 右侧分支(No):体重大于9磅的样本,包括三只狗和一只猫。

信息增益计算

图片中展示了三个不同的体重阈值(8磅、9磅、10磅)的信息增益计算过程,以确定最佳分裂点:

  1. 阈值8磅

    • 计算公式:H(0.5)−(102​H(22​)+108​H(83​))=0.24

    • 解释:整体熵为0.5(因为有5只猫和5只狗),左边子集(体重 ≤ 8磅)的熵为0(因为全是猫),右边子集(体重 > 8磅)的熵为0.31(因为有3只猫和5只狗,共8个样本)。

  2. 阈值9磅

    • 计算公式:H(0.5)−(104​H(44​)+106​H(61​))=0.61

    • 解释:左边子集(体重 ≤ 9磅)的熵为0(因为全是猫),右边子集(体重 > 9磅)的熵为0.05(因为有1只猫和5只狗,共6个样本)。

  3. 阈值10磅

    • 计算公式:H(0.5)−(107​H(75​)+103​H(30​))=0.40

    • 解释:左边子集(体重 ≤ 10磅)的熵为0.41(因为有5只猫和2只狗,共7个样本),右边子集(体重 > 10磅)的熵为0(因为全是狗)。

结论

根据信息增益的计算结果,体重9磅的阈值提供了最大的信息增益(0.61),因此决策树会选择这个阈值作为分裂点。这意味着,对于这个数据集,体重小于或等于9磅的动物更可能是猫,而体重大于9磅的动物更可能不是猫。

相关推荐
分别努力读书9 分钟前
acm培训 part 7
算法·图论
武乐乐~10 分钟前
欢乐力扣:赎金信
算法·leetcode·职场和发展
'Debug23 分钟前
算法从0到100之【专题一】- 双指针第一练(数组划分、数组分块)
算法
补三补四24 分钟前
金融时间序列【量化理论】
机器学习·金融·数据分析·时间序列
Fansv58735 分钟前
深度学习-2.机械学习基础
人工智能·经验分享·python·深度学习·算法·机器学习
yatingliu20192 小时前
代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数 、1. 两数之和
c++·算法
uhakadotcom2 小时前
Google DeepMind最近发布了SigLIP 2
人工智能·算法·架构
咩咩大主教2 小时前
人工智能神经网络
人工智能·python·深度学习·神经网络·机器学习·bp神经网络
三年呀3 小时前
计算机视觉之图像处理-----SIFT、SURF、FAST、ORB 特征提取算法深度解析
图像处理·python·深度学习·算法·目标检测·机器学习·计算机视觉
淡黄的Cherry3 小时前
istio实现灰度发布,A/B发布, Kiali网格可视化(二)
java·算法·istio