机器学习入门(第五天)——决策树(每次选一边)

news2024/9/22 11:39:18

Decision tree

知识树

Knowledge tree

一个小故事

A story

挑苹果:

根据这些特征,如颜色是否是红色、硬度是否是硬、香味是否是香,如果全部满足绝对是好苹果,或者红色+硬但是无味也是好苹果,从上图可以看出来,只要做足够的循环判断即可得到结果。

如下图:

一步步走下来,就能挑到好苹果。这就是决策树

  1. 最顶端的叫根节点,所有样本的预测都是从根节点开始。

  2. 每一个圆形节点表示判断,每个节点只对样本的某个属性进行判断。

  3. 圆形节点是标记节点,走到圆形节点表示判断结束,将圆形节点中的标签作为对应的预测结果。

如何构建决策树:

  1. 构建的决策树按顺序对每个特征进行判断(低效)

  2. 每个判断节点都尽可能让一半进入A分支,另一半进入B分支(高效)

引入新的知识,信息熵

信息熵

Information entropy

  1. 每走一步,我们都在确定苹果的好坏。

  2. 在根节点时,我们对苹果的好坏一无所知。

  3. 经过对颜色的判断后,如果是红色,我们明白好坏的概率是1/2。虽然还包含了1/2的不确定性。

  4. 如果苹果红色的前提下又硬,我们100%确定它是好苹果。此时不确定性坍塌为0。

  5. 这是一个减少不确定性的过程。

从整体来讲,我们希望决策树每走一步,不确定性都下降的快一些,让我们的判断步数无限小。

什么是信息的不确定性?

就是信息熵

在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量,设X是一个取有限个值的离散随机变量,其概率分布为

则随机变量X的熵定义为

面试可能会问到这个公式,还有交叉熵、相对熵

熵越大,则随机变量的不确定性越大。其中0 ≤ H(P) ≤ log n

举例计算

Example

假设投色子,6个的概率分别是1/6,计算如下:

其中6个1/6(log左边的六分之一)加起来就是1

则最终=log6

这也解释了为什么上面H(P) ≤ log n

另外,均由分布的时候,熵最大,因为所有可能都是一样的,如上面的6个面都是1/6。

如果有1个坏苹果和9个好苹果时,我们可以认为大部分都是坏苹果。内部并不混乱,确定性很大,熵很小。

信息增益

Information gain

表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。

特征A对训练集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即:g(D, A) = H(D) - H(D|A)

当前的信息熵等于划分完(如划分成两个)的信息熵之和。

信息增益算法

输入:训练数据集D和特征A

输出:特征A对训练数据集D的信息

  1. 计算数据集D的经验熵H(D)

  2. 计算特征A对数据集D的经验条件熵H(D|A)

  3. 计算信息增益

举个例子

Example

是否信贷

ID年龄有工作有自己房子信贷情况类别
1青年一般
2青年
3青年
4青年一般
5青年一般
6中年一般
7中年
8中年
9中年非常好
10中年非常好
11老年非常好
12老年
13老年
14老年非常好
15老年一般

对上表所给的训练数据集D,根据信息增益准则选择最优特征。首先计算经验熵H(D)

计算类别:一共15个类别,9个是,6个否

然后计算各特征对数据集D的信息增益,分别以A1,A2,A3,A4表示年龄、有工作、有自己房子和信贷情况4个特征,则

  1. 首先计算年龄

    H(D)=0.971上面计算了,H(D1)青年,H(D2)中年,H(D3)老年

  2. 计算有工作

    H(D)=0.971,H(D1)是有工作,H(D2)是无工作

  3. 计算有无房子

  4. 计算信贷情况

有无房子是作为信贷的第一个划分,下降的最快

信息增益比

Information gain ratio

信息增益比:

如果以信息增益为划分依据,存在偏向选择取值较多的特征,信息增益是对这一问题进行矫正。

举例

如上面的例子,后面加入了身份证这个特征,身份证又是唯一的,算法对样本画了个15叉树,一层就搞定了全部的分类。

这样会造成一个问题,划分会倾向于特征取值数目较多的,即分的更快。

但在预测集上就出现很大的问题了,即预测集的身份证肯定也是唯一的。

定义:

特征A对训练数据集D的信息增益比

定义为其信息增益g(D,A)与训练数据集D关于特征A的经验熵H(D)之比:

计算

如上面的年龄,有3个类(青年、中年、老年),

信息增益比和信息增益的区别就是除以

决策树的构建

Build the decision tree

C4.5算法,大体相同,只不过计算的是信息增益比,而不是信息增益。我们通常也是用C4.5作为决策树的算法,其区别也就在于多了个分母。

总结

Summarization

  1. 决策树的核心思想:以树结构为基础,每个节点对某特征进行判断,进入分支,直到到达叶节点。

  2. 决策树构造的核心思想:让信息熵快速下降,从而达到最少的判断次数获得标签。

  3. 判断信息熵下降速度的方法:信息增益。

  4. 构建决策树算法:ID3(使用信息增益)、C4.5(使用使用信息增益比)。

  5. 信息增益会导致节点偏向选取取值角度的特征的问题。

    关于第5点的补充,统计学习和西瓜书都是给的这个解释,但还有另一种解释,就是信息增益导致大数问题——>概率是否准确的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端传参中带有特殊符号导致后端接收时乱码或转码失败的解决方案

文章目录 bug背景解决思路1:解决思路2解决思路3(最终解决方案)后记 bug背景 项目中采用富文本编辑器后传参引起的bug,起因如下: 数据库中存入的数据会变成这种未经转码的URL编码 解决思路1: 使用JSON方…

MyBatis的强大特性--动态SQL

目录 前言 if trim where set foreach 前言 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表…

【linux防火墙】设置开启路由转发,SNAT和DNAT转换原理及应用实操,添加自定义链归类iptables规则

目录 一、关于iptables规则的保存 1.1持久保存规则 1.2加载规则 1.3开机自动加载规则 1.4使用iptables-service软件来进行规则的保存和加载(不建议使用) 二、SNAT和DNAT的原理和应用 SNAT的原理与应用: DNAT的原理和应用: …

MySQL之 InnoDB逻辑存储结构

InnoDB逻辑存储结构 InnoDB将所有数据都存放在表空间中,表空间又由段(segment)、区(extent)、页(page)组成。InnoDB存储引擎的逻辑存储结构大致如下图。下面我们就一个个来看看。 页&#xff08…

【Qt绘图】之绘制坦克

使用绘图事件&#xff0c;绘制坦克。 效果 效果很逼真&#xff0c;想象力&#xff0c;有没有。 示例 代码像诗一样优雅&#xff0c;有没有。 包含头文件 #include <QApplication> #include <QWidget> #include <QPainter>绘制坦克类 class TankWidge…

机器人RL数据集探索

机器人RL数据集探索 相关资料汇总 相关资料汇总

hutool的bug之 DateUtil.endOfDay(DateUtil.date())

hutool 工具类DateUtil 使用时谨慎 DateUtil.endOfDay 得到的时间保存到数据时会增加一秒 首先比较下时间的long值&#xff1a; 这样就很明显的看出来&#xff0c;hutool工具类的date是毫秒位多了.999,保存到mysql 的时候&#xff0c;MySQL数据库对于毫秒大于500的数据进行…

SPI学习

SPI介绍 SPI&#xff1a;串行外设设备接口&#xff08;Serial Peripheral Interface&#xff09;&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步通信总线。 全双工&#xff1a;同一时刻&#xff0c;能同时接收数据和发送数据。 半双工&#xff1a;同一时刻&am…

树与二叉树堆:经典OJ题集

目录 查找值为x的结点&#xff1a; 思路分析&#xff1a; 单值二叉树&#xff1a; 示例&#xff1a; 思路分析&#xff1a; 相同的树&#xff1a; 示例&#xff1a; 思路分析&#xff1a; 二叉树的前序遍历&#xff1a;——使用前序遍历把结点元素放入数组中 题…

二分算法(整数二分、浮点数二分)

文章目录 二分一、整数二分&#xff08;一&#xff09;整数二分思路&#xff08;二&#xff09;整数二分算法模板1.左查找&#xff08;寻找左侧边界&#xff09;2.右查找&#xff08;寻找右侧边界&#xff09;3.总模板 &#xff08;三&#xff09;题目&#xff1a;数的范围 二、…

算法通关村第五关—Hash基础知识(青铜)

Hash基础 一、Hash的概念和基本特征 哈希(Hash)也称为散列&#xff0c;就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变换成固定长度的输出&#xff0c;这个输出值就是散列值。很多人可能想不明白&#xff0c;这里的映射到底是啥意思&#xff0c;为啥访问的时间…

【brpc学习实践】ParallelChannel的使用与并行请求

概览 ParallelChannel (有时被称为“pchan”)同时访问其包含的sub channel,并合并它们的结果。用户可通过CallMapper修改请求,通过ResponseMerger合并结果。ParallelChannel看起来就像是一个Channel: 支持同步和异步访问。 发起异步操作后可以立刻删除。 可以取消。 支持超…

Vue生命周期:组件的生命之旅

&#x1f343;引言 在Vue.js中&#xff0c;每个组件都有其独特的生命周期。这个生命周期指的是组件从创建到销毁的一系列过程。了解并正确使用Vue的生命周期钩子&#xff0c;对于优化组件性能、管理组件状态以及实现特定功能至关重要。本文将详细介绍Vue的生命周期及其各个阶段…

mysql mybatis分页查询 大数据量 非常慢

查阅了很多博客和资料&#xff0c;这篇文章以思路为准&#xff0c;详细代码不细说&#xff0c;都是非常简单的方法&#xff0c;一看就明白。具体实现稍微百度一下就能出来。仅供参考。 如题&#xff1a;单表数据已经达到4千万条数据&#xff0c;通过mybatis的分页查询效率非常低…

如何提高销售技巧,增加客户的成交率?

如何提高销售技巧&#xff0c;增加客户的成交率&#xff1f; 在如今的市场环境中&#xff0c;销售技巧的高低往往决定了你是否能够成功地打动客户的心。想要提高销售业绩&#xff0c;除了产品质量和服务的保障&#xff0c;更需要你精进销售技巧&#xff0c;从而让客户愿意为你…

一种快速设计射频功放IC流程分享

No.1设计目标 在功率放大器PA中&#xff0c;输出级以及输出匹配决定了该功放的线性度、效率等关键性能指标&#xff0c;通常被优先考虑。在这个项目中输出级功放关键性能指标如下&#xff1a; 带宽&#xff1a;12-13 GHz OP1dB>13dBm 输出级 Power gain>5dB DE_P1dB&…

TCP解帧解码、并发送有效数据到FPGA

TCP解帧解码、并发送有效数据到FPGA 工程的功能&#xff1a;使用TCP协议接收到网络调试助手发来的指令&#xff0c;将指令进行解帧&#xff0c;提取出帧头、有限数据、帧尾&#xff1b;再将有效数据发送到FPGA端的BRAM上&#xff0c;实现信息传递。 参考&#xff1a;正点原子启…

基于springboot实现的在线考试系统

一、系统架构 前端&#xff1a;html | js | css | jquery | bootstrap 后端&#xff1a;springboot | springdata-jpa 环境&#xff1a;jdk1.7 | mysql | maven 二、 代码及数据库 三、功能介绍 01. 登录页 02. 管理员端-课程管理 03. 管理员端-班级管理 04. 管理员端-老师管理…

【CAN通信】CanIf模块详细介绍

目录 1.内容简介 2.CanIf详细设计 2.1 CanIf功能简介 2.2 一些关键概念 2.3依赖的上下层模块 2.4 功能详细设计 2.4.1 Hardware object handles 2.4.2 Static L-PDUs 2.4.3 Dynamic L-PDUs 2.4.4 Dynamic Transmit L-PDUs 2.4.5 Dynamic receive L-PDUs 2.4.6Physi…

微信小程序 - 开发版、体验版、正式版共享本地缓存

问题描述 最近突然发现一个大问题啊&#xff0c;小程序切换版本环境的时候发现数据被污染了&#xff0c;瞬间就怀疑不同环境版本的小程序本地缓存是否共享的&#xff1f;&#xff01; 果然是&#xff01; 解决方案 我们可能马上想到解决方案就是&#xff1a;给每一个环境版本…