机器学习&第六.七章决策树,集成学习

决策树

决策树是一种树形结构的分类 / 回归模型,核心是 "分而治之"------ 把复杂的数据集递归拆分成小子集,最终形成一棵 "判断树",每个内部节点代表一个特征判断,每个叶节点代表一个类别 / 回归值。

6.1 决策树的基本原理

核心结构

  • 根节点:整个数据集的起点,无父节点;
  • 内部节点:对应一个特征的判断(比如 "是否发烧?""年龄 > 30?");
  • 分支:特征判断的结果(比如 "是 / 否"">30/<30");
  • 叶节点:最终的分类结果 / 回归值(比如 "患流感""不患流感")。

核心逻辑

  1. 递归拆分:从根节点开始,选择最优特征,把数据集按该特征拆分成多个子集;
  2. 子集划分:对每个子集重复 "选最优特征→拆分" 的过程,直到满足停止条件(比如子集样本全为同一类别、无特征可选、样本数过少);
  3. 预测:新样本从根节点开始,按特征判断走分支,最终落到叶节点,叶节点的结果就是预测值。

通俗例子(感冒诊断决策树)

plaintext

复制代码
根节点:是否发烧?
    ├─ 否 → 叶节点:不感冒
    └─ 是 → 内部节点:是否咳嗽?
        ├─ 否 → 叶节点:普通发烧
        └─ 是 → 叶节点:感冒

6.2 建树:决策树生成算法

决策树的核心问题是如何选择最优特征,不同算法的核心区别是 "特征选择的评价指标",主流算法有 ID3、C4.5、CART。

6.2.1 ID3 和 C4.5(分类树,离散特征为主)

前置概念:熵(Entropy)------ 衡量数据集的 "混乱程度"

熵越大,数据集类别越混乱(比如一半正类一半负类,熵最大);熵越小,类别越纯净(比如全是正类,熵为 0)。公式(二分类,p 是正类占比):H(D)=−plog2​p−(1−p)log2​(1−p)公式(多分类,pk​ 是类别 k 占比):H(D)=−∑k=1n​pk​log2​pk​

  • 例子:
    • 数据集 D 有 100 个样本,50 正 50 负 → H(D)=−0.5log20.5−0.5log20.5=1(最混乱);
    • 数据集 D 全为正类 → H(D)=−1log21−0=0(最纯净)。
6.2.1.1 ID3 算法:信息增益(Information Gain)

ID3 的核心是选择信息增益最大的特征作为最优特征

1. 信息增益定义

信息增益 = 原数据集的熵 - 按特征拆分后各子集的熵的加权平均,衡量 "拆分后数据集混乱度降低的程度"。公式:IG(D,A)=H(D)−∑v=1V​∣D∣∣Dv​∣​H(Dv​)

  • A:待选特征;
  • V:特征 A 的取值个数(比如 "是否发烧" 有 2 个取值:是 / 否);
  • Dv:特征 A 取第 v 个值的子集;
  • ∣D∣∣Dv∣:子集 Dv 的样本数占总样本数的权重。
2. 信息增益计算步骤(实例)

已知:数据集 D 有 10 个样本,类别:[感冒,感冒,感冒,不感冒,不感冒,不感冒,不感冒,不感冒,感冒,感冒](6 个不感冒,4 个感冒);特征 A="是否发烧",取值:

  • 发烧(是):样本 1-4(3 感冒,1 不感冒);
  • 发烧(否):样本 5-10(1 感冒,5 不感冒)。

步骤 1:计算原数据集 D 的熵感冒,不感冒H(D)=−0.4log20.4−0.6log20.6≈−0.4×(−1.32)−0.6×(−0.74)≈0.528+0.444=0.972

步骤 2:计算特征 A 拆分后各子集的熵

  • 子集 D1(发烧 = 是,4 个样本):p=3/4=0.75,1−p=0.25H(D1)=−0.75log20.75−0.25log20.25≈−0.75×(−0.415)−0.25×(−2)≈0.311+0.5=0.811
  • 子集 D2(发烧 = 否,6 个样本):p=1/6≈0.167,1−p≈0.833H(D2)=−0.167log20.167−0.833log20.833≈−0.167×(−2.58)−0.833×(−0.22)≈0.431+0.183=0.614

步骤 3:计算信息增益IG(D,A)=0.972−(104​×0.811+106​×0.614)=0.972−(0.324+0.368)=0.972−0.692=0.28

3. ID3 算法逻辑
  • 对每个候选特征,计算信息增益;
  • 选择信息增益最大的特征作为当前节点的拆分特征;
  • 递归处理每个子集,直到停止条件。
4. ID3 的缺点
  • 偏好取值多的特征(比如 "身份证号" 取值无数,信息增益会极大,但无实际意义);
  • 只能处理离散特征,无法处理连续特征;
  • 没有剪枝,容易过拟合。
6.2.1.2 C4.5 算法:信息增益比(Information Gain Ratio)

C4.5 是 ID3 的改进,核心是用信息增益比替代信息增益,解决 "偏好取值多的特征" 的问题。

1. 信息增益比定义

信息增益比 = 信息增益 / 特征的 "固有值"(IV),固有值衡量特征取值的 "分散程度"(取值越多,固有值越大)。公式:IGR(D,A)=IV(A)IG(D,A)​其中,固有值 IV(A)=−∑v=1V​∣D∣∣Dv​∣​log2​∣D∣∣Dv​∣​(和熵的公式类似,衡量特征本身的分散度)。

2. 信息增益比计算(接上面的例子)

步骤 1:计算特征 A(是否发烧)的固有值∣D1∣/∣D∣=4/10=0.4,∣D2∣/∣D∣=6/10=0.6IV(A)=−0.4log20.4−0.6log20.6≈0.972

步骤 2:计算信息增益比IGR(D,A)=0.9720.28​≈0.288

3. C4.5 的改进点
  • 用信息增益比选特征,避免偏好取值多的特征;
  • 支持连续特征(把连续特征离散化,比如按阈值拆分成 "> 阈值 /< 阈值");
  • 增加剪枝策略,减少过拟合。

6.2.2 CART(Classification and Regression Tree)

CART 是通用的决策树算法,可做分类也可做回归,核心是用基尼指数(Gini Index)选特征(分类)或均方误差(回归)。

1. 基尼指数(分类树)------ 衡量数据集的 "不纯度"

基尼指数越小,数据集越纯净(和熵的作用一致,但计算更快)。公式(二分类,p 是正类占比):Gini(D)=2p(1−p)公式(多分类,pk​ 是类别 k 占比):Gini(D)=1−∑k=1n​pk2​

  • 例子:
    • 数据集 D 全为正类 → Gini(D)=1−12=0;
    • 数据集 D50 正 50 负 → Gini(D)=1−(0.52+0.52)=0.5。
2. 特征 A 的基尼指数(拆分后的不纯度)

Gini(D,A)=∑v=1V​∣D∣∣Dv​∣​Gini(Dv​)

  • CART 选择基尼指数最小的特征作为最优特征。
3. CART 的特点
  • 二叉树:无论特征有多少取值,都拆分成两个子集(比如 "年龄> 30" 和 "年龄≤30"),结构更简单;
  • 支持回归:回归树用 "均方误差最小" 选特征,叶节点是子集的均值;
  • 剪枝策略:后剪枝,降低过拟合风险。

七、集成学习

集成学习的核心是 "三个臭皮匠顶个诸葛亮"------ 训练多个基模型(比如决策树),通过组合它们的预测结果,得到比单个模型更优的性能。

7.1 误差的偏差 - 方差分解

要理解集成学习的作用,首先要明确模型误差的构成:总误差 = 偏差(Bias) + 方差(Variance) + 噪声(Noise)

1. 偏差、方差、噪声的定义

概念 定义 通俗解释
偏差(Bias) 模型的预测值与真实值的平均差距,衡量模型的 "拟合能力" 模型的 "系统性错误",比如用线性模型拟合非线性数据,偏差会很大(欠拟合)。例子:真实值是 5,模型每次预测都在 3 左右 → 偏差大
方差(Variance) 模型在不同训练集上的预测结果的波动程度,衡量模型的 "稳定性" 模型的 "随机性错误",比如复杂模型(深度决策树)对训练集敏感,换一批训练集,预测结果差异大 → 方差大(过拟合)。例子:真实值是 5,模型预测有时是 2,有时是 8 → 方差大
噪声(Noise) 数据本身的不可避免的误差,是模型能达到的最小误差下限 比如传感器采集数据时的误差、标注错误等,无法通过模型优化消除

2. Bagging 和 Boosting 对偏差 / 方差的影响

集成方法 核心作用 对偏差 / 方差的影响 适用场景
Bagging 并行训练多个基模型,投票 / 平均输出 主要降低方差,对偏差影响小 基模型是高方差、低偏差的模型(比如深度决策树,易过拟合)
Boosting 串行训练多个基模型,逐步纠正错误 主要降低偏差,对方差影响小 基模型是低方差、高偏差的模型(比如浅决策树,易欠拟合)

7.2 Bagging 和随机森林的思想

1. Bagging(Bootstrap Aggregating)

核心思想(并行集成)
  1. 自助采样(Bootstrap):从原始训练集(m 个样本)中,有放回地采样 m 个样本,得到一个新的训练子集(约 63.2% 的原始样本会被选中,36.8% 未被选中);
  2. 训练基模型:对每个采样得到的子集,训练一个基模型(比如决策树),所有基模型并行训练;
  3. 组合预测
    • 分类:所有基模型投票,少数服从多数;
    • 回归:所有基模型预测值取平均。
关键作用

通过 "多个不同子集训练的模型" 的投票 / 平均,降低单个模型的方差(减少过拟合),因为不同模型的随机误差会相互抵消。

2. 随机森林(Random Forest,RF)

随机森林是 Bagging 的改进版,基模型是决策树,核心是 "增加随机性"。

核心思想

在 Bagging 的基础上,给决策树的特征选择增加随机性:

  1. 样本随机:和 Bagging 一样,自助采样得到子集;
  2. 特征随机:训练每个决策树时,从所有特征中随机选一部分特征(比如总特征数为 d,选 d 个),仅从这部分特征中选最优特征拆分;
  3. 组合预测:同 Bagging(投票 / 平均)。
为什么更优?
  • 样本 + 特征双重随机,让基模型之间的 "相关性更低",组合后方差降低更明显;
  • 随机森林是工业界最常用的 "开箱即用" 模型,泛化能力强,不易过拟合。

7.3 Boosting 的思想(重点:GBDT)

Boosting 是串行集成,核心是 "逐步纠正错误"------ 先训练一个弱模型,再训练第二个模型纠正第一个的错误,依此类推,最终组合所有弱模型得到强模型。

1. Boosting 的通用思想

  1. 初始化:用原始训练集训练第一个基模型 f1;
  2. 计算误差 :找出 f1 预测错误的样本,给这些样本增加权重(让后续模型更关注这些样本);
  3. 训练下一个模型:用加权后的训练集训练第二个基模型 f2;
  4. 重复迭代:重复 "计算误差→加权→训练新模型",直到训练完 T 个基模型;
  5. 组合预测:给每个基模型分配权重(预测准的模型权重高),加权求和 / 投票得到最终结果。

2. GBDT(Gradient Boosting Decision Tree,梯度提升决策树)

GBDT 是 Boosting 的经典实现,基模型是决策树(通常是浅树,比如深度 3),核心是 "用梯度下降的思想纠正误差"。

核心思想(算法 7-2 通俗版步骤)

假设目标是最小化损失函数 L(y,y^​)(比如分类用交叉熵,回归用均方误差):

  1. 初始化强模型:用一个常数作为初始预测(比如回归取所有样本的均值,分类取对数几率):f0(x)=argminc∑i=1mL(yi,c)
  2. 迭代训练基模型(共 T 轮) :a. 计算负梯度(残差) :把 "真实值 - 当前模型预测值" 作为残差(梯度的近似),残差代表模型当前的 "错误":rti=−∂f(xi)∂L(yi,f(xi))f(xi)=ft−1(xi)
    • 回归(均方误差):残差 rti=yi−ft−1(xi)(真实值 - 预测值);b. 训练基模型 :用残差 rti 作为新的 "标签",训练一棵决策树 ht(x)(拟合残差,即纠正错误);c. 更新强模型:把新训练的决策树加权加入强模型:ft(x)=ft−1(x)+α⋅ht(x)
    • α:学习率(超参数,通常取 0.1),控制每棵树的贡献,防止过拟合;
  3. 最终模型:f(x)=fT(x)=f0(x)+α⋅∑t=1Tht(x)
通俗例子(回归任务:预测房价)
  • 初始模型 f0(x):所有样本房价的均值(比如 100 万);
  • 第 1 轮:计算每个样本的残差(真实房价 - 100 万),训练一棵决策树拟合残差(比如 "面积> 100㎡的样本残差 + 20 万"),更新模型 万;
  • 第 2 轮:计算新的残差(真实房价 -f1(x)),训练第二棵决策树拟合新残差,更新模型;
  • 最终:所有树的预测值加权求和,得到最终房价预测。
GBDT 的特点
  • 串行训练,每棵树都在纠正前序模型的错误,偏差逐步降低;
  • 基模型是浅决策树(低方差),整体模型偏差低、方差也低,泛化能力极强;
  • 是工业界的 "明星模型",广泛用于排序、分类、回归任务(比如推荐系统、广告点击率预测)。

决策树 + 集成学习 核心速记表

一、决策树核心知识点

1. 基本原理

核心逻辑 :分而治之,递归选择最优特征拆分数据集,构建树形判断结构(根节点→内部节点→叶节点)。预测方式:新样本从根节点按特征判断走分支,落到叶节点得到结果。

2. 特征选择指标(核心公式)

算法 核心指标 公式(纯文本清晰版) 计算逻辑 / 特点
ID3 信息增益 IG (D,A) 1. 数据集熵 H (D) = -Σ(p_k × log2 (p_k))(p_k 是类别 k 的样本占比,Σ 表示求和)2. 信息增益 IG (D,A) = H (D) - Σ( D_v / D × H(D_v) )(D_v 是特征 A 取第 v 个值的子集, D_v 是子集样本数, D 是总样本数) 1. 先算数据集熵(混乱度,值越大越混乱)2. 算按特征 A 拆分后各子集的加权熵3. 熵的差值即信息增益,越大特征越优缺点:偏好取值多的特征
C4.5 信息增益比 IGR (D,A) 1. 特征固有值 IV (A) = -Σ( D_v / D × log2( D_v / D ) )2. 信息增益比 IGR (D,A) = IG (D,A) / IV (A) 1. 用信息增益除以特征固有值(取值多的特征固有值大,会被惩罚)2. 解决 ID3 偏好取值多特征的问题,越大特征越优
CART 基尼指数 Gini (D,A) 1. 数据集基尼指数 Gini (D) = 1 - Σ(p_k²)(p_k² 是类别 k 占比的平方)2. 特征 A 的基尼指数 Gini (D,A) = Σ( D_v / D × Gini(D_v) ) 1. 基尼指数衡量数据集不纯度,值越小越纯净2. 按特征 A 拆分后的加权基尼指数,越小特征越优支持分类 + 回归,生成二叉树

3. 三种算法对比

特点 ID3 C4.5 CART
适用特征 仅离散特征 离散 + 连续特征(先离散化) 离散 + 连续特征
树结构 多叉树 多叉树 二叉树(无论特征取值多少,都拆成 2 个子集)
核心缺点 偏好取值多特征、无剪枝 计算复杂度较高 -
剪枝策略 有(后剪枝) 有(后剪枝)

二、集成学习核心知识点

1. 误差的偏差 - 方差分解

总误差公式:总误差 = 偏差 + 方差 + 噪声

概念 通俗定义 对应问题
偏差(Bias) 模型预测值与真实值的平均差距,衡量 "拟合能力" 偏差大 → 欠拟合(模型太简单,学不到数据规律)
方差(Variance) 模型在不同训练集上的预测波动程度,衡量 "稳定性" 方差大 → 过拟合(模型太复杂,对训练集敏感)
噪声(Noise) 数据本身的误差,是模型能达到的最小误差下限 无法通过模型优化消除
集成方法 核心作用 适用基模型
Bagging 主要降低方差 高方差、低偏差模型(如深度决策树)
Boosting 主要降低偏差 低方差、高偏差模型(如浅决策树)

2. Bagging 与随机森林

方法 核心步骤(纯文本) 关键特点
Bagging 1. 自助采样:从原始数据集有放回采样,生成多个训练子集2. 并行训练:每个子集训练一个基模型(如决策树)3. 组合预测:分类→投票(少数服从多数);回归→取平均 降低方差,减少过拟合
随机森林(RF) 基于 Bagging,增加 "特征随机":训练每个决策树时,从所有特征中随机选一部分(如√总特征数),仅从这部分特征选最优拆分特征 1. 样本 + 特征双重随机,基模型相关性更低2. 泛化能力强,工业界 "开箱即用"

3. Boosting 与 GBDT

(1)Boosting 通用思想
  1. 串行训练:先训 1 个弱模型,后续模型给前序模型预测错误的样本加权重(重点学习错误样本);
  2. 加权组合:给预测准的模型分配更高权重,最终加权求和 / 投票。
(2)GBDT(梯度提升决策树)核心步骤(算法 7-2 简化版)
步骤 操作(纯文本) 关键说明
1. 初始化模型 用常数作为初始预测(比如回归任务取所有样本标签的均值) 公式:f₀(x) = 使 "Σ 损失函数 (L (y_i, c))" 最小的常数 c
2. 迭代训练基模型(共 T 轮) a. 计算残差(负梯度):代表当前模型的预测错误 (回归任务:残差 = 真实值 y_i - 上一轮模型预测值 fₜ₋₁(x_i))b. 训练 1 棵浅决策树 hₜ(x),拟合这个残差(纠正错误)c. 更新强模型:fₜ(x) = fₜ₋₁(x) + α×hₜ(x) α 是学习率(超参数,通常取 0.1),控制每棵树的贡献,防止过拟合
3. 最终模型 所有基模型加权求和 公式:f (x) = f₀(x) + α×Σ(t=1 到 T)hₜ(x)
核心特点 基模型是浅决策树(低方差),串行纠正错误,偏差逐步降低 泛化能力极强,适用于分类、回归、排序(如推荐系统、广告点击率预测)
相关推荐
aigcapi2 小时前
AI 获客系统哪个好?矩阵系统哪个好?2026 客观测评 TOP4
大数据·人工智能·矩阵
sin_hielo2 小时前
leetcode 1266
数据结构·算法·leetcode
草莓熊Lotso2 小时前
Linux 2.6 内核 O(1) 调度队列深度解析:为什么它能实现常数时间调度?
linux·运维·服务器·数据结构·人工智能·哈希算法·散列表
渡我白衣2 小时前
从森林到梯度——梯度提升树的原理、调参与实战
人工智能·深度学习·神经网络·目标检测·机器学习·计算机视觉·自然语言处理
weixin_462446232 小时前
Python+React 专为儿童打造的汉字学习平台:从学前到小学的智能汉字教育解决方案
python·学习·react.js
Dylan的码园2 小时前
稀疏 MoE 与原生多模态双驱:2025 大模型技术演进全景
人工智能·机器学习·ai作画·数据挖掘·boosting·oneflow
_-CHEN-_2 小时前
Prompt Manager: 让你的 AI 提示词管理更专业
人工智能·prompt
weixin_397578022 小时前
Transformer 架构 “Attention Is All You Need“
人工智能
檀越剑指大厂2 小时前
AI 当主程还能远程开发?TRAE SOLO 的实用体验与cpolar内网突破
人工智能