【机器学习】西瓜书学习心得及课后习题参考答案—第4章决策树

news2024/9/28 1:19:44

这一章学起来较为简单,也比较好理解。
4.1基本流程——介绍了决策树的一个基本的流程。叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集,从根结点到每个叶结点的路径对应了一个判定测试序列。并且给出了决策树学习的基本算法。
在这里插入图片描述
上述算法递归返回的情形2和情形3不同之处:情形2是利用当前结点的后验分布,情形3则是把父结点的样本分布作为当前结点的先验分布。
4.2划分选择——对应决策树学习基本算法的第8步,选择最优划分属性,ID3决策树学习算法以信息增益为准则来选择划分属性,C4.5决策树算法使用增益率,CART决策树使用基尼指数来选择划分属性。
4.3剪枝处理——它是对付overfitting的主要手段,基本策略有预剪枝和后剪枝。
4.4连续与缺失值——连续属性离散化技术可以面对学习任务中遇到的连续属性,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。面对缺失值需要解决两个问题:1是如何在属性值缺失的情况下进行划分属性选择?2是给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
4.5多变量决策树——介绍了多变量决策树,一定程度上能简化决策树。

术语学习

决策树 decision tree
分而治之 divide-and-conquer
纯度 purity
信息熵 information entropy
信息增益 information gain
迭代二分器 Iterative Dichotomiser ID3算法中的ID
增益率 gain ratio
固有值 intrinsic value
CART Classification and Regression Tree
基尼指数 Gini index
剪枝 pruning
预剪枝 prepruning
后剪枝 postpruning
决策树桩 decision stump
二分法 bi-partition
轴平行 axis-parallel
多变量决策树 multivariate dicision tree
斜决策树 oblique decision tree
增量学习 incremental learning

4.1 试证明对于不含冲突数据(即特征向量完全相同但标记不同)的训练集,必存在与训练集一致(即训练误差为 0) 的决策树。

回顾第1章和第2章定义

我们把"色泽" “根蒂” “敲声"作为三个坐标轴,则它们张成一个用于描述西瓜的三维空间,每个西瓜都可在这个空间中找到自己的坐标位置.由于空间中的每个点对应一个坐标向量,因此我们也把一个示例称为一个"特征向量” (feature vector).

这里关于示例结果的信息,例如"好瓜",称为"标记" (labe1); 拥有了标记信息的示例,则称为"样例" (examp1e).

更一般地,我们把学习器的实际预测输出与样本的真实输出之间的差异称为"误差" (error),学习器在训练集上的误差称为"训练误差" (training error)或"经验误差" (empirical error) ,在新样本上的误差称为"泛化误差" (generalization
error).

结合上述决策树学习的基本算法,可以知道如果以每个西瓜的编号作为划分属性,那么得到的决策树桩就是与训练集一致的。

4.2 试析使用"最小训练误差"作为决策树划分选择准则的缺陷。

在上面的介绍中,我们有意忽略了表 4.1 中的"编号"这一列.若把"编号"也作为一个候选划分属性,则根据式4.2均可计算出它的信息增益为 0.998 ,远大于其他候选划分属性.这很容易理解:"编号"将产生 17 个分支,每个分支结点仅包含一个样本,这些分支结点的纯度己达最大.然而,这样的决策树显然不具有泛化能力,无法对新样本进行有效预测.

4.3 试编程实现基于信息熵进行划分选择的决策树算法,并为表 4.3 中数据生成一棵决策树。

待补充

4.4 试编程实现基于基尼指数进行划分选择的决策树算法,为表 4.2 中数据生成预剪枝、后剪枝决策树并与未剪枝决策树进行比较.

待补充

4.5 试编程实现基于对率回归进行划分选择的决策树算法,并为表 4.3 中数据生成一棵决策树.

待补充

4.6 试选择 4 个 UCI 数据集,对上述 3 种算法所产生的未剪枝、预剪枝、后剪枝决策树进行实验比较,并进行适当的统计显著性检验.

待补充

4.7 图 4.2 是一个递归算法,若面临巨量数据,则决策树的层数会很深,使用递归方法易导致"栈"溢出。试使用"队列"数据结构,以参数MaxDepth 控制树的最大深度,写出与图 4.2 等价、但不使用递归的决策树生成算法.

待补充

4.8 试将决策树生成的深度优先搜索过程修改为广度优先搜索,以参数MaxNode控制树的最大结点数,将题 4.7 中基于队列的决策树算法进行改写。对比题 4.7 中的算法,试析哪种方式更易于控制决策树所需存储不超出内存。

待补充

4.9 试将 4.4.2 节对缺失值的处理机制推广到基尼指数的计算中去.

使用式4.9,4.10,4.11,对照式4.5,4.6

G i n i ( D ) = 1 − ∑ k = 1 ∣ y ∣ p ~ k 2 G i n i _ i n d e x ( D , a ) = ρ × G i n i _ i n d e x ( D ~ , a ) = ∑ v = 1 V r ~ v G i n i ( D v ) Gini(D) = 1- \sum_{k=1}^{|y|}\tilde{p}_{k}^2 \\ Gini\_index(D,a) = \rho \times Gini\_index(\tilde{D},a) \\ =\sum_{v=1}^V\tilde{r}_{v}Gini(D^v) Gini(D)=1k=1yp~k2Gini_index(D,a)=ρ×Gini_index(D~,a)=v=1Vr~vGini(Dv)

4.10 从网上下载或自己编程实现任意一种多变量决策树算法,并观察其在西瓜数据集 3.0 上产生的结果

待补充

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

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

相关文章

js中的遍历方法比较:map、for...in、for...of、reduce和forEach的特点与适用场景

😊博主:小猫娃来啦 😊文章核心:JavaScript中的遍历方法比较:map、for…in、for…of和forEach的特点与适用场景 文章目录 map 方法概述用法返回值特点 for...in 循环概述用法注意事项 for...of 循环概述用法可迭代对象…

苍穹外卖day09——历史订单模块(用户端)+订单管理模块(管理端)

查询历史订单——需求分析与设计 产品原型 业务规则 分页查询历史订单 可以根据订单状态查询 展示订单数据时,需要展示的数据包括:下单时间、订单状态、订单金额、订单明细(商品名称、图片) 接口设计 查询历史订单——代码开…

抖音seo短视频账号矩阵系统技术开发简述

说明:本开发文档适用于抖音seo源码开发,抖音矩阵系统开发,短视频seo源码开发,短视频矩阵系统源码开发 一、 抖音seo短视频矩阵系统开发包括 抖音seo短视频账号矩阵系统的技术开发主要包括以下几个方面: 1.前端界面设…

线程初见——对速度的追求

文章目录 线程进程线程区别线程之间资源线程库介绍 线程 同一个程序的所有线程共享一份全局内存区域 特例:只包含一个线程的进程 查看线程号:ps -Lf 号 和进程类似,完成并发任务的执行 进程线程区别 区别进程线程信息交换内存未共享&#xf…

cad丢失mfc140u.dll怎么办?找不到mfc140u.dll的解决方法

第一:mfc140u.dll有什么用途? mfc140u.dll是Windows操作系统中的一个动态链接库文件,它是Microsoft Foundation Class (MFC)库的一部分。MFC是 C中的一个框架,用于构建Windows应用程序的用户界面和功能。mfc140u.dll包含了MFC库中…

CAN15765和1939协议

1. 15765协议介绍 简单的来说,15765协议指的是 基于CAN2.0A/B 协议 (也可以叫做ISO11898协议 -链路层) 硬件接口的 应用层 通讯协议, 它用于实现通用的车辆诊断服务。 ISO11898协议参考下图。 参考搜索到的“CAN总线协议讲解…

【MySQL】索引特性

​🌠 作者:阿亮joy. 🎆专栏:《零基础入门MySQL》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录 👉没…

蓝图节点编辑器

打印字符串 第02章 蓝图结构 03 -注释和重新路由_哔哩哔哩_bilibili 第02章 蓝图结构 04 - 变量_哔哩哔哩_bilibili 第03章 蓝图简易门 01 - 箱子碰撞_哔哩哔哩_bilibili 第03章 蓝图简易门 02 - 静态Mesh和箭头_哔哩哔哩_bilibili 第03章 蓝图简易门 03 - 设置相对旋转节点_哔…

流数据湖平台Apache Paimon(三)Flink进阶使用

文章目录 2.9 进阶使用2.9.1 写入性能2.9.2 读取性能2.9.3 多Writer并发写入2.9.4 表管理2.9.5 缩放Bucket 2.10 文件操作理解2.10.1 插入数据2.10.2 删除数据2.10.3 Compaction2.10.4 修改表2.10.5 过期快照2.10.6 Flink 流式写入 2.9 进阶使用 2.9.1 写入性能 Paimon的写入…

c++ 类的特殊成员函数:拷贝构造函数(四)

1. 简介 拷贝构造是一种特殊的构造函数,用于创建一个对象,该对象是从同一类中的另一个对象复制而来的。拷贝构造函数通常采用引用参数来接收要复制的对象,并使用该对象的副本来创建一个新对象。 2. 结构 class MyClass { public:MyClass(c…

一种新的基于区域的在线活动轮廓模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

SpringBoot热部署的开启与关闭

1、 开启热部署 &#xff08;1&#xff09;导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId> </dependency>&#xff08;2&#xff09;设置 此时就搞定了。。。 2、…

TCP网络通信编程之网络上传文件

【图片】 【思路解析】 【客户端代码】 import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException;/*** ProjectName: Study* FileName: TCPFileUploadClient* author:HWJ* Data: 2023/7/29 18:44*/ public class TCPFil…

解决在云服务器开放端口号以后telnet还是无法连接的问题

这里用阿里云服务器举例&#xff0c;在安全组开放了对应的TCP端口以后。使用windows的cmd下的telnet命令&#xff0c;还是无法正常连接。 telnet IP地址 端口号解决方法1&#xff1a; 在轻量服务器控制台的防火墙规则中添加放行端口。 阿里云-管理防火墙 如图&#xff0c;开放…

Windows 11 下 OpenFace 2.2.0 的安装

写在前面 最近需要做关于面部的东西&#xff0c;所以需要使用到OpenFace这个工具&#xff0c;本文仅用来记录本人安装过程以供后续复现&#xff0c;如果可以帮助到读者也是非常荣幸。 安装过程 不编译直接使用 这种方法可以直接从官方下载下来编译好的exe以及gui进行使用&a…

1000Wqps生产级IM,怎么架构?

前言 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴拿高薪&#xff0c;完成架构的升级&#xff0c;进入架构师赛道&#xff0c;打开薪酬天花板。 然后&#xff0c;在架构师的面试过程中&#xff0c;常常会遇到IM架构的问题&#xff1a; 如果要你从0到1做IM架构…

python与深度学习(十):CNN和cifar10二

目录 1. 说明2. cifar10的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试。首…

Flutter 使用texture_rgba_renderer实现桌面端渲染视频

Flutter视频渲染系列 第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFICustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频 第六章 桌面端使用texture_rgba_renderer渲染视频&#xff08;本…

MySQL高级篇第3章(用户与权限管理)

文章目录 1、用户管理1.1 登录MySQL服务器1.2 创建用户1.3 修改用户1.4 删除用户1.5 设置当前用户密码1.6 修改其他用户密码1.7 MySQL8密码管理 2、权限管理2.1 全新列表2.2 授予权限的原则2.3 授予权限2.4 查看权限2.5 收回权限 3、权限表3.1 user表3.2 db表3.3 tables_priv表…

ssti总结转载

一、初识SSTI 1、什么是SSTI&#xff1f; SSTI就是服务器端模板注入(Server-Side Template Injection)&#xff0c;实际上也是一种注入漏洞。 可能SSTI对大家而言不是很熟悉&#xff0c;但是相信大家很熟悉SQL注入。实际上这两者的思路都是相同的&#xff0c;因此可以类比来分…