机器学习西瓜书学习记录-第四章 决策树

2023-05-16

第4章 决策树

4.1基本流程
决策树,一类常见机器学习方法,希望从给定训练集学得一个模型用以对新示例进行分类。
一般,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集。
从根结点到每个叶结点的路径对应了一个判定测试序列。
决策树学习目的是为产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单直观的“分而治之”策略。
在这里插入图片描述
决策树基本算法里,导致递归返回的三种情形:1、当前结点包含样本全属于同一类别,无需划分;2、当前属性集为空,或是所有样本在所有属性上取值相同,无法划分(该情况下,将当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别)3、当前结点包含的样本集合为空,不能划分。(该情况下,同样将当前结点标记为叶结点,但将其类别设定为其父结点所含样本最多的类别)
情形2是在利用当前结点的后验分布,而情形3则是把父结点的样本分布作为当前结点的先验分布。
4.2划分选择
决策树学习的关键-如何选择最优划分属性
4.2.1信息增益

“信息熵”常用于度量样本集合纯度。

样本集合D中第k类样本所占比例为 p k ( k = 1 , 2 , . . . , ∣ y ∣ ) p_k(k=1,2,...,|y|) pk(k=1,2,...,y),则D的信息熵定义如下(注, 信息熵Ent(D)的值越小,则D的纯度越高。)
在这里插入图片描述
离散属性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,由上述计算信息熵式子可进而计算出 D v D^v Dv的信息熵。考虑到不同分支结点所包含样本数不同,给分支结点赋予权重 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv,即样本数越多的分支结点影响越大,故可计算出用该属性a对样本D进行划分所获得的“信息增益”
在这里插入图片描述
一般而言,信息增益越大,意味着使用属性a进行划分所获得的“纯度提升”越大。故而可用信息增益进行决策树的划分属性的选择。
在这里插入图片描述

ID3算法即以信息增益为准则来选择划分属性。

(具体利用信息增益进行属性划分的例子见西瓜书P74-P75)
一个需要解决的问题:信息增益准则对可取值数目较多的属性有所偏好
理解:如若通过编号属性来划分各个样本,显然产生的每个分支只含有一个样本,这些分支的纯度达到最大。但是很显然,这样构建出来的决策树不具有泛化能力。
问题的解决改进:使用“增益率”来选择最优划分属性

增益率定义如下,其中IV(a)称为属性a的“固有值”
在这里插入图片描述
属性a的可能取值数目越多即V越大,IV(a)的值通常会越大。
问题:增益率准则对取值数目较少的属性有偏好

因此,C4.5算法并非直接选择增益率最大的候选划分属性,而是使用一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

4.2.3基尼系数

CART决策树使用"基尼指数"来选择划分属性.

采用与信息熵相同的符号
基尼值反映了从数据集D中随即抽取两个样本,其类别标记不一致的概率,因此可用于度量数据集D的纯度,基尼值越小,则数据集D的纯度越高。
计算属性a的基尼系数
在这里插入图片描述
在候选属性集合中,选择使得划分后基尼指数最小的属性作为最优划分属性,即
在这里插入图片描述
4.3剪枝处理

剪枝是决策树学习算法对付“过拟合”的主要手段。
决策树剪枝的基本策略有“预剪枝”和“后剪枝”。

预剪枝:指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
后剪枝:先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
注:
1、判断决策树泛化性能提升与否的性能评估方法-假定为留出法。
2、采用信息增益准则进行划分属性选择。
4.3.1预剪枝
例子见书上P80-P81
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
书中例子最终所得决策树为
在这里插入图片描述
“决策树桩”:仅有一层划分的决策树
预剪枝使得决策树的很多分支都没有"展开”,不仅降低过拟合风险,还显著减少决策树的训练时间开销和测试时间开销。
但另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可
能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于"贪心"本质禁止这些分支展开 给预剪枝决策树带来了“欠拟合”的风险。
4.3.2后剪枝
例子见书上P82-P83
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
书中例子最终所得决策树为
在这里插入图片描述
后剪枝决策树通常比预剪枝决策树保留更多的分支,且后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。
但是,由于后剪枝过程是在生成完全决策树之后进行的 并且要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。
4.4连续与缺失值
4.4.1连续值处理
讨论如何在决策树学习中使用连续属性-连续属性离散化技术,如二分法

C4.5决策树算法中采用二分法对连续属性进行处理。

给定样本集D,连续属性a。
将属性a在数据集D上出现的n个不同取值进行从小到大排序,记 { a 1 , a 2 , . . . , a n } \{a^1,a^2,...,a^n\} {a1,a2,...,an}.
基于划分t可将D分为子集 D t − D_t^- Dt D t + D_t^+ Dt+,其中 D t − D_t^- Dt包含那些在属性a上取值不大于t的样本,而 D t + D_t^+ Dt+则包含那些在属性a上取值大于t的样本。
由于对相邻属性 a i a^i ai a i + 1 a^{i+1} ai+1而言,t在二者区间之中取任意值多产生的划分结果相同,因此我们把二者区间的中位点 a i + a i + 1 2 \frac{a^i+a^{i+1}}{2} 2ai+ai+1作为候选划分点。
对连续属性a,我们可考察包含n-1个元素的候选划分点集合
在这里插入图片描述
之后,便可以像离散属性值一样来考察这些划分点,选择最优划分点进行样本集合的划分。
G a i n ( D , a , t ) Gain(D,a,t) Gain(D,a,t)是样本集D基于划分点t二分后的信息增益,故可选择使得 G a i n ( D , a , t ) Gain(D,a,t) Gain(D,a,t)最大化的划分点即为最优划分点。
在这里插入图片描述
举例:
在这里插入图片描述
属性“密度”,17个训练样本取值各不相同,该属性的候选划分点集合包含16个候选值:
T 密度 = { 0.244 , 0.294 , 0.351 , 0.381 , 0.420 , 0.459 , 0.518 , 0.574 , 0.600 , 0.621 , 0.636 , 0.648 , 0.661 , 0.681 , 0.708 , 0.746 } T_{密度}=\{0.244,0.294, 0.351, 0.381, 0.420, 0.459, 0.518, 0.574, 0.600, 0.621, 0.636, 0.648, 0.661, 0.681, 0.708, 0.746\} T密度={0.244,0.294,0.351,0.381,0.420,0.459,0.518,0.574,0.600,0.621,0.636,0.648,0.661,0.681,0.708,0.746}

计算属性“密度”信息增益为0.262,对应划分点0.381。

属性“含糖率”,其候选划分点集合也包含16个候选值
T 含糖率 = { 0.049 , 0.074 , 0.095 , 0.101 , 0.126 , 0.155 , 0.179 , 0.204 , 0.213 , 0.226 , 0.250 , 0.265 , 0.292 , 0.344 , 0.373 , 0.418 } T_{含糖率}=\{0.049, 0.074, 0.095, 0.101 , 0.126, 0.155, 0.179, 0.204, 0.213, 0.226, 0.250, 0.265, 0.292, 0.344,0.373,0.418\} T含糖率={0.049,0.074,0.095,0.101,0.126,0.155,0.179,0.204,0.213,0.226,0.250,0.265,0.292,0.344,0.373,0.418}

计算属性“含糖率”信息增益为0.349,对应划分点0.126。
计算其余各属性的信息增益,得
在这里插入图片描述
故选择信息增益率最大的属性“纹理”做根节点进行属性划分
最终生成决策树如下:
在这里插入图片描述
注:与离散属性不同的是,若当前结点划分属性为连续属性,该属性仍可作为其后代结点的划分属性。
4.4.2缺失值处理
不完整样本,即样本的某些属性值缺失
如何利用有缺失属性的训练样例进行学习?
问题:(1)如何在属性值缺失的情况下进行划分属性选择?
(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
解决方案:
在这里插入图片描述
在这里插入图片描述
对问题(1),根据无缺失的样本子集来判断属性优劣
对问题(2),若样本x在划分属性a上取值已知,则将x划入与其取值对应的子结点,且样本权值在子结点中保持为 w x w_x wx。若样本x在划分属性a上取值未知,则将x同时划入所有子结点,且样本权值在与属性 a v a^v av对应的子结点中调整为 r v ~ ⋅ w x \tilde{r_v}\cdot w_x rv~wx

C4.5利用上述方法作为缺失值处理的解决方案

4.5多变量决策树
把每个属性视为坐标空间中的一个坐标轴,则d个属性描述的样本对应了d维空间中的一个数据点,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界。
决策树所形成的分类边界的特点:轴平行,即分类边界由若干个与坐标轴平行的分段组成。
如例,一决策树及其所对应的分类边界
在这里插入图片描述
可见,分类边界每一段都与坐标轴平行。每段划分都直接对应某个属性取值,故有较好的可解释性。
实际情况下,真实分类边界比较复杂,需使用很多段划分才能获得较好的近似,若能使用斜的划分边界,决策树模型将大为简化。
“多变量决策树”即为能实现这样“斜划分”甚至更复杂划分的决策树。在此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试。即将非叶结点视作形如 ∑ i = 1 d w i a i = t \sum_{i = 1}^{d}w_ia_i=t i=1dwiai=t的线性分类器,其中 w i w_i wi是属性 a i a_i ai的权重, w i w_i wi和t可在该结点所含的样本集合属性集上学得。

在这里插入图片描述

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

机器学习西瓜书学习记录-第四章 决策树 的相关文章

随机推荐

  • Android应用安全解决方案

    前言 防止第三方反编译篡改应用 xff0c 防止数据隐私泄露 xff0c 防止二次打包欺骗用户 1 一些必要的基础知识 我们在加密的时候会用到一些加密或者编码方法 常见的有 xff0c 非对称加密算法 RSA 等 xff1b 对称加密算法
  • win10修改系统配置处理器引导参数后,系统无限蓝屏解决办法

    win10修改系统配置处理器引导参数后 xff0c 系统无限蓝屏解决办法 0 xff1a 开机时先按f8进入安全模式 xff0c 在进入命令提示符 1 进入 启动修复 的 命令提示符 xff08 最好是使用有管理员权限的 xff0c 不过普
  • 运行内存变成的2G,为硬件保留内存为6G

    运行内存变成的2G xff0c 为硬件保留内存为6G 先看设置中下面是否有设置是否激活windows xff0c 如有点进去 xff0c 有疑难解疑下面 xff0c 点入会自动激活windows xff0c 如盗版就不行 xff0c 激活后
  • ubuntu20.4安装NVIDIA驱动,cuda

    安装NVIDIA驱动准备工作 下载NVIDIA地址 xff1a https www nvidia cn Download index aspx lang 61 cn 查看是否安装好驱动命令 xff1a nvidia span class t
  • 图像进行反转:白变黑,黑变白

    图像进行反转 xff1a 白变黑 xff0c 黑变白 二值图对图像进行反转 span class token keyword import span cv2 img span class token operator 61 span spa
  • python调用相机和双目相机

    python调用相机 span class token keyword import span cv2 span class token keyword import span numpy span class token keyword
  • 安装PCL1.9.1其它版本号Python3.6+PCL1.9.1+VS2017+gtkbundle_3.6.4版本

    下载 python pcl文件 地址 xff1a https github com strawlab python pcl 安装 VS2017 安装PLC1 91 首先在自己电脑上安装PCL xff08 点击这里 xff09 xff0c 这
  • ROS--机器人小车仿真rviz

    URDF练习 需求描述 创建一个四轮圆柱状机器人模型 xff0c 机器人参数如下 底盘为圆柱状 xff0c 半径 10cm xff0c 高 8cm xff0c 四轮由两个驱动轮和两个万向支撑轮组成 xff0c 两个驱动轮半径为 3 25cm
  • ROS--URDF集成Gazebo仿真小车和rviz结合

    ROS URDF集成Gazebo仿真小车 实现流程 需要编写封装惯性矩阵算法的 xacro 文件 为机器人模型中的每一个 link 添加 collision 和 inertial 标签 xff0c 并且重置颜色属性 在 launch 文件中
  • 使用D435i深度相机运行ORB-SLAM3

    下载安装链接 下载ORB SLAM3地址 xff1a git clone https github com UZ SLAMLab ORB SLAM3 git eigen3多版本安装 xff1a https blog csdn net wei
  • keil5使用一个父工程打开多个子工程文件

    1 首先工程文件需要在同样的文件夹里 2 打开keil5 xff0c 选择Project New Multi Project Workspace 3 将工程文件建立在刚刚的总文件夹里面 xff0c 命名保存 4 弹出此页面 xff08 Cr
  • ​Android动态加载so!这一篇就够了!

    作者 xff1a Pika 链接 xff1a https juejin cn post 7107958280097366030 对于一个普通的android应用来说 xff0c so库的占比通常都是巨高不下的 xff0c 因为我们无可避免的
  • HTTP是什么

    HTTP是什么 HTTP是什么 HTTP协议是Hyper Text Transfer Protocol xff08 超文本传输协议 xff09 的缩写 是用于从万维网 xff08 WWW World Wide Web xff09 服务器传输
  • error: array has incomplete element type ‘char []‘

    原代码 xff1a void explain input char int char a 报错 xff1a error array has incomplete element type 39 char 39 原因 xff1a 可以用二维数
  • STM32串口接收十六进制数转为十进制数(包含负数)

    外部设备传输给STM32单片机十六进制数 例如0x09c4 代表2500 0xff38 代表 200 xff08 并不是65336 xff0c 因为这是有符号的 xff09 串口接收处理函数 接收到 5A A5 06 83 55 00 01
  • 无人机-3无人机ROS应用与开发

    一 ROS是什么 二 为什么要学习ROS 三 怎么学习ROS https www cnblogs com masbay p 10745170 html TF坐标系指机器人在现实世界会有坐标的变换 xff0c ROS已经将其算成固定的程序 x
  • ROS入门-4.安装ROS系统(ubuntu20.04版本安装ros的noetic版本)

    ubuntu20 04版本安装ros的noetic版本 1 添加软件源2 添加密钥3 更新4 安装ROS5 初始化rosdep6 设置环境变量7 测试ROS安装是否成功 1 添加软件源 2 添加密钥 3 更新 4 安装ROS 5 初始化ro
  • 数学建模-12.预测模型

    灰色预测 灰色系统 GM 1 1 模型 xff1a Grey Model GM 1 1 原理介绍 呢么 xff0c 准指数规律的检验 xff1f 发展系数 a 与预测情形的探究 发展系数越小预测的越精确 GM 1 1 模型的评价 在使用GM
  • 数学建模-数学规划模型

    数学规划模型 一 概述 1 什么是数学规划 xff1f 运筹学的一个分支 xff0c 用来研究在给定条件下 即约束条件 xff0c 如何按照某一衡量指标 xff08 目标函数 xff09 来寻求计划 管理工作中的最优方案 即求目标函数在一定
  • 机器学习西瓜书学习记录-第四章 决策树

    第4章 决策树 4 1基本流程 决策树 xff0c 一类常见机器学习方法 xff0c 希望从给定训练集学得一个模型用以对新示例进行分类 一般 xff0c 一棵决策树包含一个根结点 若干个内部结点和若干个叶结点 xff1b 叶结点对应于决策结