西瓜书学习——决策树形状、熵和决策树的本质

文章目录

  • 决策树形状
    • 监督学习算法
    • 分类与回归
    • 信息熵
    • 香农熵 (Shannon Entropy) - H(X)
    • 联合熵 (Joint Entropy) - H(X, Y)
    • 条件熵 (Conditional Entropy) - H(Y|X)
    • 互信息 (Mutual Information) - I(X; Y)
    • 相对熵 (Relative Entropy) / KL散度 (Kullback-Leibler Divergence) - DKL(P||Q)
    • 交叉熵 (Cross-Entropy) - H(P, Q)
    • 相互关系
    • H(Y) 和 H(Y|X)
      • H(Y)
      • H(Y|X)
      • 理解关系
  • 决策树的本质
      • 损失函数:总信息熵
      • 梯度:信息增益
      • 决策树:梯度下降路径
      • 非参数模型

决策树形状

在这里插入图片描述

内部节点:每个内部节点代表一个特征属性。在决策树构建过程中,根据某种准则(如信息增益、基尼不纯度等)选择最优的特征属性作为节点的判断标准。数据集在每个内部节点处根据特征属性的取值被分割成子集,从而实现了数据的划分。

叶子节点:每个叶子节点代表一个决策结果。在分类任务中,叶子节点通常表示一个类别标签,而在回归任务中,叶子节点表示一个连续的输出值。叶子节点的决策结果是通过训练数据集上的多数投票(分类)或平均值(回归)得到的。

监督学习算法

决策树是一种监督学习算法,因为它需要带有标签的训练数据集来构建模型。在训练过程中,决策树算法学习如何根据输入特征来预测输出标签。

分类与回归

  • 分类树:用于分类任务的决策树。每个叶子节点代表一个类别,模型的输出是预测数据点属于哪个类别。
  • 回归树:用于回归任务的决策树。每个叶子节点代表一个连续值,模型的输出是预测数据点的连续值。

无论是分类还是回归,决策树都是通过递归地划分数据集来构建的。在分类树中,通常使用信息增益、增益率或基尼不纯度来选择最优的特征属性;而在回归树中,通常使用最小二乘回归树的方法来选择最优的特征属性和分割点。

决策树的一个优点是它们易于理解,因为它们的决策过程可以通过可视化来直观展示。然而,决策树也容易过拟合,特别是当树的结构非常深时。为了避免过拟合,可以采用剪枝技术,如预剪枝和后剪枝,来限制树的复杂度。此外,决策树的一个变体是随机森林,它通过集成多个决策树来提高模型的泛化能力。

信息熵

信息熵可以理解为信息含量的度量,熵越高,信息含量越大,不确定性也越大。对于离散随机变量,其熵可以通过以下公式计算:

H ( X ) = − ∑ i = 1 n p ( x i ) log ⁡ b p ( x i ) H(X) = -\sum_{i=1}^{n} p(x_i) \log_b p(x_i) H(X)=i=1np(xi)logbp(xi)

其中, H ( X ) H(X) H(X) 是随机变量 X X X 的熵, p ( x i ) p(x_i) p(xi) 是随机变量 X X X 取值为 x i x_i xi 的概率, n n n是随机变量 X X X 的所有可能取值的个数, b b b 是计算熵时使用的底数,通常取 2、e或 10,分别对应于以比特、纳特或十特为单位的熵。

假设我们有一个公平的六面骰子。我们想要知道掷骰子时得到的信息量。每个面出现的概率都是 1/6,因此我们可以计算这个随机事件的熵。

首先,我们选择以2为底数(这样可以计算以比特为单位的熵),然后应用熵的公式:

H ( X ) = − ∑ i = 1 6 p ( x i ) log ⁡ 2 p ( x i ) H(X) = -\sum_{i=1}^{6} p(x_i) \log_2 p(x_i) H(X)=i=16p(xi)log2p(xi)

其中 p ( x i ) = 1 / 6 p(x_i) = 1/6 p(xi)=1/6 对于所有的 i i i(因为每个面出现的概率是相等的)。
H ( X ) = − 6 × 1 6 log ⁡ 2 1 6 H ( X ) = − log ⁡ 2 1 6 H ( X ) = log ⁡ 2 6 H ( X ) ≈ 2.585 H(X) = -6 \times \frac{1}{6} \log_2 \frac{1}{6} \\ H(X) = -\log_2 \frac{1}{6} \\ H(X) = \log_2 6 \\ H(X) \approx 2.585 H(X)=6×61log261H(X)=log261H(X)=log26H(X)2.585

所以,一个公平的六面骰子的信息熵大约是 2.585 比特。这意味着每次掷骰子时,你得到的信息量大约是 2.585 比特。

现在,如果我们考虑一个不公平的骰子,其中某个面出现的概率更高,那么这个面的信息量就会减少(因为你已经预期它更可能出现),从而降低整个系统的熵。相反,如果所有面出现的概率相等,熵就会更高,因为每个结果都是同样不可预测的。

香农熵 (Shannon Entropy) - H(X)

香农熵是衡量单个随机变量不确定性的度量。对于离散随机变量 X X X,其香农熵定义为:

H ( X ) = − ∑ i p ( x i ) log ⁡ b p ( x i ) H(X) = -\sum_{i} p(x_i) \log_b p(x_i) H(X)=ip(xi)logbp(xi)

其中, p ( x i ) p(x_i) p(xi)是随机变量 X 取值为 x i x_i xi的概率, b b b是底数(通常取 2、e 或 10)。

联合熵 (Joint Entropy) - H(X, Y)

联合熵是衡量两个或多个随机变量共同发生的不确定性的度量。对于两个随机变量 X X X Y Y Y,其联合熵定义为:

H ( X , Y ) = − ∑ x , y p ( x , y ) log ⁡ b p ( x , y ) H(X, Y) = -\sum_{x, y} p(x, y) \log_b p(x, y) H(X,Y)=x,yp(x,y)logbp(x,y)

其中, p ( x , y ) p(x, y) p(x,y) X X X Y Y Y 同时取值为 x x x y y y的联合概率。

条件熵 (Conditional Entropy) - H(Y|X)

条件熵是在已知一个随机变量的情况下,另一个随机变量的不确定性的度量。对于随机变量 Y Y Y 在已知 X X X 的情况下的条件熵定义为:

H ( Y ∣ X ) = ∑ x p ( x ) H ( Y ∣ X = x ) H(Y|X) = \sum_{x} p(x) H(Y|X=x) H(YX)=xp(x)H(YX=x)

其中, H ( Y ∣ X = x ) H(Y|X=x) H(YX=x)是在 X X X 取值为 x x x 的条件下 Y Y Y的条件熵。

互信息 (Mutual Information) - I(X; Y)

互信息是衡量两个随机变量之间相互依赖性的度量。互信息定义为:

I ( X ; Y ) = H ( Y ) − H ( Y ∣ X ) I(X; Y) = H(Y) - H(Y|X) I(X;Y)=H(Y)H(YX)

互信息也可以表示为联合熵和单独熵的差:

I ( X ; Y ) = H ( X ) + H ( Y ) − H ( X , Y ) I(X; Y) = H(X) + H(Y) - H(X, Y) I(X;Y)=H(X)+H(Y)H(X,Y)

相对熵 (Relative Entropy) / KL散度 (Kullback-Leibler Divergence) - DKL(P||Q)

相对熵,也称为KL散度,是衡量两个概率分布之间差异的度量。对于两个概率分布 P P P Q Q Q,KL散度定义为:

D K L ( P ∣ ∣ Q ) = ∑ i P ( i ) log ⁡ P ( i ) Q ( i ) D_{KL}(P||Q) = \sum_{i} P(i) \log \frac{P(i)}{Q(i)} DKL(P∣∣Q)=iP(i)logQ(i)P(i)

KL散度是非负的,并且不是对称的,即 D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q) \neq D_{KL}(Q||P) DKL(P∣∣Q)=DKL(Q∣∣P)

交叉熵 (Cross-Entropy) - H(P, Q)

交叉熵是衡量两个概率分布之间差异的另一种度量。对于概率分布 P P P Q Q Q,交叉熵定义为:

H ( P , Q ) = − ∑ i P ( i ) log ⁡ Q ( i ) H(P, Q) = -\sum_{i} P(i) \log Q(i) H(P,Q)=iP(i)logQ(i)

交叉熵可以用来衡量 Q Q Q 分布与 P P P 分布之间的差异。

相互关系

  • 互信息 I ( X ; Y ) I(X; Y) I(X;Y) 可以看作是 X X X Y Y Y 共享的信息量,或者是在知道 X X X 的值后 Y Y Y 的不确定性的减少量。

  • 条件熵 H ( Y ∣ X ) H(Y|X) H(YX) 可以通过香农熵 H ( Y ) H(Y) H(Y) 减去互信息 I ( X ; Y ) I(X; Y) I(X;Y) 来计算。

  • KL散度 D K L ( P ∣ ∣ Q ) DKL(P||Q) DKL(P∣∣Q) 可以通过交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 减去 P P P 的熵 H ( P ) H(P) H(P) 来计算。

这些熵和散度在机器学习、数据科学和通信理论中有着广泛的应用,用于量化不确定性、优化模型、评估模型性能以及比较概率分布。

H(Y) 和 H(Y|X)

H(Y)

H ( Y ) H(Y) H(Y) 是随机变量 Y Y Y 的无条件熵,它衡量的是 Y Y Y 本身的不确定性。换句话说, H ( Y ) H(Y) H(Y) 告诉我们在没有任何其他信息的情况下,随机变量 Y Y Y 的取值有多么不可预测。无条件熵越大, Y Y Y 的取值就越分散,我们也就越难准确预测 Y 的具体取值。

H ( Y ) H(Y) H(Y) 的计算公式是:

H ( Y ) = − ∑ y ∈ Y p ( y ) log ⁡ b p ( y ) H(Y) = -\sum_{y \in Y} p(y) \log_b p(y) H(Y)=yYp(y)logbp(y)

其中, p ( y ) p(y) p(y) 是随机变量 Y Y Y 取值为 y y y 的概率, b b b 是计算熵时使用的底数(通常取 2、e 或 10)。

H(Y|X)

H ( Y ∣ X ) H(Y|X) H(YX) 是在已知随机变量 X X X 的取值的情况下,随机变量 Y Y Y 的条件熵。它衡量的是在已经知道 X X X 的信息后, Y Y Y 的不确定性还有多少。如果 X X X Y Y Y 完全独立,那么知道 X X X 的取值不会对 Y Y Y 的不确定性产生影响, H ( Y ∣ X ) H(Y|X) H(YX) 将等于 H ( Y ) H(Y) H(Y)。如果 X X X Y Y Y 完全相关,那么一旦知道了 X X X 的取值, Y Y Y 的取值也就确定了,此时 H ( Y ∣ X ) H(Y|X) H(YX) 将为 0。

H ( Y ∣ X ) H(Y|X) H(YX) 的计算公式是:

H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) H(Y|X) = \sum_{x \in X} p(x) H(Y|X=x) H(YX)=xXp(x)H(YX=x)

其中, p ( x ) p(x) p(x) 是随机变量 X X X 取值为 x x x 的概率, H ( Y ∣ X = x ) H(Y|X=x) H(YX=x) 是在 X X X 取值为 x x x 的条件下 Y Y Y 的条件熵,其计算公式为:

H ( Y ∣ X = x ) = − ∑ y ∈ Y p ( y ∣ x ) log ⁡ b p ( y ∣ x ) H(Y|X=x) = -\sum_{y \in Y} p(y|x) \log_b p(y|x) H(YX=x)=yYp(yx)logbp(yx)

其中, p ( y ∣ x ) p(y|x) p(yx) 是在 X X X 取值为 x x x 的条件下, Y Y Y 取值为 y y y 的条件概率。

理解关系

H ( Y ) H(Y) H(Y) H ( Y ∣ X ) H(Y|X) H(YX) 之间的关系可以通过互信息 I ( X ; Y ) I(X;Y) I(X;Y) 来理解,互信息衡量的是知道 X X X 的值后 Y Y Y 的不确定性的减少量。互信息 I ( X ; Y ) I(X;Y) I(X;Y) 可以表示为:

I ( X ; Y ) = H ( Y ) − H ( Y ∣ X ) I(X;Y) = H(Y) - H(Y|X) I(X;Y)=H(Y)H(YX)

这也可以写作:

I ( X ; Y ) = H ( Y ) − H ( Y ∣ X ) = H ( X ) + H ( Y ) − H ( X , Y ) I(X;Y) = H(Y) - H(Y|X) = H(X) + H(Y) - H(X,Y) I(X;Y)=H(Y)H(YX)=H(X)+H(Y)H(X,Y)

互信息 I ( X ; Y ) I(X;Y) I(X;Y) 描述了知道 X X X 的值后 Y Y Y 的不确定性的减少量。如果 X X X Y Y Y 完全独立,那么 I ( X ; Y ) = 0 ; I(X;Y) = 0; I(X;Y)=0如果 X X X Y Y Y 完全相关,那么 I ( X ; Y ) = H ( Y ) I(X;Y) = H(Y) I(X;Y)=H(Y)

决策树的本质

损失函数:总信息熵

决策树的构建是一个递归的过程,每次选择最优的特征来分割数据集,直到满足停止条件。在这个过程中,我们需要一个准则来衡量分割的好坏,这个准则就是损失函数。在决策树中,常用的损失函数是总信息熵(Overall Information Entropy),它衡量的是数据集的不确定性。我们希望每次分割都能最大程度地减少数据集的不确定性,从而提高模型的预测准确性。

信息熵是由香农提出的,用于衡量一个随机变量的不确定性。在决策树中,我们通常使用信息熵来衡量数据集的不确定性。数据集的信息熵定义为:

H ( D ) = − ∑ i = 1 n p i log ⁡ 2 p i H(D) = -\sum_{i=1}^{n} p_i \log_2 p_i H(D)=i=1npilog2pi

其中, p i p_i pi 是数据集中第 i i i 类样本的比例。信息熵越大,数据集的不确定性越高。

梯度:信息增益

在机器学习中,梯度是损失函数的导数,它指向损失函数增加最快的方向。在决策树中,我们没有显式的梯度概念,但可以类比地引入“梯度”的概念,即信息增益(Information Gain),它衡量的是分割前后数据集信息熵的减少量。我们希望每次分割都能获得最大的信息增益,从而最大程度地减少数据集的不确定性。

信息增益的计算公式为:

I G ( D , A ) = H ( D ) − ∑ j = 1 m ∣ D j ∣ ∣ D ∣ H ( D j ) IG(D, A) = H(D) - \sum_{j=1}^{m} \frac{|D_j|}{|D|} H(D_j) IG(D,A)=H(D)j=1mDDjH(Dj)

其中, H ( D ) H(D) H(D)是数据集 D的信息熵, D j D_j Dj是数据集 D D D 在特征 A A A 的第 j j j 个取值下的子集, ∣ D j ∣ |D_j| Dj是子集 D j D_j Dj的样本数, ∣ D ∣ |D| D是数据集 D D D的样本数。

决策树:梯度下降路径

在构建决策树的过程中,我们每次选择最优的特征来分割数据集,这可以类比于梯度下降算法中的迭代优化过程。在梯度下降中,我们沿着梯度的反方向更新参数,以减小损失函数的值。

在决策树中,我们选择信息增益最大的特征进行分割,这可以看作是在沿着信息熵减少的方向优化,即“梯度下降路径”。

非参数模型

决策树是一种非参数模型,这意味着它不依赖于数据的分布假设,可以捕捉数据中的非线性关系。决策树的灵活性使得它适用于多种数据类型和任务,但它也容易过拟合,因此需要剪枝等技术来提高模型的泛化能力。

总结来说,决策树的本质是一种基于总信息熵的损失函数,通过信息增益来选择最优特征进行分割的梯度下降路径,它是一种灵活的非参数模型,可以捕捉数据中的复杂关系。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序使用阿里巴巴矢量图标库

一、登录官网 www.iconfont.cn 二、在搜索框中搜索想要的图标,将鼠标移动到图标上会看到三个标记 可以使用下载,直接使用: 可以使用css文件使用: 首先点击购物车样式的选项,而后点击下图位置: 点击自己创…

【python笔记】datafram的时间动态可视化 pyecharts地图

import pandas as pd# 假设DataFrame是这样的: df pd.DataFrame({ year: [2014, 2015, 2016, 2014, 2015, 2016, 2014, 2015, 2016], province: [广东省, 广东省, 河南省, 湖南省, 北京市, 北京市, 上海市, 新疆维吾尔自治区, 上海市], values: [100, 150, 75…

tomcat 配置支持 ssl 附效果图

1、修改tomcat配置文件server.xml: vim ./conf/server.xml 把配置文件&#xff1a; <Connector port"8088" Server" " protocol"HTTP/1.1"connectionTimeout"20000"redirectPort"8443" URIEncoding"UTF-8" …

可平滑替代FTP的FTP替代解决方案,具有哪些强大功能?

FTP是一种广泛使用的文件传输协议&#xff0c;主要用于在网络上的计算机之间传输文件。具有以下特点&#xff1a; 1.简单易用&#xff1a;FTP协议相对简单&#xff0c;易于设置和使用&#xff0c;许多操作系统和应用程序都内置了对FTP的支持。 2.广泛的客户端支持&#xff1a…

Vue生命周期都有哪些?

定义 Vue的生命周期就是实例从创建到销毁的一个过程&#xff0c;即从创建、初始化数据、编译模板、挂载Dom($el)->渲染、更新->渲染&#xff0c;卸载等一系列的过程。el是挂载点如<div id"app"></div>。 Vue的生命周期分为八个阶段 1.beforeCreate…

Spring Data JPA数据批量插入、批量更新真的用对了吗

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 前言 在前两篇文章已经介绍过&#xff0c;在使用Spring Data JPA时&#xff0c;DAO层的Respository通过继承J…

【基础算法总结】双指针算法二

双指针 1.有效三角形的个数2.和为S的两个数字3. 三数之和4.四数之和 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.有效三角形的个数 题目…

react实现时钟翻牌效果

需求&#xff1a;随着数字的变动要求有时钟翻动动效 问题&#xff1a;只在加载时有动效 解决方案&#xff1a;通过判断数字改变&#xff08;这里通过新旧数值变动来判断&#xff0c;不贴代码啦&#xff09;&#xff0c;每次变动的时候手动把animationIterationCount设置为inf…

Android --- 网络请求

通常在 Android 中进行网络连接一般使用 Scoket 和HTTP&#xff0c;HTTP 请求方式比 Scoket 多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式&#xff08;系统自带的&#xff09;。但是在 Android 5.0 的时候 Google 就不推荐使用 HttpClient…

Python自学篇3-PyCharm开发工具下载、安装及应用

一、Python开发工具 自学篇1中讲到了安装Python之后出现的几个应用程序&#xff0c;其中IDLE、Python.exe都可以用来编写python程序&#xff0c;也可以进行调试&#xff1b;但是比较基础&#xff0c;比较原始&#xff0c;调试不方便&#xff0c;界面也不友好&#xff0c;需要更…

笔记本电脑耗电和发热比较厉害怎么处理

工作中会遇到有同事反馈笔记本电脑耗电和发热比较厉害&#xff0c;主要检查以下几个地方 1、CPU频率 很多人觉得是cpu使用率高就代表电脑跑得快&#xff0c;发热量就大&#xff0c;其实不是的&#xff0c;主要是看的cpu频率&#xff0c;频率越高&#xff0c;电脑发热量越大。如…

Visual Studio中怎样更改Nuget程序包源

场景 Visual Studio 2019 在使用NuGet添加依赖包时&#xff0c;在预览中搜索不到程序包。 排查下NuGet的程序包源为本地。 将程序包源修改下。 实现 在解决方案上右击选择管理解决方案中的NuGet程序包(在 Visual Studio 中打开“工具”>“选项”>“NuGet 包管理器”…

idea上传项目到gitee(码云)

1、打开码云&#xff0c;新建仓库 2、创建 3、这就是创建成功的页面 4、复制仓库地址&#xff0c;后面需要用到 2、打开我们的项目&#xff1a;例如我现在的项目 1、idea创建git仓库 2、选择我们项目文件夹的目录 3、查看文件是否变色&#xff0c;变色表示成功了 4、添加到缓…

STM32的GPIO输入和输出函数详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. GPIO模式 2. GPIO输出 2.1 RCC 2.2 GPIO 3. 代码示例 3.1 RCC时钟 3.2 GPIO初始化 3.3 GPIO输出函数 3.4 推挽输出和开漏输出 4. GPIO输入 4.1 输入模式 4.2 数据读取函数 5. C语言语法 1…

为什么很多企业都使用OV SSL证书

我们要了解什么是SSL OV证书 SSL OV证书&#xff0c;即组织验证型SSL证书&#xff0c;它要求证书颁发机构对申请证书的组织进行身份验证&#xff0c;确认组织的真实性后&#xff0c;才会发放证书。这种验证方式提高了安全性&#xff0c;因为它确保了证书背后的实体是真实存在的…

C语言(操作符)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

基于Springboot的点餐平台

基于SpringbootVue的点餐平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页展示 菜品信息 菜品资讯 购物车 后台登录 用户管理 菜品分类管理 菜品信息管理 …

【Linux】dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found

[30116] Error loading Python lib /tmp/_MEIlvdUu6/libpython3.8.so.1.0: dlopen: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29 not found (required by /tmp/_MEIlvdUu6/libpython3.8.so.1.0)1 cd到指定路径 cd /usr/local 2 下载 wget http://ftp.gnu.org/gnu/gl…

NXP i.MX8系列平台开发讲解 - 3.10 Linux PCIe资源分配与访问(二)

专栏文章目录传送门&#xff1a;返回专栏目录 目录 1. PCIe BFD 2. PCIe 配置空间 2.1 PCIe 配置空间访问 PCIe I/O访问方法 PCIe MMIO访问方法 3. PCIe BAR相关 4. PCIe Capbility 5. PCIe 操作 本文将重点讲解PCIe的资源访问相关内容&#xff0c;对于PCIe资源访问是从…

设计不外流,保护创意的同时锁住图纸安全!

在设计行业中&#xff0c;图纸和创意文稿的安全至关重要&#xff0c;因为它们体现了企业的创新能力和核心竞争力。华企盾DSC数据防泄密系统提供了一系列功能&#xff0c;可以有效地保护这些珍贵的设计和文档不被外泄。以下是如何利用华企盾DSC系统保障设计图纸安全的关键措施&a…