周志华《机器学习》笔记(第4章) 决策树

2023-10-26

第四章 决策树
1.总述

决策树基于树结构进行决策,叶结点对应于决策结果,其他每个结点对应于一个属性测试。每个结点包含的样本集合根据属性测试的结果被划分到子结点中。最终目的是产生一个泛化能力强,能够处理未知样本的决策树。基本流程遵循简单而直观的分而治之。
在这里插入图片描述
决策树基本算法如下:
因为树的生成是递归的,递归算法中很重要的一点就是终止条件,即什么时候达到了叶结点(无法再更细分)就停止递归。
递归的停止条件有如下三种:

1.当前结点包含的样本全属于同一类别,无需划分。
2.当前的属性集为空,或者是当前的样本在属性集合上的值完全相同,无需划分。–标记为叶结点,并将其类别设定为结点所含样本最多的类别。
3.当前结点包含的样本集合为空,不能划分。–标记为叶结点,并将其类别设定为父结点所含样本最多的类别 情况23处理的实质不同:情形二利用当前结点的后验分布,情形三则是把父结点的样本分布作为当前结点的先验分布。

在这里插入图片描述
该算法的关键实际上是,每次该如何选择最优属性。书上后续章节则是对该问题的介绍。

2.划分选择

一般而言,随着划分过程的不断进行,决策树的分支结点所包含的样本尽量属于同一类别,即结点的“纯度”越高越好。

2.1信息增益

“信息熵”是度量样本集合纯度最常用的指标。

假定当前样本集合D中第k类样本所占的比例为 p k ( k = 1 , 2 , . . . , ∣ Y ∣ ) p_k(k=1,2,...,|\mathcal{Y}|) pkk=1,2,...,Y),则D的信息熵定义为
E n t ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k Ent(D) = -\sum_{k=1}^{\\|\mathcal{Y}\\|}p_k\log_2p_k Ent(D)=k=1Ypklog2pk
该值越小,表示D的纯度越高,极限情况,假如当前集合D中所有样本都属于同一类,则该值为0,在信息论中我们用熵来衡量信息的不确定性。

假定离散属性a有V个可能的取值 { a 1 , a 2 , . . . , a V } \{a^1,a^2,...,a^V\} {a1,a2,...,aV},若使用a来对样本集D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为 a v a^v av的样本集合,记为 D v D^v Dv
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a) = Ent(D) - \sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)
因此我们可以通过计算划分前后的信息熵,选择信息增益大的那些属性进行决策选择。

例如著名的ID3(iterative Dichotomiser)决策树学习算法就是以信息增益为准则来选择划分属性。

信息增益准则的缺点:对可取值数目较多的属性有所偏好。

2.2 增益率

改进:使用增益率。
G a i n _ r a t i o = G a i n ( D , a ) I V ( a ) Gain\_ratio = \frac{Gain(D,a)}{IV(a)} Gain_ratio=IV(a)Gain(D,a)
其中IV(a)是属性a的固有值。通常来说,取值数目越大的属性,IV值越大。
I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ IV(a) = -\sum_{v=1}^{V} \frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|} IV(a)=v=1VDDvlog2DDv

增益率准则对可取值数目较少的属性有所偏好。C4.5因此没有直接采用增益率,而是采用了一个启发式,先从候选划分属性中找出信息增益高于平均水平的属性,在从中选择增益率最高的。

2.3基尼指数

CART(Classifacation and regression tree,分类和回归树),一种著名的决策树学习算法,分类和回归任务都可用。使用基尼指数来选择划分属性,数据集D的纯度可以用基尼值来衡量。

直观含义:从数据集D中随机抽取两个样本,其类别标记不一致的概率。基尼指数越小,表示数据集D的纯度越高。
G i n i ( D ) = ∑ k = 1 Y ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 Y p k 2 Gini(D) = \sum_{k=1}^{\mathcal{Y}}\sum_{k^{'}\neq k}p_k p_k^{'} \\ = 1 - \sum_{k=1}^{\mathcal{Y}}p_k^2 Gini(D)=k=1Yk=kpkpk=1k=1Ypk2
属性a的基尼指数定义为:
G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D, a) = \sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)
选择划分后基尼指数最小的属性作为最优划分属性。

3.剪枝处理

首先要对数据集划分成训练集和验证集。

预剪枝:在生成树的过程中,在根据属性分支之前,先对该结点进行判断,如果当前结点的划分不能带来决策树泛化性能(验证集准确度)的提升,则将当前结点划分成叶结点。

后剪枝:自底向上地对非叶结点进行考察,如果该结点对应的子树替换为叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。优点:欠拟合风险小,保留更多的分支,时间开销增加。

仅有一层的决策树,也被称为决策树桩。

4.连续值和缺失值的处理
4.1连续值的处理

西瓜的属性诸如:颜色、根蒂等都是离散值,而重量、密度等是连续值。在决策树中如何处理连续值?

连续属性离散化技术

C4.5:采用二分法对连续属性进行处理

4.2 缺失值的处理

需要解决的问题:
(1)如何在属性值缺失的情况下,进行划分属性选择?
(2)进行划分属性选择以后,若在该属性上的值缺失,如何对样本进行划分?

在属性值缺失的情况下,为每个样本赋予一个权重。

请添加图片描述请添加图片描述
请添加图片描述

5 多变量决策树

决策树所形成的分类边界有一个明显的特点:轴平行,即它的分类边界由若干个与坐标轴平行的分段组成。
多变量决策树,就是能实现“斜划分”甚至更复杂划分的决策树。非叶结点是对属性的线性组合进行测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

周志华《机器学习》笔记(第4章) 决策树 的相关文章

随机推荐

  • U-Boot相关命令开发板烧写问题及解决方案

    前言 最近在学习u boot命令在开发板的烧写 在进行该实验的过程中 出现了很多问题和错误 在这里我根据自己的开发历程 将我出现的几大问题进行了汇总 并附有相关解决办法 这些解决方案都经过我亲自验证有效 希望能让大家在开发过程中有所启发 问
  • C++实现复化梯形公式求积分算法

    1 算法原理简介 步1 将积分区间2n等分 步2 调用复化梯形公式 2 应用实例 取 n 10 利用复化梯形公式计算积分 3 程序代码 include
  • BLDC无刷直流电机驱动电路-硬石电子

    1 BLDC无刷直流电机驱动电路 因为BLDC是三相完全一样的驱动电路 下图为其中一相电路图 其他两相完全一样 主要元器件 高速光耦 TLP715 MOS管驱动IC IR2110S MOS IRF540NS D7和C13为自举电路 2 霍尔
  • ubuntu18.04安装之后没有网络,不显示网络图标

    新安装的ubuntu18 04 06安装完成后插着网线 但是没有有线网 桌面上不显示网络图标 原因是因为ubuntu系统安装时自带的网卡驱动不兼容导致的 下面来讲解解决方法 首先 先试用手机连接线 将手机连接到电脑usb口 使用手机上的US
  • matlab中hash和map的用法总结

    若要在matlab中使用hash 有两种方式 1 采用matlab官方给出的结构类型map containers Map http cn mathworks com help matlab map containers html 2 调用J
  • 到底要不要孩子学习机器人编程

    人工智能发展迅猛 很多技术已经成熟应用到我们生活场景中 如果再不从小让孩子学习机器人编程教育 掌握更多编程语言 那未来就out啦 格物斯坦小坦克可以告诉你关于机器人编程要不要学的答案 教育部也将启动中小学生信息素养测评 并推动在中小学阶段设
  • uni-app利用chooseImage方法封装一个图片选择组件

    效果如图 可以预览 长按可删除 可以设置最多上传数量 这里封装的组件有个MaxNumber number类型 用的时候在父组件传就行了 这里默认给的8 废话不多说直接上代码 封装好了之后我们用的时候只需要引入直接用就行
  • 从etcd看Raft协议

    首先 什么是etcd 看官方的定义 A highly available key value store for shared configuration and service discovery 翻译过来就是 用于配置共享和服务发现的K
  • 动态规划(五)

    01背包问题 01 Knapsack problem 有10件货物要从甲地运送到乙地 每件货物的重量 单位 吨 和利润 单位 元 如下表所示 由于只有一辆最大载重为30t的货车能用来运送货物 所以只能选择部分货物配送 要求确定运送哪些货物
  • 如何快速画AltiumDesigner封装——用Ultralibrarian生成库文件---官网最新打开方式

    如何用Ultralibrarian生成库文件 官网最新打开方式 步骤1 下载元器件 步骤2 AltiumDesigner生成库文件 Ultralibrarian软件比较常用的生成库文件的软件 网上对于它的介绍大多还停留在软件使用层面上 但官
  • 区块链的工作流程

    工作流程 通过前两篇文章 相信大家对区块链有了基本的认识 区块链系统有很多种 第一个应用区块链的软件就是比特币 事实上区块链就是比特币带出来的 到现在为止 已经出现很多基于区块链的系统了 比如超级账本 以太坊等 每一类系统都有自己的特点 无
  • 雪花算法生成ID

    雪花算法生成ID Snowflake 雪花算法是由Twitter开源的分布式ID生成算法 以划分命名空间的方式将64 bit位分割成多个部分 每个部分代表不同的含义 而Java中64bit的整数是Long类型 所以在Java中 SnowFl
  • [网络安全]sqli-labs Less-2 解题详析

    网络安全 Less 2 GET Error based Intiger based 基于错误的GET整型注入 判断注入类型 判断注入点个数 查库名 查表名 查users表的列名 查字段 注意 总结 往期回顾 网络安全 sqli labs L
  • TensorRT简介

    一 什么是TensorRT 一般的深度学习项目 训练时为了加快速度 会使用多 GPU 分布式训练 但在部署推理时 为了降低成本 往往使用单个 GPU 机器甚至嵌入式平台 比如 NVIDIA Jetson 进行部署 部署端也要有与训练时相同的
  • 【设计模式】工厂方法模式(C#)

    设计模式 工厂方法模式 1 概述 针对简单工厂中的缺点 使用工厂方法模式就可以完美的解决 完全遵循开闭原则 定义一个用于创建对象的接口 让子类决定实例化哪个产品类对象 工厂方法使一个产品类的实例化延迟到其工厂的子类 工厂方法模式的主要角色
  • 解决gensim fasttext官方案例报错TypeError: Either one of corpus_file or corpus_iterable value must be provide

    完整报错为 TypeError Either one of corpus file or corpus iterable value must be provided 解决方法 将官方案例中传递参数时指定的sentences 删除即可 比如
  • Recyclerview源码深入探索:Adapter的增删改再也不迷路

    作者 maxcion 看到标题说的是三级缓存 有的地方说是四级缓存 请你不要迷惑 到底是三还是四 这就像图片加载这个场景有人说是三级缓存有人说是二级缓存 说三级缓存是把通过网络请求图片这个环节也认为是一层缓存 你认为这个环节应该不应该属于缓
  • 基于Qt、C++的毕业设计课设数学绘图工具(平面图、图表、立体图绘制-附下载链接)

    基于Qt C 的毕业设计课设数学绘图工具 平面图 图表 立体图绘制 介绍 这是我的毕业设计 基于Qt Creator 4 11 1 c 语言 效果图如下 点我下载项目源码 含打包软件 使用说明 1 二维函数绘制 开始界面 函数设置 输入界面
  • MySQL免安装配置教程(win10)

    一 下载安装包 1 1 下载zip包 打开官网地址下载zip安装包 这里下载的版本是5 7 可自行选择 对应下载网址 https downloads mysql com archives community 根据自己电脑进行选择对应安装包
  • 周志华《机器学习》笔记(第4章) 决策树

    第四章 决策树 1 总述 决策树基于树结构进行决策 叶结点对应于决策结果 其他每个结点对应于一个属性测试 每个结点包含的样本集合根据属性测试的结果被划分到子结点中 最终目的是产生一个泛化能力强 能够处理未知样本的决策树 基本流程遵循简单而直