【决策树】简单介绍+个人理解(二)

news2024/10/2 20:30:21

1、ID3(Iterative Dichotomizer)

  • ID3是Quinlan于1986年提出的, 它的提出开创了决策树算 法的先河, 而且是国际上最早的决策树方法, 在该算法中, 引入了信息论中熵的概念, 利用分割前后的熵来计算信息 增益, 作为判别能力的度量。
  • ID3 算法的核心是在决策树各个结点上应用信息增益准则选择特征, 递归地 构建决策树. 具体方法是: 从根结点 (root node) 开始, 对结点计算所有可能的 特征的信息增益, 选择信息增益最大的特征作为结点的特征, 由该特征的不同取 值建立子结点; 再对子结点递归地调用以上方法, 构建决策树; 直到所有特征的 信息增益均很小或没有特征可以选择为止. 最后得到一个决策树. ID3 相当于用 极大似然法进行概率模型的选择.

ID3算法
输入: 训练数据集 D D D, 特征集 A A A, 阈值 ε \varepsilon ε;
输出: 决策树 T T T.
(1) 若 D D D 中所有实例属于同一类 C k C_k Ck, 则 T T T 为单结点树, 并将类 C k C_k Ck 作为该结 点的类标记, 返回 T T T;
(2) 若 A = ∅ A=\varnothing A=, 则 T T T 为单结点树, 并将 D D D 中实例数最大的类 C k C_k Ck 作为该结点的 类标记, 返回 T T T;
(3)否则, 计算 A A A 中各特征对 D D D 的信息增益, 选择信息增益最大 的特征 A g A_g Ag;
(4) 如果 A g A_g Ag 的信息增益小于阈值 ε \varepsilon ε, 则置 T T T 为单结点树, 并将 D D D 中实例数最 大的类 C k C_k Ck 作为该结点的类标记, 返回 T T T;
(5) 否则, 对 A g A_g Ag 的每一可能值 a i a_i ai, 依 A g = a i A_g=a_i Ag=ai D D D 分割为若干非空子集 D i D_i Di, 将 D i D_i Di 中实例数最大的类作为标记, 构建子结点, 由结点及其子结点构成树 T T T, 返回 T T T;
(6) 对第 i i i 个子结点, 以 D i D_i Di 为训练集, 以 A − { A g } A-\left\{A_g\right\} A{Ag} 为特征集, 递归地调用 步 (1) ~步 (5), 得到子树 T i T_i Ti, 返回 T i T_i Ti.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、C4.5

  • ID3算法使用信息增益( Info Gain) Info ⁡ ( D ) = − ∑ i = 1 m p i log ⁡ 2 ( p i ) Info ⁡ A ( D ) = ∑ j = 1 v ∣ D j ∣ ∣ D ∣ × Info ⁡ ( D j ) Gain ⁡ ( A ) = Info ⁡ ( D ) − Info ⁡ A ( D ) \begin{gathered} \operatorname{Info}(D)=-\sum_{i=1}^m p_i \log _2\left(p_i\right) \quad \operatorname{Info}_A(D)=\sum_{j=1}^v \frac{\left|D_j\right|}{|D|} \times \operatorname{Info}\left(D_j\right) \\ \operatorname{Gain}(A)=\operatorname{Info}(D)-\operatorname{Info}_A(D) \end{gathered} Info(D)=i=1mpilog2(pi)InfoA(D)=j=1vDDj×Info(Dj)Gain(A)=Info(D)InfoA(D)
  • 偏向于具有大量值的属性。在训练集中, 某个属性所取的不同值的个数越多, 那么越有可能拿它来作为分裂属性。
  • C4.5中使用信息增益率( Gain ratio)  SplitInfo  A ( D ) = − ∑ j = 1 v ∣ D j ∣ ∣ D ∣ × log ⁡ 2 ( ∣ D j ∣ ∣ D ∣ ) GainRatio ⁡ ( A ) = Gain ⁡ ( A ) SplitInfo ⁡ ( A ) \begin{gathered} \text { SplitInfo }_A(D)=-\sum_{j=1}^v \frac{\left|D_j\right|}{|D|} \times \log _2\left(\frac{\left|D_j\right|}{|D|}\right) \\ \operatorname{GainRatio}(A)=\frac{\operatorname{Gain}(A)}{\operatorname{SplitInfo}(A)} \end{gathered}  SplitInfo A(D)=j=1vDDj×log2(DDj)GainRatio(A)=SplitInfo(A)Gain(A)
  • Info-Gain在面对类别较少的离散数据时效果较好, 之前的 outlook, temperature等数据都是离散数据, 而且每个类别都 有一定数量的样本, 这种情况下使用ID3与C4.5的区别并不大。
  • 但如果面对连续的数据(如体重、身高、年龄、距离等), 或者每列数据没有明显的类别之分 (最极端的例子的该列所有数据都独一无一), 在这种情况下, ID3算法倾向于把每个数据分成一类(将每一个样本都分到一个节点当中去), 程序会倾向于选择这种划分, 这样划分效果极差。
  • 为了解决这个问题, 引入了信息增益率 (Gain-ratio) 的概念, 减轻了划分行为本身的影响。
  • 对于取值多的属性, 尤其一些 连续型数值 , 比如两条地理数据的距离 属性, 这个单独的属性就可以划分所有的样本, 使得所有分支下的样本集合都是 “纯的” (最极端的情况是每个叶子节点只有一个样本)
  • 对于ID (就比如是姓名), 用信息增益划分, 每一个名字都是一个类
  • 所以如果是取值更多的属性, 更容易使得数据更“纯”(尤其是连续型数值), 其信息增益更大, 决策树会首先挑选这个属性作为树的顶点,结果训练出来的形状是一棵庞大且深度很浅的树, 这样的划分是极为不合理的。
  • C4. 5使用了信息增益率, 在信息增益的基础上除了一项 split information, 来惩罚值更多的属性
  • 信息增益率引入了分裂信息, 取值数目多的属性分裂信息也会变大, 将增益除以分裂信息, 再加上一些额外操作, 可以有效控制信息增益过大的问题。

3、CART(Classification and Regression Trees)

  • 分类与回归树 (classification and regression tree, CART) 模型由 Breiman 等人在 1984 年提出, 是应用广泛的决策树学习方法. CART 同样由特征选择、树的生成及剪枝组成, 既可以用于分类也可以用于回归. 以下将用于分类与回归的 树统称为决策树
  • CART 假设决策树是二叉树, 内部结点特征的取值为 “是” 和 “否”, 左分支是取值为 “是” 的分支, 右分支是取值为 “否” 的分支
    (1) 决策树生成: 基于训练数据集生成决策树, 生成的决策树要尽量大
    (2) 决策树剪枝: 用验证数据集对已生成的树进行剪枝并选择最优子树, 这时用损失函数最小作为剪枝的标准

♣ \clubsuit 最小二乘回归树生成算法
输入: 训练数据集 D D D
输出: 回归树 f ( x ) f(x) f(x).

  • 在训练数据集所在的输入空间中, 递归地将每个区域划分为两个子区域并决 定每个子区域上的输出值, 构建二叉决策树:

(1) 选择最优切分变量 j j j 与切分点 s s s

min ⁡ j , s [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x ϵ ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min _{j, s}\left[\min _{c_1} \sum_{x_i \in R_1(j, s)}\left(y_i-c_1\right)^2+\min _{c_2} \sum_{x_\epsilon \in R_2(j, s)}\left(y_i-c_2\right)^2\right] j,smin c1minxiR1(j,s)(yic1)2+c2minxϵR2(j,s)(yic2)2
遍历变量 j j j, 对固定的切分变量 j j j 扫描切分点 s s s, 选择使上式达到最小值的对 ( j , s ) (j, s) (j,s).
(2)用选定的对 ( j , s ) (j, s) (j,s) 划分区域并决定相应的输出值(该区域样本标签平均值)
R 1 ( j , s ) = { x ∣ x ( j ) ⩽ s } , R 2 ( j , s ) = { x ∣ x ( j ) > s } c ^ m = 1 N m ∑ x 1 ∈ R m ( j , s ) y i , x ∈ R m , m = 1 , 2 \begin{gathered} R_1(j, s)=\left\{x \mid x^{(j)} \leqslant s\right\}, \quad R_2(j, s)=\left\{x \mid x^{(j)}>s\right\} \\ \hat{c}_m=\frac{1}{N_m} \sum_{x_1 \in R_m(j, s)} y_i, \quad x \in R_m, \quad m=1,2 \end{gathered} R1(j,s)={xx(j)s},R2(j,s)={xx(j)>s}c^m=Nm1x1Rm(j,s)yi,xRm,m=1,2
(3)继续对两个子区域调用步骤 (1), (2), 直至满足停止条件
(4)将输入空间划分为 M M M 个区域 R 1 , R 2 , ⋯   , R M R_1, R_2, \cdots, R_M R1,R2,,RM, 生成决策树
f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f(x)=\sum_{m=1}^M \hat{c}_m I\left(x \in R_m\right) f(x)=m=1Mc^mI(xRm)

  • 分类树用基尼指数选择最优特征, 同时决定该特征的最优二值切分点

定义 (基尼指数) :分类问题中, 假设有 K K K 个类, 样本点属于第 k k k 类的概 率为 p k p_k pk, 则概率分布的基尼指数定义为
Gini ⁡ ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 \operatorname{Gini}(p)=\sum_{k=1}^K p_k\left(1-p_k\right)=1-\sum_{k=1}^K p_k^2 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
对于给定的样本集合 D D D, 其基尼指数为
Gini ⁡ ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 \operatorname{Gini}(D)=1-\sum_{k=1}^K\left(\frac{\left|C_k\right|}{|D|}\right)^2 Gini(D)=1k=1K(DCk)2
这里, C k C_k Ck D D D 中属于第 k k k 类的样本子集, K K K 是类的个数
如果样本集合 D D D 根据特征 A A A 是否取某一可能值 a a a 被分割成 D 1 D_1 D1 D 2 D_2 D2 两部分, 即
D 1 = { ( x , y ) ∈ D ∣ A ( x ) = a } , D 2 = D − D 1 D_1=\{(x, y) \in D \mid A(x)=a\}, \quad D_2=D-D_1 D1={(x,y)DA(x)=a},D2=DD1
则在特征 A A A 的条件下, 集合 D D D 的基尼指数定义为
Gini ⁡ ( D , A ) = ∣ D 1 ∣ ∣ D ∣ Gini ⁡ ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ Gini ⁡ ( D 2 ) \operatorname{Gini}(D, A)=\frac{\left|D_1\right|}{|D|} \operatorname{Gini}\left(D_1\right)+\frac{\left|D_2\right|}{|D|} \operatorname{Gini}\left(D_2\right) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)
基尼指数 Gini ⁡ ( D ) \operatorname{Gini}(D) Gini(D) 表示集合 D D D 的不确定性, 基尼指数 Gini ⁡ ( D , A ) \operatorname{Gini}(D, A) Gini(D,A) 表示经 A = a A=a A=a 分割后集合 D D D 的不确定性. 基尼指数值越大, 样本集合的不确定性也就越大, 这一点与熵相似.

  • 基尼指数关注的目标变量里面最大的类, 它试图找到一个划分把它和其它类别区分开来。
    在这里插入图片描述

在终止条件被满足, 划分停止之后, 下一步是剪枝:

  • 给树剪枝就是剪掉 “弱枝”,弱枝指的是在验证数据上误分类率高的树枝
  • 为树剪枝会增加训练数据上的错误分类率, 但精简的树会提高新记录上的预测能力

在这里插入图片描述

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

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

相关文章

T-SQL程序练习04

目录 一、写一个存储过程 𝐹𝑖𝑏𝑜𝑛𝑎𝑐𝑐 1. 具体要求 2. T-SQL程序代码 3. 结果显示 二、建立存储过程 𝑆𝑎𝑛𝐺𝑢…

万向区块链肖风:元宇宙的十大经济规则

本文为万向区块链董事长兼总经理肖风为华泰证券研究所科技及电子行业首席分析师黄乐平、万向区块链首席经济学家邹传伟联合撰写的《元宇宙经济学》所作序言。 元宇宙是什么?按照我的理解,元宇宙是一个由分布式网络技术、分布式账本和分布式社会/商业构成…

消息中间件介绍

一般,我们认为消息中间件是指支持与保障分布式应用程序之间同步/异步收发消息的中间件。消息是分布式应用之间进行数据交换的基本信息单位,分布式应用程序之间的通信接口由消息中间件提供。其中,异步方式指消息发送方在发送消息时不必知道接收…

奇遇MIX体验:加入全彩VST透视,开创消费级VR一体机新时代

前不久在奇遇MIX发布会上我们知道,面临着国内复杂的竞争环境,奇遇VR将选择差异化运营模式,一是硬件上停产单一VR模式设备,专注于支持VST的VR设备;二是内容层面,通过提供三年影视或游戏权益的模式&#xff0…

【openGauss实战1】openGauss基于CentOS8的部署

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验 一位上进心十足的【大数据领域博主】!😜&#x1f61…

写出更优雅和稳健的 TS 代码的几个 tips

写出更优雅和稳健的 TS 代码的几个 tips 本来想放优雅 太优雅了.jpg,后来还是好懒啊…… 使用 unknown 代替 any any 的问题在于它直接关闭了 TS 的类型检查,因此一旦使用了 any,那就代表任何事情都会发生。使用 unknown 则告诉 TS&#x…

LIS源码 医院检验科LIS系统源码 .net检验系统源码 实验室信息管理系统源码全开源,价值百万

LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化,检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后,自动生成打印报告,通过网络存储在数据库中,使医生能够通过医生工作站方便、及时地…

PXE+Kickstart 自动化部署系统

PXE 预启动执行环境是由Intel开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统. Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保…

谷粒商城之高级篇(2)

2.6 购物车服务 2.6.1 环境搭建 ①域名配置 ②创建 微服务 暂时需要的插件 此外&#xff0c;导入 公共包的依赖 <dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT…

50. 残差网络(ResNet)代码实现

1. 残差块 ResNet沿用了VGG完整的 33 卷积层设计。 残差块里首先有2个有相同输出通道数的 33 卷积层。 每个卷积层后接一个批量规范化层和ReLU激活函数。 然后我们通过跨层数据通路&#xff0c;跳过这2个卷积运算&#xff0c;将输入直接加在最后的ReLU激活函数前。 这样的设计…

PDF在线转Word?方便快捷易上手的方法

PDF和Word都是我们日常生活中经常看到的文件格式&#xff0c;如果你也是一个工作党&#xff0c;那小编相信你肯定会遇到关于这两种文件的转换问题。其实&#xff0c;PDF格式是十分方便我们进行文件传输和差阅读&#xff0c;不仅兼容性较强&#xff0c;而且文件内容相对来说是固…

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示 具体安装步骤可参考如下内容: 解压下载的安装包,找到安装包中的Setup.exe, 如下图所示,右击Setup.exe,选择“以管理员身份运行”, 如下图所示,安装程序正在准备中, 如下图所示,此时安装程序报错:未安装Microsoft…

ARM64内存虚拟化分析(6)向KVM注册内存更新

1 KVM memory listener的注册 在KVM初始化kvm_init()中会通过函数km_memory_listener_regiter()注册KVM所对应的memory listener&#xff0c;其中设置KVM region_add回调&#xff0c;KVM region_del回调以及KVM log_start/log_stop的回调。 2 region_add回调 当添加内存区域时&…

Wireshark抓到的H264帧

H264文件解析 NALU size, NALU start code size, NALU type 0, 0 0 UNSPECIFIED NALU size, NALU start code size, NALU type 26, 4 7 SPS NALU size, NALU start code size, NALU type 4, 4 8 PPS NALU size, NALU start code…

浅谈数据孤岛和数据分析的发展

大数据时代&#xff0c;企业对数据的重视力度逐步增强&#xff0c;数据分析、数据治理、数据管理、数据资产&#xff0c;已经被人们熟知&#xff0c;在数据的统计汇总和挖掘分析下&#xff0c;管理者的决策有了强有力的支撑和依据&#xff0c;同时也产生了新的问题&#xff0c;…

CSS 奇技淫巧Box-shadow实现圆环进度条

CSS 奇技淫巧Box-shadow实现圆环进度条 文章目录CSS 奇技淫巧Box-shadow实现圆环进度条一、Box-shadow圆环进度条二、效果预览三、原理刨析四、实际应用五、总结六、参考资料&#x1f498;七、推荐博文&#x1f357;一、Box-shadow圆环进度条 实现圆环进度条的方法用很多种&am…

figma和sketch应该选择哪个?

设计行业的工具层出不穷&#xff0c;在我看来sketch它在一定程度上被颠覆了PS&#xff0c;如今sketch已经成为许多设计团队的设计工具。 那么Figma相对于Sketch自身优势是什么&#xff1f;有什么不便&#xff1f;让我们从几个方面来了解。 两个软件都很适合创建UI和组件库。Sk…

图形查看器丨IrfanView功能简介

IrfanView 是一款快速、紧凑和创新的图形查看器&#xff0c;适用于Windows XP、Vista、7、8、10和11。 IrfanView寻求创建独特、新颖和有趣的功能&#xff0c;与其他一些图形查看器不同&#xff0c;它们的全部“创造力”是基于功能克隆、窃取想法和来自ACDSee和/或IrfanView的整…

mac vscode安装dart

1.安装Dart 1.安装下载Dart的工具 官网&#xff1a;https://brew.sh/ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"如果遇到 zsh: command not found: brew /bin/zsh -c "$(curl -fsSL https://gite…

Vue.js

文章目录1、vue核心基础1.1、安装1.2、Hello Vue1.3、模板语法1.4、数据绑定1.5、el与data的两种写法1.6、理解MVVM模型1.7、Object.defineProperty方法1.8、数据代理1.9、事件处理2.0、事件修饰符2.1、键盘事件2.2、计算属性2.3、监视属性2.4、绑定样式2.5、条件渲染2.6、列表…