当前位置: 首页 > news >正文

决策树:机器学习中的直观分类与回归工具

一、决策树的基本概念

决策树是一种树状结构的模型,其核心思想是从根节点开始,通过一系列特征判断,逐步走到叶子节点,最终得到决策结果。无论是分类任务(如判断 “是否适合打球”)还是回归任务(如预测 “房价”),所有数据最终都会落到叶子节点,因此决策树具有广泛的适用性。

简单来说,决策树的工作流程就像我们日常生活中的选择过程:比如 “是否去聚会”,先看 “有没有作业要交”,如果作业 “紧急” 就选择 “学习”,如果 “不紧急” 再看 “是否懒惰在家”,最终得出 “去酒吧” 或 “看电视” 的结论。

二、决策树的组成结构

决策树由三个核心部分组成:

  • 根节点:树的第一个选择点,是整个决策过程的起点,需要选择最具区分性的特征。
  • 非叶子节点与分支:中间的判断过程,每个非叶子节点代表一个特征的判断,分支则对应特征的不同取值(如 “天气 = 晴天”“天气 = 雨天”)。
  • 叶子节点:最终的决策结果,如 “去打球”“不去打球”“学习” 等。

例如,在判断 “是否去酒吧” 的决策树中,“有没有聚会” 是根节点;“作业要交 = 接近”“作业要交 = 紧急” 等是中间节点和分支;“学习”“去酒吧” 则是叶子节点。

三、决策树的训练与测试

决策树的应用分为两个阶段:

1. 训练阶段

核心任务是从训练集中构造出一棵决策树。具体来说,需要从根节点开始选择特征,并确定如何切分特征(即根据特征的不同取值划分数据)。这是决策树的难点,因为需要找到最优的特征和切分方式。

2. 测试阶段

当决策树构造完成后,测试过程非常简单:只需将测试数据从根节点开始,按照树的分支逐层判断,最终落到某个叶子节点,该节点的结果就是预测结果。

可见,决策树的关键在于如何构造出一棵最优的树,而这取决于特征的选择和切分标准。

四、特征切分的衡量标准:熵与信息增益

为了选择最优的特征进行节点切分,需要通过衡量标准判断特征的区分能力。常用的标准包括信息增益

1. 熵(Entropy)

熵是衡量随机变量不确定性的指标,公式为:
H(X) = -∑(pi * logpi)(其中 pi 是第 i 类数据的概率,i=1,2,...,n)

  • 熵值越大,数据的不确定性越高;
  • 当所有数据属于同一类(pi=0 或 pi=1),熵值为 0(完全确定);
  • 当数据均匀分布(如二分类中各占 50%),熵值最大(为 1)。

例如:

  • 集合 A=[1,1,1,1,1,1,1,1,2,2] 中,1 的概率为 0.8,2 的概率为 0.2,熵值较低(不确定性小);
  • 集合 B=[1,2,3,4,5,6,7,8,9,1] 中,各类别分布更分散,熵值更高(不确定性大)。

在分类任务中,我们希望通过特征切分后,数据的熵值变小(即不确定性降低,同类数据更集中)。

2. 信息增益

信息增益表示某个特征能使类别不确定性减少的程度,即 “切分前的熵值 - 切分后的熵值”。信息增益越大,说明该特征的区分能力越强,越适合作为当前节点的切分特征。

例如,若切分前的总熵值为 0.940,切分后通过某特征得到的平均熵值为 0.693,则信息增益为 0.940 - 0.693 = 0.247,该特征能有效降低数据的不确定性。

五、决策树构造实例

以 “14 天打球情况” 数据集为例(目标:判断某天是否适合打球,特征包括天气、温度、湿度、风力),构造决策树的步骤如下:

  1. 计算初始熵值:14 天中有 9 天打球、5 天不打球,初始熵值为 0.940。
  2. 计算各特征的信息增益
    • 对于 “天气(outlook)” 特征:
      • 晴天(sunny)时熵值为 0.971,阴天(overcast)时熵值为 0,雨天(rainy)时熵值为 0.971;
      • 按概率加权计算切分后平均熵值:(5/14×0.971) + (4/14×0) + (5/14×0.971) = 0.693;
      • 信息增益:0.940 - 0.693 = 0.247。
    • 同理计算 “温度”“湿度”“风力” 的信息增益,选择最大的特征作为根节点(此处 “天气” 被选为根节点)。
  3. 递归构造子树:在根节点的每个分支下(如晴天、阴天、雨天),重复上述过程,选择信息增益最大的特征作为子节点,直至所有数据被正确分类或满足停止条件。

六、总结

决策树是一种直观易懂的机器学习模型,其核心在于通过熵和信息增益选择最优特征,逐步构建树结构。训练阶段的关键是特征切分,测试阶段则通过遍历树完成预测。由于其解释性强、适用范围广,决策树在金融、医疗、电商等领域均有广泛应用。

http://www.xdnf.cn/news/1321795.html

相关文章:

  • 【深度学习基础】PyTorch Tensor生成方式及复制方法详解
  • <数据集>遥感飞机识别数据集<目标检测>
  • 基于深度学习的车牌检测识别系统:YOLOv5实现高精度车牌定位与识别
  • Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin(2)
  • 【LLM1】大型语言模型的基本生成机制
  • 华清远见25072班C语言学习day11
  • 当使用STL容器去存放数据时,是存放对象合适,还是存放对象指针(对象地址)合适?
  • 【C++】 using声明 与 using指示
  • Linux内存管理系统性总结
  • Orange的运维学习日记--45.Ansible进阶之文件部署
  • 获粤港澳大湾区碳足迹认证:遨游智能三防手机赋能绿色通信
  • LeetCode:无重复字符的最长子串
  • 实践笔记-VSCode与IDE同步问题解决指南;程序总是进入中断服务程序。
  • LAMP 架构部署:Linux+Apache+MariaDB+PHP
  • 规避(EDR)安全检测--避免二进制文件落地
  • 云计算- KubeVirt 实操指南:VM 创建 、存储挂载、快照、VMI全流程 | 容器到虚拟机(镜像转换/资源调度)
  • 前端处理导出PDF。Vue导出pdf
  • 王树森深度强化学习DRL(三)围棋AlphaGo+蒙特卡洛
  • STRIDE威胁模型
  • 新手向:Java方向讲解
  • Python实战--基于Django的企业资源管理系统
  • 块体不锈钢上的光栅耦合表面等离子体共振的复现
  • 后端通用基础代码
  • 在嵌入式单片机开发中,通过校验和或者校验码来比对程序版本好有何优劣势
  • 【OLAP】trino安装和基本使用
  • 【完整源码+数据集+部署教程】无人机目标检测系统源码和数据集:改进yolo11-efficientViT
  • Linux网络服务(一)——计算机网络参考模型与子网划分
  • Linux bash核心介绍及目录命令
  • Android中使用RxJava实现网络请求与缓存策略
  • Git-2025-0818