【机器学习】决策树 随机森林

1. 决策树是什么?

决策树就是一个**"连环追问"**的流程图,帮你一步步做出决定。

  • 核心结构 :像一棵倒长的树,有根节点 (第一个问题)、内部节点 (后续问题)、分支 (问题的答案)和叶节点(最终结论)。
  • 生活例子 :妈妈要给你介绍对象,决策过程可能是:
    • 问题1:长得帅吗? → 是
    • 问题2:有房吗? → 是
    • 结论:嫁(叶节点)

2. 决策树是怎么构建的?

具体步骤

构建的核心原则是:每次提问,都要让剩下的"不确定性"减少得最多(也就是让数据分得最开)。

具体构建步骤(以分类树为例):

  1. 把所有数据放在根节点。
  2. 寻找最佳分裂点 :遍历所有特征(比如"颜值"、"收入"),计算如果按这个特征划分,数据混乱程度(熵)降低多少。降低最多的那个特征,就是当前节点的分裂依据。
  3. 分裂成子节点:根据该特征的不同取值(如"帅/不帅"),把数据分成几堆。
  4. 递归重复:对每一个子节点,重复步骤2和3,继续分裂。
  5. 停止生长 :直到节点里的数据全是同一类(全嫁或全不嫁),或者没有特征可用,或者树已经达到预设的最大深度,就停止,形成叶节点。

节点的选择

构建决策树的核心,就是在当前节点的所有数据中,找到一个特征 和一个分裂阈值,使得分裂后,子节点里的数据尽可能"纯"(即尽量属于同一类)。

怎么衡量"纯不纯"? 常用三大指标(三选一):

  1. 信息增益(基于熵):看混乱度下降了多少。下降越多越好。
  2. 基尼系数(Gini):看随机抽两个样本,它们不是同一类的概率。这个概率越小越好(最常用,因为计算快)。
  3. 方差减少(MSE):用于回归树,看分裂后误差减小了多少。

为了让你秒懂,我们重点拿"基尼系数"(因为sklearn默认用它)。

基尼系数

节点不纯度计算

设数据集为 DDD,共有 KKK 个类别,pkp_kpk 为第 kkk 类样本占比:

Gini(D)=1−∑k=1Kpk2 Gini(D) = 1 - \sum_{k=1}^{K} p_k^2 Gini(D)=1−k=1∑Kpk2

特征分裂后的加权基尼指数

若特征 AAA 将 DDD 分成 VVV 个子集 DvD_vDv:

Ginisplit(D,A)=∑v=1V∣Dv∣∣D∣⋅Gini(Dv) Gini_{split}(D, A) = \sum_{v=1}^{V} \frac{|D_v|}{|D|} \cdot Gini(D_v) Ginisplit(D,A)=v=1∑V∣D∣∣Dv∣⋅Gini(Dv)

二分类简化形式

当 K=2K=2K=2 时,设正类比例为 ppp:

Gini(D)=2p(1−p) Gini(D) = 2p(1-p) Gini(D)=2p(1−p)

分裂准则

在CART(分类与回归树)算法中,选择使得 Ginisplit(D,A)Gini_{split}(D, A)Ginisplit(D,A) 最小的特征 AAA 进行分裂。

正式分裂------选出本节点的"最优解"

刚才我们分别计算了:

  • "有无房产"基尼下降 0.23
  • "年收入"的最佳切分点(假设在20万处)基尼下降 0.35

决策树的逻辑 :基尼下降最大的那个特征 + 对应的切分条件,就是当前节点的最优选择。

  • 如果"年收入"胜出,那么当前节点就写:"年收入 ≤ 20万?"
  • 左边走"≤20万",右边走">20万"。

3. 随机森林是什么?

一句话概括 :随机森林就是把很多棵"弱弱"的决策树集合在一起,通过投票来做决策。

  • 核心思想 :"三个臭皮匠,顶个诸葛亮"。单棵树容易"死记硬背"(过拟合),但几百棵树一起投票,准确率更高,也更稳定。
  • 生活例子 :不是问一个媒人"这人行不行",而是请100个媒人(每人的标准略有不同)分别看这个人,最后统计哪个结论(嫁/不嫁)票数多,就听谁的。

4. 随机森林的"森林"是怎么构建的?

构建森林的核心原则是:"双重随机" 。这保证了每棵树都是独一无二的。

具体构建步骤(假设要建100棵树):

  1. 随机挑选数据(行抽样):

    • 从原始数据集中,有放回地随机抽取同样数量的样本(这叫Bagging)。这意味着有些样本会被抽到多次,有些一次也没抽到(这些叫OOB数据,用来做内部验证)。
    • 每棵树用的数据集都不一样。
  2. 随机挑选特征(列抽样):

    • 传统决策树会考虑所有特征去找最佳分裂点,但随机森林不这样。
    • 在每一棵树的每一个节点准备分裂时,只随机从所有特征中选出一小部分(比如总共100个特征,只随机选10个)。
    • 强制这棵树只能从这10个特征里选最好的那个来分裂。
  3. 分别生长:

    • 基于以上"双重随机"选出的数据和特征,让每一棵树按照正常的决策树构建方式(但不剪枝,让它尽量长深)自由生长。
  4. 合成森林:

    • 把生成的100棵完全不同的树组合在一起,就构成了随机森林。
相关推荐
小蒋观天下7 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
wuyk5559 小时前
ROS2 Humble 从入门实战教程:第六章:节点:机器人的工作细胞
机器学习
数聚天成DeepSData13 小时前
教育年限数据库跨版本对齐:年龄组、性别与五年间隔怎么处理
人工智能·深度学习·机器学习·数据集·deepsdata
新新学长搞科研13 小时前
【SPIE出版丨EI稳定检索】第三届模式识别与图像分析国际学术会议(PRIA 2026)
图像处理·机器学习·图像分析
饼饼学习空间智能14 小时前
低空经济进入新兴支柱产业:物理AI如何重构低空智能监管系统?
大数据·深度学习·机器学习
Omics Pro15 小时前
研究证实AI虚拟细胞可用于药物靶点发现
数据库·人工智能·算法·机器学习·自然语言处理
在所不辞兄16 小时前
常微分方程详解与应用
人工智能·神经网络·算法·机器学习
袖清暮雨16 小时前
机器学习之随机森林
人工智能·随机森林·机器学习
lisw0516 小时前
图像质量评估:从误差可见度到结构相似性
人工智能·机器学习·计算机视觉
论文复现现场16 小时前
Qwen-VL 票据 OCR 微调需要几张 4090?单卡 QLoRA、4 卡训练与 OOM 排查
人工智能·机器学习·ocr·分布式训练·qlora·rtx4090·qwen2.5-vl