机器学习理论公式推导及原理—决策树

news2024/11/20 2:29:41

机器学习公式推导及原理—决策树

根据西瓜书中的公式与内容来进行推导和实现

算法原理

从逻辑角度,一堆if else语句的组合从几何角度,根据某种准则划分特征空间。最终目的:将样本越分越“纯。

信息熵的概念

自信息:是指随机变量所含的信息。在这里插入图片描述
其中x指的是随机变量,每一个随机变量都会对应一个概率值。当b = 2时单位为bit,当b = e时单位为nat。
信息熵:信息熵(自信息的期望):度量随机变量X的不确定性,信息熵越大越不确定
在这里插入图片描述
计算信息熵时约定:若p(x)=0,则p(x)logb p(x)=0。当X的某个取值的概率为1
时信息熵最小、(最确定),其值为0;当X的各个取值的概率均等时信息熵最大(最不确
定),其值为logb「X|,其中|X|表示X可能取值的个数。

将样本类别标记y视作随机变量,各个类别在样本集合D中的占比pk(k=1,2,.,|y|)
视作各个类别取值的概率,则样本集合D(随机变量y)的信息熵(底数b取2)为

在这里插入图片描述

此时信息熵所代表的不确定性可以转化理解为集合内样本的纯度

条件熵的概念

条件熵(Y的信息熵关于概率分布X的期望):在已知X后Y的不确定性

在这里插入图片描述
从单个属性(特征)α的角度来看,假设其可能取值为{α2,α2,…,αv},D表示属性a取值为α∈{α,α2,…,αv}的样本集合,|Dv|/D表示占比,那么在已知属性α的取值后,样本集合D的条件熵为:
在这里插入图片描述

ID3决策树

在提出ID3决策树之前首先要引入信息增益的概念:

信息增益:在已知属性(特征)a的取值后y的不确定性减少的量,也即纯度的提升

在这里插入图片描述
ID3决策树:就是以信息增益为准则来划分属性的决策树
在这里插入图片描述

C4.5决策树

信息增益准则对可能取值数目较多的属性有所偏好(例如“编号"这个较为极端的例子,不过其本质原因不是取值数目过多,而是每个取值里面所包含的样本量太少),为减少这种偏好可能带来的不利影响,C4.5决策树选择使用"增益率"代替“信息增益”,增益率定义:在这里插入图片描述
其中:
在这里插入图片描述

称为属性α的“固有值",α的可能取值个数V越大,通常其固有值IV(α)也越大。但是增益率对可能取值数自较少的属性有所偏好(缺点)

本质上是对信息增益通过一项来进行平衡但还是通过信息熵来进行衡量
因此,C4.5决策树并未完全使用"增益率"代替“信息增益",而是采用一种启发式的方法:先选出信息增益高于平均水平的属性,然后再从中选择增益率最高的。

CART决策树

之前的决策树的生成本质上都是用信息熵作为衡量的标准,而CART决策树是采用另一种方式。

基尼值与基尼指数

基尼值:从样本集合D中随机抽取两个样本,其类别标记不一致的概率。因此,基尼值越小,碰到异类的概率就越小,纯度自然就越高。
在这里插入图片描述
属性a的基尼指数(类比信息熵和条件熵):
在这里插入图片描述
CART决策树:选择基尼系数最小的属性作为最优划分属性
在这里插入图片描述

实际构造算法

  • 首先,对每个属性α的每个可能取值,将数据集D分为α = v和α ≠v两部分来计算基尼指数,即

在这里插入图片描述
使得使用该算法构造出来的树本质上是一棵二叉树

  • 然后,选择基尼指数最小的属性及其对应取值作为最优划分属性和最优划分点;
  • 最后,重复以上两步,直至满足停止条件。

最终完成CART决策树的构造。

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

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

相关文章

嵌入式学习55-ARM4(ADC和I²C)

1、什么是ADC,模拟量和数字量有什么特点? ADC: …

Review on Psychological Stress Detection Using Biosignals 利用生物信号检测心理压力综述

https://ieeexplore.ieee.org/document/8758154 问题背景 和压力相关的生物信号包括: 生理:EEG、心电图、EDA、肌电图物理测量:呼吸频率、言语、皮肤温度、瞳孔大小、眼睛活动 压力的维度:心理、行为和生理 压力体验与反馈 下…

【VI/VIM】基本操作备忘录

简介 新建/打开文件 工作模式 常用命令 移动命令 文本选中 撤销、删除 复制粘贴 替换 缩排 查找 替换 插入 分屏 练习

API请求报错 Required request body is missing问题解决

背景 在进行调用的时候,加载方法,提示以下错误 错误信息如下: {"code": 10001,"msg": "Required request body is missing: XXX","data": null,"extra": null }Required request body…

【热门话题】探索与心得:深入体验Microsoft Edge浏览器

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 探索与心得:深入体验Microsoft Edge浏览器一、Edge浏览器概述1.1 发…

从零开始搭建网站(第二天)

今天把之前的htmlcssjs项目迁移过来,直接使用tspiniavue3vite组合,搭建过程可以看从零开始搭建性能完备的网站-思路过程(1)_自己架设一个芯参数网站-CSDN博客。之后安装一下volar扩展。迁移过来使用Vue重构时发现之前使用的左右两…

C++从入门到精通——内部类和匿名类

内部类和匿名类 前言一、内部类的概念示例 二、内部类的特性三、匿名类的概念示例 四、匿名类的特性总结 前言 内部类是定义在另一个类内部的类,它可以访问外部类的私有成员。匿名类是没有名字的类,通常用于一次性使用的简单对象创建,可以直…

ubuntu20.04安装+ros-noetic安装+内网穿透frp

刷机后的系统安装 ubuntu20.04安装安装ros-noetic安装各种必要的插件安装vscode内网穿透连接实验室主机配置frpc和frps文件运行完成自动化部署免密登录linux的免密登录windows上的免密登录 内网穿透的参考链接:如何优雅地访问远程主机?SSH与frp内网穿透配…

【刷题篇】回溯算法(五)

文章目录 1、N皇后2、有效的数独3、解数独4、单词搜索5、黄金矿工 1、N皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你…

Android自带模拟器如何获得ROOT权限

如果在模拟器中不能切换到root权限,很可能是镜像使用的不对。 一.选择镜像标准: 1.运行在PC端选X86_64镜像,才能流畅运行 2.不带google api的镜像 二.步骤 在虚拟机管理器中新建AVD,并下载符合要求的镜像文件 三.验证

【多线程学习】深入探究阻塞队列与生产者消费者模型和线程池常见面试题

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

中医药性笔记

目录 当归黄芪党参白术甘草茯苓半夏陈皮 当归 补血。 当归,腾讯医典 黄芪 土金之药。 补中气的同时补肺气。益卫固表、利水消肿、 腾讯医典黄芪 党参 土金之药。健脾益肺,生津养血。 党参补气之力弱于人参、用于脾肺气虚的轻症。 党参、腾讯…

全网最新的迅雷网盘拉新流程一览,碎片时间就能做的副业

有没有想做副业,又担心休息时间不够的朋友?有没有既想增加收入又不希望工作太累的朋友?如果你也有以上顾虑,不用担心,这个近几年的热门副业——迅雷网盘拉新项目就非常适合你!网盘拉新是平台为了扩大用户群…

【python】一文搞懂序列、列表、元组、集合、字典区别及其应用

【python】一文搞懂序列、列表、元组、集合、字典区别及其应用 【先赞后看养成习惯】求点赞+关注+收藏😀 序列介绍 1、定义:序列(sequence)是一种可迭代的、元素有序的容器类型的数据。 2、序列包括列表(list)、字符串(str)、元组(tuple)和字节序列(bytes)等。 …

Liunx挂载硬件设备

一、mount命令(用于挂载文件系统) (一)语法格式:mount 参数 源设备路径 目的路径 (二)参数 1、-t:指定挂载的文件系统 (1)iso9660:光盘或光盘…

[vapkg]解决vcpkg下载缓慢的问题

在我们执行vcpkg install some_project之后,我们经常会遇见界面停留在Downloading某个依赖上面,这时我们可以直接把那个下载链接复制下来,然后在外面用浏览器或别的下载工具自己下载,接着,去\vcpkg\downloads\temp这个…

iOS开发 刻度盘 仪表盘,圆点按钮滑动控制,渐变色

最近项目需要,想做一个渐变色的刻度盘,圆形按钮滑动控制,所以 用oc写了一下,代码没附上,想看代码可以私信联系,效果如下图。 部分代码 self.drawCenter CGPointMake(self.frame.size.width / 2.0, self.f…

[大模型]TransNormerLLM-7B 接入 LangChain 搭建知识库助手

TransNormerLLM-7B 接入 LangChain 搭建知识库助手 环境准备 在 autodl 平台中租赁一个 3090/4090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的 JupyterLab,并且打开其…

Spark Standalone模式部署

准备至少2台虚拟机,装好linux系统,我装的是Ubuntu20.04。 1.修改主机名(每台) 1)修改/etc/hostsname内容,主节点改为master,子节点改为slaver1 sudo vim /etc/hostname 2)在/etc/…

rabbitmq 使用SAC队列实现顺序消息

rabbitmq 使用SAC队列实现顺序消息 前提 SAC: single active consumer, 是指如果有多个实例,只允许其中一个实例消费,其他实例为空闲 目的 实现消息顺序消费,操作: 创建4个SAC队列,消息的路由key 取队列个数模,这…