news 2026/5/7 9:32:40

机器学习-第五章 决策树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习-第五章 决策树

第五章 决策树

目录

1.决策树简介
2.ID3决策树
3.C4.5决策树
4.CART决策树
5.案例泰坦尼克号生存预测
6.CART回归树
7.决策树 剪枝

2-信息增益 3-信息增益率 4- GiNi 基尼值 6-和传统回归的区别 4.5-掌握 2346-面试了解

1 、决策树简介

一、生活中的决策树

二、决策树是一种树形结构

树中的内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果

三、决策树的建立过程

1.特征选择:选取有较强分类能力的特征
2.决策树生成:根据选择的特征生成决策树
3.决策树也易过拟合,采用剪枝的方法环节过拟合

四、思考

1.女孩相亲过程中,更看重那些特征?
年龄>长相>收入>是否公务员
2.机器学习算法中,选择数据集中的那些特征进行分裂,会更好呢?

2、ID3决策树

2.1 熵

一、ID3 决策树核心思想

  • ID3 决策树通过信息增益来决定用哪个特征进行划分。
  • 信息增益 = 熵 − 条件熵
  • 信息增益越大,特征越优先作为划分节点。

二、熵(信息熵)是什么

  • 熵(entropy)表示数据的不确定度 / 混乱程度
  • 数据越规整 → 熵越小
    数据越混乱 → 熵越大

大白话:熵就是数据的混乱程度。

三、熵的计算公式

  • pi:第 i个类别在数据中出现的比例(分类占比)
  • 对所有类别求和,前面加负号

例子 1(8 个数据,A/B/C/D/E/F/G 各出现 1 次)

例子 2(8 个数据:A 出现 4 次,B 出现 2 次,C 出现 1 次,D 出现 1 次)


计算结果为1.75

四、Python 快速计算熵

方法一:终端 / Python 命令行

frommathimportlog log(8,2)# 以2为底8的对数 = 3.0

方法二:PyCharm 的 Python Console / Terminal

  • Terminal:输入python进入交互模式
  • Python Console:直接使用
frommathimportlog# 计算例子2-0.5*log(0.5,2)-0.25*log(0.25,2)-0.125*log(0.125,2)*2

结果:1.75

五、练习题与答案

1. 三个类别,各占 1/3

2. 占比 1/10、2/10、7/10

3. 全部属于同一类(占比 1)

说明:纯节点熵为 0。


六、信息增益定义

  • 信息增益:特征 A 对训练集 D 的信息增益,记作 g(D, A)
  • 公式:
    g(D, A) = H(D) - H(D| A)
  • H(D) :数据集的信息熵(混乱程度)
  • H(D | A) :给定特征 A 下的条件熵

大白话:用了特征 A 之后,数据的不确定性减少了多少。


2.2 信息增益

一、条件熵的计算公式

  • D_v:特征 A 取值为 v 的子集
  • |D_v|/|D|:该子集的占比(分类占比)
  • H(D_v):该子集内部的信息熵

条件熵 = 每个分支的占比 × 该分支的熵,再求和。

三、完整计算案例

已知数据(6个样本)

特征 A目标
阿尔法A
阿尔法A
阿尔法A
阿尔法B
贝塔B
贝塔B
  • 汇总:阿尔法 4 个(3A + 1B),贝塔 2 个(0A + 2B)
  • 总体:3A + 3B

第一步:计算信息熵 H(D)

因为 A 和 B 各占 1/2,熵 = 1。

第二步:计算条件熵 H(D|A)

2.1 阿尔法分支的熵 H(D_阿尔法)

数据集:3A + 1B(共4个)

2.2 贝塔分支的熵H(D_贝塔)

数据集:0A + 2B(共2个,全是 B)

2.3 条件熵

第三步:计算信息增益

g(D, A) = H(D) - H(D|A) = 1 - 0.54 = 0.46

四、ID3 决策树构建流程

  1. 计算每个特征的信息增益
  2. 选择信息增益最大的特征作为当前节点
  3. 根据该特征的不同取值,将数据集拆分成若干子集
  4. 对每个子集重复上述步骤(剩余特征继续计算信息增益)
  5. 直到:
    • 子集中所有样本属于同一类别 → 停止,设为叶节点
    • 没有特征可用 → 停止,取多数类

五、案例中的树结构

特征 A ├── 阿尔法(3A + 1B)→ 还会继续分裂 └── 贝塔(0A + 2B)→ 全是B,停止(叶节点)
  • 贝塔分支不再分裂(熵 = 0)
  • 阿尔法分支需要继续计算剩余特征的信息增益

六、一句话总结

信息增益 = 熵 − 条件熵
ID3 = 每次找信息增益最大的特征来分裂数据。


2.3 ID3树构建

一、核心回顾

  • ID3 核心思想:每次选择信息增益最大的特征作为节点
  • 信息增益 = 信息熵 − 条件熵
  • 信息熵:衡量数据混乱程度
  • 条件熵:给定特征后剩余的不确定性

二、案例背景

数据集:论坛客户流失数据(15个样本)

性别活跃度是否流失(1=流失,0=未流失)
0
0

目标:判断“性别”和“活跃度”哪个对流失影响更大,并构建决策树。

三、计算步骤

第一步:计算信息熵 H(D)

  • 总样本:15个
  • 流失(1):5个
  • 未流失(0):10个

第二步:计算“性别”的条件熵 H(D|性别)

2.1 男分支(8个样本)
  • 男中流失:3个
  • 男中未流失:5个
2.2 女分支(7个样本)
  • 女中流失:2个
  • 女中未流失:5个
2.3 条件熵

H(D|性别) =8/15* H(男) +7/15*H(女)=0.9748

2.4 信息增益

g(D,性别) = 0.9812 - 0.9748 = 0.0064

第三步:计算“活跃度”的条件熵 H(D|活跃度)

活跃度分三类:高、中、低

3.1 高(6个样本)
  • 全是未流失(0)
    H(高) = 0
3.2 中(5个样本)
  • 流失1个,未流失4个
3.3 低(4个样本)
  • 全是流失(1)
    H(低) = 0
3.4 条件熵

H(D|活跃度) =6/150 +5/15H(中) +4/15*0=0.6776

3.5 信息增益

g(D,活跃度) = 0.9812 - 0.6776 = 0.3036

四、比较与结论

特征信息增益
性别0.0064
活跃度0.3036
  • 活跃度的信息增益更大 → 对流失影响更大
  • 根节点选择:活跃度

五、决策树构建结果

活跃度 ├── 高 → 非流失(全0) ├── 中 → 按性别继续划分 │ ├── 女 → 非流失(全0) │ └── 男 → 流失/非流失混合(需继续或停止) └── 低 → 流失(全1)

中活跃度 + 男的情况可能还需要进一步分裂(本例中因数据少可停止或作为叶节点)

六、重要结论(选择题考点)

  1. 决策树

    • 每个内部节点 = 判断条件
    • 每个叶节点 = 结果
    • 可以明确特征重要程度 ✅
  2. 信息熵

    • 熵越大 → 数据越混乱
    • 数据越一致 → 熵越小
  3. 信息增益

    • ID3 核心
    • 增益越大 → 特征越重要
    • 类别多的特征更青睐(但须注意过拟
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 9:30:28

告别复制粘贴!用STM32CubeMX HAL库驱动ESP8266的保姆级避坑指南

STM32CubeMX HAL库驱动ESP8266的深度实践:从代码移植到框架设计 第一次尝试将ESP8266模块集成到STM32项目时,我遇到了几乎所有开发者都会面临的困境——网上找到的示例代码要么基于标准外设库,要么使用了经过大量修改的非标准HAL库实现。这种…

作者头像 李华
网站建设 2026/5/7 9:30:27

Arm Cortex-R82 ETM调试技术详解与应用实践

1. Cortex-R82 ETM技术深度解析在实时嵌入式系统开发中,调试技术的有效性直接决定了问题定位的效率。作为Arm Cortex-R82处理器的核心调试组件,嵌入式跟踪宏单元(ETM)提供了非侵入式的指令执行跟踪能力。与传统的断点调试不同,ETM通过在处理器…

作者头像 李华
网站建设 2026/5/7 9:19:54

基于向量检索的AI上下文管理:Upstash Context7框架解析与实践

1. 项目概述:一个为AI应用量身定制的上下文管理利器最近在折腾AI应用开发,特别是那些需要处理长对话、复杂文档或者多轮交互的场景,一个绕不开的痛点就是“上下文管理”。简单来说,就是如何让AI模型记住我们之前聊过什么&#xff…

作者头像 李华
网站建设 2026/5/7 9:18:54

UV画布:AI图像生成从“抽卡”到“绘画”的技术革新

1. 项目概述:从“UV画布”到AI图像生成的新范式最近在GitHub上看到一个名为latentcat/uvcanvas的项目,这个名字乍一看有点抽象,但点进去研究后,发现它触及了当前AI图像生成领域一个非常有趣且实用的痛点:如何让AI像人类…

作者头像 李华
网站建设 2026/5/7 9:17:48

08-MLOps与工程落地——工作流编排:Kubeflow

工作流编排:Kubeflow(Kubernetes原生ML流水线、组件化、分布式训练) 一、Kubeflow概述 1.1 什么是Kubeflow? import matplotlib.pyplot as plt from matplotlib.patches import Rectangle, FancyBboxPatch import warnings warnin…

作者头像 李华
网站建设 2026/5/7 9:17:28

AI工具搭建自动化视频生成可商用的模型许可

这个话题吧,其实挺多人来问过。不是问技术行不行,而是问做完的东西能不能真的拿出去用,会不会惹上麻烦。搞视频生成工具的时候,很多人一头扎进代码里,调模型、跑流程,等到真要上线或者交付了,才…

作者头像 李华