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

ops/2024/9/24 10:21:16/

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

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

算法原理

从逻辑角度,一堆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.ppmy.cn/ops/17448.html

相关文章

AI大模型探索之路-训练篇1:大语言模型微调基础认知

文章目录 前言一、微调技术概述二、微调的必要性三、大模型的微调方法四、微调过程中的技术细节五、微调后的模型评估与应用总结 前言 在人工智能的广阔研究领域内,大型预训练语言模型(Large Language Models, LLMs)已经成为推动技术革新的关…

只需几步,即可享有笔记小程序

本示例是一个简单的外卖查看店铺点菜的外卖微信小程序,小程序后端服务使用了MemFire Cloud,其中使用到的MemFire Cloud功能包括: 其中使用到的MemFire Cloud功能包括: 云数据库:存储外卖微信小程序所有数据表的信息。…

1分钟掌握 Python 函数参数

任何编程语言函数都是非常重要的一部分,而在进行函数调用时,了解函数的参数传递方式是非常有必要的。Python中支持哪些传参方式呢? Python中的传参方式是比较灵活的,主要包括以下六种: 按照位置传参按照关键字传参默…

Python学习之旅高级篇:Web开发之旅(一)—— Flask和Django框架概览

在Python高级篇的Web开发之旅中,我们将深入探索如何使用Python构建动态网站和Web应用程序。本系列的首先,我们将从Web框架的基础知识开始,逐步过渡到Flask和Django这两个流行的Python Web框架的详细介绍。 Web框架简介 Web框架的作用和重要…

MySQL InnoDB事务隔离级别与锁机制深入解析

引言 在当今的数据库系统中,事务管理是确保数据一致性和完整性的关键。事务是数据库操作的基本单元,它将一系列的数据库操作组合成一个逻辑工作单元,要么全部成功执行,要么全部失败回滚,这就是所谓的ACID属性&#xf…

《Python数据分析从入门到精通》PDF版,30天助力成为数据分析高手!

一、前言 Python数据分析在当前数字化时代中扮演着至关重要的角色。随着大数据、人工智能和机器学习等领域的快速发展,数据分析技能已成为各行业不可或缺的能力。Python作为一种强大的编程语言,其简洁易懂的语法、丰富的库和强大的扩展性,使…

RedisTemplate 与StringRedisTemplate区别

1、可视化工具看到的数据不同 StringRedisTemplate显示的是原文,即存入什么就显示什么;采用的是String的序列化策略。 RedisTemplate显示的是字节数组,即存入数据时,先序列化为字节数组,再存入Redis数据库。采用的是…

docker简介

Docker 是一种开源的容器化平台,用于打包、发布和运行应用程序及其依赖项。它基于 Linux 内核的 cgroups 和 namespaces 功能,实现了轻量级的虚拟化技术,使得开发人员能够在一个统一的环境中开发、测试和部署应用程序,同时也简化了…