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

【机器学习】13. 决策树

决策树的构造

策略:从上往下学习通过recursive divide-and-conquer process(递归分治过程)

  1. 首先选择最好的变量作为根节点,给每一个可能的变量值创造分支。
  2. 然后将样本放进子集之中,从每个分支的节点拓展一个。
  3. 最后:对每个分支进行递归重复,只使用到达该分支的样本
  4. 停止递归:如果所有的样本都有着相同的类别,为这个类创建一个叶节点

信息增益(基于熵)

熵衡量的是这个集合相对于类的纯度。

熵越小,数据集的纯度就越大

熵也用于信号压缩,信息论和物理学。

定义

Entropy H(S)
H ( S ) = I ( S ) = − ∑ i P i ∗ l o g 2 P i H(S) = I(S) = -\sum_iP_i*log_2P_i H(S)=I(S)=iPilog2Pi
P i P_i Pi 代表属于类别i的样本比例

举例

假设现在有 2 个类别, yes 和 no, 这个集合中有9个yes,5个no 交叉熵的计算如下
H ( S ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.94 b i t s H(S) = -\frac{9}{14}log_2\frac{9}{14} - \frac{5}{14}log_2 \frac{5}{14} = 0.94 bits H(S)=149log2149145log2145=0.94bits

  • 熵是用比特来测量的

  • 在计算熵的时候,我们会假设 l o g 2 0 = 0 log_20 =0 log20=0

  • H(S) 的范围是[0,1]

    • 当H(S) = 0 的时候,S的所有元素都属于相同的类,即这个集合是纯净的,拥有最小的Entropy(熵)
    • 当H(S) = 1 的时候,有相同数量的yes和no(假设是两类),即最小的纯净度,最大的Entropy.

信息增益

  • 信息增益度量使用属性划分训练示例集所导致的熵减少。
  • 它是两个熵的差:增益= T1-T2
  • T1为分裂前与父节点相关联的样本集合S的熵
  • T2是S中剩余的熵,在S被属性分割后
  • 差值越大,信息增益越高
  • 最好的属性是信息增益最高的属性
    • 它减少了父节点的熵

案例

选择outlook作为根节点,以此分出3个子集, 各自有5,4,5个样本。
T 1 = H ( S ) = I ( 9 14 , 5 14 ) T1 = H(S) = I(\frac{9}{14},\frac{5}{14}) T1=H(S)=I(149,145)
T 2 = H ( S ∣ o u t l o o k ) = 5 14 H ( S 1 ) + 4 14 H ( S 2 ) + 5 14 H ( S 3 ) T2 = H(S|outlook) = \frac{5}{14}H(S_1)+\frac{4}{14}H(S_2)+\frac{5}{14}H(S_3) T2=H(Soutlook)=145H(S1)+144H(S2)+145H(S3)

修剪决策树

  • 如果我们生长决策树来完美地分类训练集,树可能会变得过于具体,并过度拟合数据。
  • 过拟合-训练daddata的精度高,但新数据的精度低
  • 树变得太具体了,主要是记忆数据,而不是提取模式
  • 在决策树中什么时候会发生过拟合?
    • 训练数据太小->没有足够的代表性示例来构建一个可以在新数据上很好地泛化的模型
    • 训练数据中的噪音,例如标签错误的例子
  • 使用树修剪来避免过拟合

两个主要策略

  • pre-pruning
    • 在它达到完美分类训练数据的点之前,尽早停止生长树
  • post-pruning
    • 让树完全生长,让它完美地覆盖训练数据,然后修剪它
  • 在实践中优先考虑后修剪
  • 不同的后剪枝方法:
    • 子树替换
    • 子树的提升
    • 将树转换为规则,然后修剪它们
  • 修剪多少?使用验证集来决定

通过子树替换的修剪思想

自下而上-从树的底部到根部

  • 每个非叶节点都是修剪的候选节点,对于每个节点:
  • 移除根在它上面的子树
  • 用class=majority类的例子替换它候选节点
  • 比较新树和旧树通过计算两者的验证集的精度
  • 如果新树的精度更好或与旧树的精度相同,保持新树(即修剪候选节点)

总结

  • 非常流行的ML技术
  • 自上而下的学习使用递归的分治过程
  • 易于实现
  • 可解释的
  • 制作的树很容易被非专家和客户可视化和理解
  • 可解释性增加了在实践中使用机器学习模型的信任
  • 使用修剪来防止过拟合
  • 选择最佳属性-信息增益、增益比等

相关文章:

【机器学习】13. 决策树

决策树的构造 策略:从上往下学习通过recursive divide-and-conquer process(递归分治过程) 首先选择最好的变量作为根节点,给每一个可能的变量值创造分支。然后将样本放进子集之中,从每个分支的节点拓展一个。最后&a…...

《a16z : 2024 年加密货币现状报告》解析

加密社 原文链接:State of Crypto 2024 - a16z crypto译者:AI翻译官,校对:翻译小组 当我们两年前第一次发布年度加密状态报告的时候,情况跟现在很不一样。那时候,加密货币还没成为政策制定者关心的大事。 比…...

Laravel 使用Simple QrCode 生成PNG遇到问题

最近因项目需求,需要对qrcode 进行一些简单修改,发现一些问题,顺便记录一下 目前最新的版本是4.2,在环境是 PHP8 ,laravel11 的版本默认下载基本是4.0以上的 如下列代码 QrCode::format(png)->generate(test);这样…...

一站式学习 Shell 脚本语法与编程技巧,踏出自动化的第一步

文章目录 1. 初识 Shell 解释器1.1 Shell 类型1.2 Shell 的父子关系 2. 编写第一个 Shell 脚本3. Shell 脚本语法3.1 脚本格式3.2 注释3.2.1 单行注释3.2.2 多行注释 3.3 Shell 变量3.3.1 系统预定义变量(环境变量)printenv 查看所有环境变量set 查看所有…...

批处理操作的优化

原来的代码 Override Transactional(rollbackFor Exception.class) public void batchAddQuestionsToBank(List<Long> questionIdList, Long questionBankId, User loginUser) {// 参数校验ThrowUtils.throwIf(CollUtil.isEmpty(questionIdList), ErrorCode.PARAMS_ERR…...

机器视觉运动控制一体机在DELTA并联机械手视觉上下料应用

市场应用背景 DELTA并联机械手是由三个相同的支链所组成&#xff0c;每个支链包含一个转动关节和一个移动关节&#xff0c;具有结构紧凑、占地面积小、高速高灵活性等特点&#xff0c;可在有限的空间内进行高效的作业&#xff0c;广泛应用于柔性上下料、包装、分拣、装配等需要…...

RHCE-web篇

一.web服务器 Web 服务器是一种软件或硬件系统&#xff0c;用于接收、处理和响应来自客户端&#xff08;通常是浏览器&#xff09;的 HTTP 请求。它的主要功能是存储和提供网站内容&#xff0c;比如 HTML 页面、图像、视频等。 Web 服务器的主要功能 处理请求&#xf…...

Java - 人工智能;SpringAI

一、人工智能&#xff08;Artificial Intelligence&#xff0c;缩写为AI&#xff09; 人工智能&#xff08;Artificial Intelligence&#xff0c;缩写为AI&#xff09;是一门新的技术科学&#xff0c;旨在开发、研究用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统…...

MFC开发,给对话框添加定时器

定时器简介 定时器的主要功能是设置以毫秒为单位的定时周期&#xff0c;然后进行连续定时或单次定时。 定时器是用于设置有规律的去触发某种动作所用的&#xff0c;这种场景也是软件中经常可以用到的&#xff0c;比如用户设置规定时间推送提示的功能&#xff0c;又比如程序定…...

LED灯珠:技术、类型与选择指南

目录 1. LED灯珠的类型 2. LED灯珠技术 3. 如何选择LED灯珠 4. 相关案例和使用情况 5. 结论 LED&#xff08;Light Emitting Diode&#xff09;灯珠是一种半导体发光器件&#xff0c;通过电流在固体半导体中流动时&#xff0c;其工作原理是电子与空穴的结合&#xff0c;通过…...

C语言二刷

const #include<stdio.h> int main() {const int amount 100;int price 0;scanf("%d", &price);int change amount - price;printf("找您%d元\n", change);return 0; } 浮点数类型 输入输出float&#xff08;单精度&#xff09;%f%f %l…...

C++模块化程序设计举例

1、模块1 在main.cpp里输入下面的程序&#xff1a; #include "stdio.h" //使能printf()函数 #include <stdlib.h> //使能exit(); #include "Static_Variable.h" //argc 是指命令行输入参数的个数; //argv[]存储了所有的命令行参数; //argv[0]通常…...

毕业设计选题:基于Python的招聘信息爬取和可视化平台

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 采集的数据列表 招聘数据大屏 摘要 本系统通过对网络爬虫的分析&#xff0c;研究智…...

机器人学习仿真框架

机器人学习仿真框架一般包含&#xff08;自底向上&#xff09;&#xff1a; 3D仿真物理引擎&#xff1a;对现实世界的模拟仿真机器人仿真平台&#xff1a;用于搭建工作场景&#xff0c;以实现agent与环境的交互学习学习算法框架集合&#xff1a;不同的策略学习算法的实现算法测…...

力扣每日一题打卡 3180. 执行操作可获得的最大总奖励 I

给你一个整数数组 rewardValues&#xff0c;长度为 n&#xff0c;代表奖励的值。 最初&#xff0c;你的总奖励 x 为 0&#xff0c;所有下标都是 未标记 的。你可以执行以下操作 任意次 &#xff1a; 从区间 [0, n - 1] 中选择一个 未标记 的下标 i。如果 rewardValues[i] 大于…...

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解

在科技日新月异的今天&#xff0c;视频监控系统作为现代社会的“第三只眼”&#xff0c;正以前所未有的方式深刻影响着我们的生活与社会结构。从公共场所的安全监控到个人生活的记录分享&#xff0c;视频监控系统以其独特的视角和功能&#xff0c;为社会带来了诸多好处&#xf…...

springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip

车辆管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足&#xff0c;创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的系统…...

2024.10月22日- MySql的 补充知识点

1、什么是数据库事务&#xff1f; 数据库事务: 是数据库管理系统执行过程中的一个逻辑单位&#xff0c;由一个有限的数据库操作序列构成&#xff0c;这些操作要么全部执行,要么全部不执行&#xff0c;是一个不可分割的工作单位。 2、Mysql事务的四大特性是什么&#xff1f; …...

Java中的对象——生命周期详解

1. 对象的创建 1.1 使用 new 关键字 执行过程&#xff1a;当使用 new 关键字创建对象时&#xff0c;JVM 会为新对象在堆内存中分配一块空间&#xff0c;并调用对应的构造器来初始化对象。 示例代码&#xff1a; MyClass obj new MyClass(); 内存变化&#xff1a;JVM 在堆…...

vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理

检查 Node.js 版本&#xff1a;这个问题可能与 Node.js 的版本有关。你可以尝试将 Node.js 的版本切换到 12 或更低。如果没有安装 nvm&#xff08;Node Version Manager&#xff09;&#xff0c;可以通过以下命令安装&#xff1a; curl -o- https://raw.githubusercontent.co…...

第 6 章 机器人系统仿真

对于ROS新手而言&#xff0c;可能会有疑问:学习机器人操作系统&#xff0c;实体机器人是必须的吗&#xff1f;答案是否定的&#xff0c;机器人一般价格不菲&#xff0c;为了降低机器人学习、调试成本&#xff0c;在ROS中提供了系统的机器人仿真实现&#xff0c;通过仿真&#x…...

爬虫——scrapy的基本使用

一&#xff0c;scrapy的概念和流程 1. scrapy的概念 Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 框架就是把之前简单的操作抽象成一套系统&#xff0c;这样我们在使用框架的时候&#xff0c;它会自动的帮我们完成很…...

聚类分析算法——K-means聚类 详解

K-means 聚类是一种常用的基于距离的聚类算法&#xff0c;旨在将数据集划分为 个簇。算法的目标是最小化簇内的点到簇中心的距离总和。下面&#xff0c;我们将从 K-means 的底层原理、算法步骤、数学基础、距离度量方法、参数选择、优缺点 和 源代码实现 等角度进行详细解析。…...

【Sublime Text】设置中文 最新最详细

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Sublime Text】设置中文 最新最详细 开…...

C++学习路线(二十四)

静态成员函数 类的静态方法: 1.可以直接通过类来访问【更常用】&#xff0c;也可以通过对象(实例)来访问。 2.在类的静态方法中&#xff0c;不能访问普通数据成员和普通成员函数(对象的数据成员和成员函数&#xff09; 1)静态数据成员 可以直接访问“静态数据成员”对象的成…...

MySQL-存储过程/函数/触发器

文章目录 什么是存储过程存储过程的优缺点存储过程的基本使用存储过程的创建存储过程的调用存储过程的删除存储过程的查看delimiter命令 MySQL中的变量系统变量用户变量局部变量参数 if语句case语句while循环repeat循环loop循环游标cursor捕获异常并处理存储函数触发器触发器概…...

前端页面样式没效果?没应用上?

当我们在开发项目时会有很多个页面、相同的标签&#xff0c;也有可能有相同的class值。样式设置的多了&#xff0c;分不清哪个是当前应用的。我们可以使用网页的开发者工具。 在我们开发的网页中按下f12或&#xff1a; 在打开的工具中我们可以使用元素选择器&#xff0c;单击我…...

05.MyISAM主键和二级索引树

...

Mac apache配置cgi环境-修改httpd.conf文件、启动apache

Mac自带Apache&#xff0c;配置CGI&#xff0c;分以下几步&#xff1a; 找到httpd.conf。打开终端&#xff0c;编辑以下几处&#xff0c;去掉#或补充内容。在这个路径下写一个测试文件.py格式的&#xff0c;/Library/WebServer/CGI-Executables&#xff0c;注意第一行的python…...

多厂商的实现不同vlan间通信

Cisco单臂路由 Cisco路由器配置 -交换机配置 -pc配置 华三的单臂路由 -路由器配置 -华三的接口默认是打开的 -pc配置及ping的结果 -注意不要忘记配置默认网关 Cisco-SVI -交换机的配置 -创建vlan -> 设置物理接口对应的Acess或Trunk -> 进入vlan接口&#xff0c;打开接…...

网站动态背景欣赏/免费注册个人网站不花钱

前言&#xff1a;在gitee上创建了一个项目&#xff0c;然后通过本地执行 git push origin master 报错&#xff1a; 提示&#xff1a;更新被拒绝&#xff0c;因为远程包含您所做的工作 提示&#xff1a;不要在本地使用。这通常是由另一个存储库推送引起的 提示&#xff1a;对于…...

生产企业做网站有用吗/百度搜索优化怎么做

遇到这种情况&#xff0c;现有项目的数据库已经建好&#xff0c;数据表也已经创建完成。问题来的&#xff0c;数据库不能插入中文&#xff0c;调试时候发现中文数据从发送请求到最后请求处理完成这些步骤&#xff0c;中文还没有发生乱码。只有在存储到数据库后查询数据并显示才…...

淘宝找做网站/免费网上申请注册

之前&#xff0c;一直想集成Dapper到项目中&#xff0c;但是一直没成功&#xff0c;今天把abp升级到最新版&#xff0c;然后按教程来&#xff0c;就可以了&#xff0c;呵呵 现在&#xff0c;基于上一篇的源码进行升级和集成dapper&#xff0c;将abp升级到3.8.2 官方升级文档&am…...

淘宝网上做美国签证的网站可靠吗/seo排名工具有哪些

首先&#xff0c;对于动态规划&#xff0c;我来做一个简短的介绍&#xff0c;相信各位都看得懂。动态规划(dynamic programming)是运筹学的一个分支&#xff0c;是求解决策过程(decision process)最优化的数学方法。先给一道最简单的例题&#xff08;小学奥数水平&#xff09;&…...

微商怎么做网站/成都移动seo

一&#xff0e;问答题1. 简述电子计算机的用途和特点。电子计算机的用途非常广泛&#xff0c;主要应用领域有&#xff1a;(1)科学计算。 (2)自动控制。(3)信息处理。(4)计算机辅助设计。(5)人工智能。 (6)网络通信。(7)多媒体技术。电子计算机的特点主要有如下几点&#xff1a;…...

网站群建设 公司/鹤岗网站seo

华中科技大学计算机科学与技术专业毕业论文毕 业 论 文题 目扫雷游戏学 校专 业计算机科学与技术学 号姓 名指导教师2014 年9 月18日摘 要随着Internet的迅速崛起,信息网络化成为时代的主题,而计算机也成为了当今社会不可或缺的一部分,在如此快速的社会里,每一个人都有来自各方…...