如何构建多层决策树

构建一颗多层的决策树时,通过递归选择最佳划分特征(依据 信息增益基尼系数)对数据集进行划分,直到满足停止条件(例如叶节点纯度达到要求或树的深度限制)。以下是基于 信息增益基尼系数 的递推公式和推导过程:


1. 基于信息增益的递推公式与推导

信息增益的目标是选择能够 最大化信息增益 的特征 X_j和对应的分割点 t ,划分数据集 D 为D_{\text{left}} 和 D_{\text{right}}​。

递推公式

信息增益计算公式:

信息增益定义为划分前后的信息熵差值:

IG(D, X_j, t) = H(D) - H(D|X_j, t)

  • H(D):数据集 D 的信息熵。
  • H(D|X_j, t):数据集 D 按特征 cc 和分割点 t 划分后的条件熵。
信息熵公式:

对于一个数据集 D(含 n 个样本,类别数为 k ),信息熵定义为:

H(D) = -\sum_{i=1}^k p(y_i) \log_2 p(y_i)

其中,p(y_i) = \frac{n(y_i)}{n},即类别 y_i 的样本数占总样本数的比例。

条件熵公式:

数据集 D 按特征 X_j 和分割点 t 划分后:

  • 左子集:D_{\text{left}} = \{x \in D | X_j \leq t\}
  • 右子集:D_{\text{right}} = \{x \in D | X_j > t\}

条件熵为:

H(D|X_j, t) = p_{\text{left}} H(D_{\text{left}}) + p_{\text{right}} H(D_{\text{right}})

其中:

p_{\text{left}} = \frac{|D_{\text{left}}|}{|D|}, \quad p_{\text{right}} = \frac{|D_{\text{right}}|}{|D|}

递推推导过程

  1. 初始化根节点

    • 输入初始数据集 D 。
    • 计算信息熵 H(D) 。
  2. 选择划分特征和分割点

    • 对每个特征 X_j 和可能的分割点 t,计算信息增益 IG(D, X_j, t)IG(D, X_j, t) = H(D) - \left(p_{\text{left}} H(D_{\text{left}}) + p_{\text{right}} H(D_{\text{right}})\right)
    • 遍历所有特征和分割点,选择 G(D, X_j, t)最大的X_j 和 t 。
  3. 递归划分

    • 使用最优特征 X_j 和分割点 t 划分数据集:
      • 左子集 D_{\text{left}}
      • 右子集 D_{\text{right}}
    • D_{\text{left}} ​ 和 D_{\text{right}} 重复上述过程,直到满足停止条件。

2. 基于基尼系数的递推公式与推导

CART 决策树使用 基尼指数 作为划分标准。目标是选择使 加权基尼系数最小 的特征 XjX_jXj​ 和分割点 t 。

递推公式

基尼系数公式:

对于数据集 D ,基尼系数定义为:

Gini(D) = 1 - \sum_{i=1}^k p(y_i)^2

其中,p(y_i) = \frac{n(y_i)}{n} ​。

加权基尼指数公式:

数据集 D 按特征 X_j 和分割点 t 划分后,计算加权基尼指数:

Gini(D|X_j, t) = p_{\text{left}} Gini(D_{\text{left}}) + p_{\text{right}} Gini(D_{\text{right}})

其中:

p_{\text{left}} = \frac{|D_{\text{left}}|}{|D|}, \quad p_{\text{right}} = \frac{|D_{\text{right}}|}{|D|}


递推推导过程

  1. 初始化根节点

    • 输入初始数据集 D 。
    • 计算基尼系数 Gini(D) 。
  2. 选择划分特征和分割点

    • 对每个特征 X_j​ 和可能的分割点 t ,计算加权基尼指数: Gini(D|X_j, t) = p_{\text{left}} Gini(D_{\text{left}}) + p_{\text{right}} Gini(D_{\text{right}})
    • 遍历所有特征和分割点,选择使Gini(D|X_j, t) 最小的 X_j 和 t 。
  3. 递归划分

    • 使用最优特征 X_j 和分割点 t 划分数据集:
      • 左子集 D_{\text{left}}
      • 右子集 D_{\text{right}}
    • D_{\text{left}}​ 和 D_{\text{right}} 重复上述过程,直到满足停止条件。

3. 决策树构建停止条件

  • 样本全部属于同一类别(纯度为 1)。
  • 数据集不能再划分(没有剩余特征或达到深度限制)。
  • 划分后的子集样本数太小,停止进一步划分。

4. 总结递推公式

信息增益递推公式:

IG(D, X_j, t) = H(D) - \left(p_{\text{left}} H(D_{\text{left}}) + p_{\text{right}} H(D_{\text{right}})\right)

基尼系数递推公式:

Gini(D|X_j, t) = p_{\text{left}} Gini(D_{\text{left}}) + p_{\text{right}} Gini(D_{\text{right}})

在决策树构建过程中,通过递归应用上述公式,选择最优的特征和分割点 t 来划分数据,最终构建完整的树。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/950186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VSCode 使用鼠标滚轮控制字体

一、 文件 | 首选项 | 设置 二、单击在 settings.json中编辑 "editor.mouseWheelZoom": true 注注注意:保存哦!ctrlS 三、测试 按住ctrl鼠标滚轮,控制字体大小

十年后LabVIEW编程知识是否会过时?

在考虑LabVIEW编程知识在未来十年内的有效性时,我们可以从几个角度进行分析: ​ 1. 技术发展与软件更新 随着技术的快速发展,许多编程工具和平台不断更新和改进,LabVIEW也不例外。十年后,可能会有新的编程语言或平台…

注册中心如何选型?Eureka、Zookeeper、Nacos怎么选

这是小卷对分布式系统架构学习的第9篇文章,第8篇时只回答了注册中心的工作原理的内容,面试官的第二个问题还没回答,今天再来讲讲各个注册中心的原理,以及区别,最后如何进行选型 上一篇文章:如何设计一个注册…

C++ 复习总结记录三

C 复习总结记录三 主要内容 1、类的六个默认成员函数 2、构造函数 3、析构函数 4、拷贝构造函数 5、赋值运算符重载 6、const 成员函数 7、取地址及 const 取地址操作符重载 一 类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中并不是…

【简博士统计学习方法】第1章:4. 模型的评估与选择

4. 模型的评估与选择 4.1 训练误差与测试误差 假如存在样本容量为 N N N的训练集,将训练集送入学习系统可以训练学习得到一个模型,我们将这么模型用决策函数的形式表达,也就是 y f ^ ( x ) y\hat{f}(x) yf^​(x),关于模型的拟合…

计算机网络 (30)多协议标签交换MPLS

前言 多协议标签交换(Multi-Protocol Label Switching,MPLS)是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术。 一、基本概念 MPLS是一种第三代网络架构技术,旨在提供高速、可靠的IP骨干网络交换。它通过将IP地址映…

【Java】JVM内存相关笔记

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。 程序计数器&am…

鸿蒙 ArkUI实现地图找房效果

常用的地图找房功能,是在地图上添加区域、商圈、房源等一些自定义 marker,然后配上自己应用的一些筛选逻辑构成,在这里使用鸿蒙 ArkUI 简单实现下怎么添加区域/商圈、房源等 Marker. 1、开启地图服务 在华为开发者官网,注册应用&…

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭,可通过选项字节在上电时启动硬件看门狗,看门狗计数只能写入不能读取。看门狗启用时,T6bit必须置1,防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗(重置计数器,…

基于JAVA+SSM的车辆运输管理

基于JAVASSM的车辆运输管理 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄弟们&#…

【Linux系列】Vim 编辑器中的高效文本编辑技巧:删除操作

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

win10 VS2019上libtorch库配置过程

win10 VS2019上libtorch库配置过程 0 引言1 获取libtorch2 在VS上配置使用libtorch库3 结语 0 引言 💻💻AI一下💻💻   libtorch库是一个用于深度学习的C库,是PyTorch的官方C前端。它提供了用于构建和训练深度学习模…

通过gradle发布aar或jar携带sources-jar到maven nexus

找了很久,没有找到满意的。终于找到一个好的办法。 gradle7.x适用。比以前的写法简洁。 发布传统的jar工程 比如okhttp,fastjson等项目,纯java工程。 直接创建新文件publish.gradle: apply plugin: maven-publishProperties properties …

STM32-笔记38-I2C-oled实验

一、什么是I2C? I2C总线,全称Inter-Integrated Circuit(互连集成电路),是一种由Philips(现NXP半导体)公司在1980年代初开发的同步 串行 半双工通信总线。 二、有了串口通信为什么要使用I2C&…

【Linux系列】并发与顺序执行:在 Linux 脚本中的应用与选择

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

“AI 视频图像识别系统,开启智能新视界

咱老百姓现在的生活啊,那是越来越离不开高科技了,就说这 AI 视频图像识别系统,听起来挺高大上,实际上已经悄无声息地融入到咱们日常的方方面面,给咱带来了超多便利。 先讲讲安防领域吧,这可是 AI 图像识别的…

Burpsuite20241102macM1版安装

1、安装jdk11 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew update brew install openjdk11 echo export PATH"/opt/homebrew/opt/openjdk11/bin:$PATH" >> ~/.zshrc source ~/.zshrc j…

NVIDIA在CES 2025上的三大亮点:AI芯片、机器人与自动驾驶、全新游戏显卡

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目,旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本,还能保留公式、图表、目…

h264之多视点mvc编码及解码过程(JMVC平台举例)

h264标准参考平台JMVC是针对MVC标准的,JMVC支持多视点编码、合流、多视点解码操作。可以利用JMVC生成h264 mvc码流和解码。 JMVC的下载地址是:jvet / JMVC GitLabH.264/AVC multi-view coding (MVC) extension JMVC reference softwarehttps://vcgit.hh…