Datawhale统计学习方法打卡Task05

news2024/11/15 21:22:06

学习教材《统计学习方法(第二版)》李航

学习内容:第5章 决策树

第五章 决策树

决策树是一种基本你的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。通过ID3和C4.5介绍特征的选择、决策树的生成以及决策树的修剪,最后介绍CART算法。

5.1决策树模型与学习

定义5.1 (决策树 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由节点(node)和有向边(directed edge)组成。结点有两种类型:内部结点和叶节点。内部结点表示一个特征或属性,叶节点表示一个类。

用决策树分类,从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到子节点;这是每一个子节点对应着该特征的一个取值。如此递归的对顺利进行测试并分配,指导达到叶节点。最后将实例分到叶节点的类中。

5.1.2决策树与if-then规则

由决策树的根节点到叶节点的每一条路径构建一条规则;路径上内部结点对应着规则的条件,二叶节点的类对应着规则的结论。互斥并且完备。

5.1.3决策树与条件概率分布

5.1.4决策树学习

决策树学习算法包含特征选择、决策树的生成与决策树的剪枝。

决策树学习的算法有ID3、C4.5与CART。

5.2特征选择

5.2.1特征选择问题

(1)计算初始信息熵

根据信息增益的方法,计算

H(D)=-\frac{9}{15}\log_2\frac{9}{15}-\frac{6}{15}\log_2\frac{6}{15}=0.971

然后计算各特征对数据集D的信息增益。分别以A_1,A_2,A_3,A_4表示年龄、有工作、有房子和信贷情况4个特征,

(2)计算每个特征的信息增益

对于A1的信息增益

\begin{aligned} H(D|A_1)&=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i)\\ &=-\frac{5}{15}H(D_1)-\frac{5}{15}H(D_2)-\frac{5}{15}H(D_3)\\ &=-\frac{5}{15} (-\frac{2}{5}\log_2\frac{2}{5}-\frac{3}{5}\log_2\frac{3}{5})-\frac{5}{15} (-\frac{3}{5}\log_2\frac{3}{5}-\frac{2}{5}\log_2\frac{2}{5}) -\frac{5}{15} (-\frac{4}{5}\log_2\frac{4}{5}-\frac{1}{5}\log_2\frac{1}{5})\\ &=0.888 \end{aligned}

则:

g(D,A_1)=0.971-0.888=0.083

对于A2的信息增益

 \begin{aligned} g(D,A_2)&=H(D)-H(D|A_2)\\ &=0.971-\frac{5}{15}H(D_2)-\frac{10}{15}H(D_2)\\ &=0.971--\frac{5}{15}(-\frac{5}{5}\log_2\frac{5}{5}--\frac{0}{5}\log_2\frac{0}{5})-\frac{10}{15}(-\frac{4}{10}\log_2\frac{4}{10}-\frac{6}{10}\log_2\frac{6}{10})\\ &=0.324 \end{aligned}

 

 对于A3的信息增益:

\begin{aligned} g(D,A_3)&=H(D)-H(D|A_3)\\ &=0.971-\frac{6}{15}H(D_3)-\frac{9}{15}H(D_3)\\ &=0.971-\frac{6}{15}(-\frac{6}{6}\log_2\frac{6}{6}--\frac{0}{6}\log_2\frac{0}{6})-\frac{9}{15}(-\frac{3}{9}\log_2\frac{3}{9}-\frac{6}{9}\log_2\frac{6}{9})\\ &=0.971-0.5509=0.4201 \end{aligned}

 对于A4的增益:

g(D|A_4)=0.971-0.608=0.363

5.2.3信息增益比

以信息增益作为划分训练数据集的特征,存在偏向于选择去质较多的特征的问题。使用信息增益比(information gain ratio)可以对这一问题进行校正。这是特征选择的另一准则。

g_R(D|A)=\frac{g(D|A)}{H_A(D)}

5.3 决策树的生成

5.3.1 ID3算法

例5.3 对表5.1的训练数据集,利用ID3算法建立决策树

 利用例5.2的结果,由于特征A3(有房子)的信息增益最大,所以选择特征A3作为根节点特征。他讲训练数据集D划分为两个子集D1(A3=是)和D2(A3=否)。由于D1只有同一类样本点(A3=是),所以他成为一个叶节点,节点标记为是。

对D2则需从A1(年龄)A2(有工作)和A4(信贷情况)中选择新的特征。计算各个特征的信息增益:

g(D_2,A_1)=H(D_2)-H(D_2|A_1)=-\frac{3}{9}\log_2\frac{3}{9}-\frac{6}{9}\log_2\frac{6}{9}-[\frac{4}{9}(-\frac{1}{4}\log_2\frac{1}{4}-\frac{3}{4}\log_2\frac{3}{4})-\frac{2}{9}(0)-\frac{3}{9}(-\frac{2}{3}\log_2\frac{2}{3}-\frac{1}{3}\log_2\frac{1}{3})]=0.918-0.666=0.251

g(D_2,A_2)=H(D_2)-H(D_2|A_2)=0.918

g(D_2,A_4)=H(D_2)-H(D_2|A_4)=0.474

选择信息增益最大的特征A_2(有工作)作为结点的特征。由于A_2有两个可能取值,从这一节点引出两个子节点:一个对应“是”子节点,包含3个样本,他们属于同一类,所以这是一个叶节点,标记为“是”;另一个对应“否”(无工作)的子节点,包含6个样本,他们也属于同一类,所以这也是一个叶节点,类标记为“否”。这样生成决策树:

ID3算法只有树的生成,所以该算法生成的树容易产生过拟合。

5.3.2 C4.5的生成算法

 C4.5算法与ID3算法类似,C4.5算法对ID3算法进行了改进,采用信息增益比来选择特征。

5.4 决策树的剪枝

 

 

 5.5 CART算法

分类与回归树(classification and regression tree, CART)模型。以下将用于分类和回归的树统称为决策树。CART算法由以下两步组成:

(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;

(2)决策树剪枝:用验证集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

5.5.1 CART生成

对回归树用平方误差最小化准则,对分类树用基尼指数(Gini index)最小化准则,进行特征选择,生成二叉树。

1.回归树的生成

假设X与Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集

D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}

考虑生成回归树。

 2. 分类树的生成

  

 例5.4 根据表5.1所给训练数据集,应用 CART算法生成决策树。

5.5.2 CART剪枝

习题

习题5.1

根据表5.1所给的训练数据集,利用信息增益比(C4.5算法)生成决策树

习题5.2

利用如表5.2所示训练数据,试用平方误差损失准则生成一个二叉回归树

习题5.3

证明CART剪枝算法中,当α确定时,存在唯一的最小子树T_\alpha使损失函数C_\alpha(T)最小。

习题5.4

证明CART剪枝算法中求出的子树序列\{T_0,T_1,\cdots,T_n\}分别是区间\alpha\in[\alpha_i,\alpha_{i+1}]的最优子树T_\alpha,这里i=0,1,\cdots,n\;\;0=\alpha_0<\alpha_1<\cdots<\alpha_n<+\infty

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

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

相关文章

测试开发工程师,年薪100W不过分吧

在说测试开发工程师的薪资待遇之前&#xff0c;咱们要先了解软件测试岗位是用来做什么的&#xff0c;岗位是否重要&#xff0c;只有你知道了这些&#xff0c;才能判断这个岗位是否有价值&#xff01;软件测试是依据需求分析和测试用例&#xff0c;运用手工和自动化的手段来验证…

mysql中用逗号隔开的字段作查询用(find_in_set的使用)

mysql中用逗号隔开的字段作查询用(find_in_set的使用) 场景说明 在工作中&#xff0c;经常会遇到一对多的关系。想要在mysql中保存这种关系&#xff0c;一般有两种方式&#xff0c;一种是建立一张中间表&#xff0c;这样一条id就会存在多条记录。或者采用第二种方式&#xff…

[音视频] wav 格式

wav 格式结构 WAV文件遵循RIFF规则&#xff0c;其内容以区块&#xff08;chunk&#xff09;为最小单位进行存储。WAV文件一般由3个区块组成&#xff1a;RIFF chunk、Format chunk和Data chunk。另外&#xff0c;文件中还可能包含一些可选的区块&#xff0c;如&#xff1a;Fact…

javascript尾递归优化

JS中的递归 我们来看一个阶乘的代码 function foo( n ){if(n < 1){return 1;}return n * foo( n - 1 ); }foo(5); // 120下面分析一下&#xff0c;代码运行过程中,执行上下文栈是怎么变化的 这个代码是在全局作用域中执行的&#xff0c;所以在foo函数得到执行之前&#x…

ubuntu下用i686-w64-mingw32交叉编译支持SDL、Openssl的ffmpeg库

前言 本篇博客是基于前两篇关于ffmpeg交叉编译下&#xff0c;进行再次编译操作。ubuntu下ffmpeg的交叉编译环境搭建可以参看以下我的这篇博客&#xff1a;https://blog.csdn.net/linyibin_123/article/details/108759367 &#xff1b; ubuntu下交叉编译openssl及交叉编译支持o…

【微信小程序】-- WXML 模板语法 - 事件绑定 -- tap input (十)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

模电学习8. 三极管推挽电路

模电学习8. 三极管推挽电路一、推挽的概念二、三极管基本的推挽电路1. 上N下P型电路(1) 原理图(2) 电流分析2. 上P下N型(1) 原理图(2) 电流分析三、电路仿真分析1. 测试原理图2. 简要分析三、三极管的交越失真2. 处理方式三、三极管推挽电路的缺点一、推挽的概念 在电路中&…

Android性能优化(三)—— 绘制优化

运行的 Android 手机&#xff0c;虽然配置在不断的提升&#xff0c;但是仍然无法和 PC 相比&#xff0c;无法做到 PC 那样拥有超大内存以及高性能的 CPU。因此在开发 Android 应用程序时也不可能无限制的使用 CPU 和内存&#xff0c;如果对 CPU 和 内存使用不当也会造成应用的卡…

Tomcat的部署详解(基于Centos7.9))

文章目录Tomcat的部署1.1 安装jdk1.2、安装Tomcat1.3 Tomcat的目录结构1.4 Tomcat管理Tomcat web管理功能Tomcat配置文件TomcatTomcat&#xff1a;一种web服务器 Tomacat是由Apache推出的一款免费开源的Servlet容器&#xff0c;可实现JavaWeb程序的装载。 Tomcat服务器是一个…

大数据处理各组件概念及作用

一、数据采集&#xff1a; 1.1 Flume集群&#xff1a;数据采集工具&#xff0c;如写脚本将不同源端的数据采集后进行数据存储&#xff0c;或推送至Kafka等&#xff1b; 1.2 FTP集群&#xff1a;文件传输工具&#xff1b; 1.3 Kafka集群&#xff1a;消息队列&#xff0c;未避免…

UEFI启动的七阶段笔记

研究起点是CPU收到ResetVector信号后&#xff0c;开始执行第一行代码&#xff0c;一直到计算机关机/重启/崩溃&#xff0c;被划分为七个不同阶段。 1. SEC安全阶段 最早开始运行的固件代码&#xff0c;很大部分是汇编语言开发的。 主要负责四件事&#xff1a; 处理平台所有的…

纯手动搭建大数据集群架构_记录007_搭建Zookeeper3.5.7集群_集群配置_集群脚本---大数据之Hadoop3.x工作笔记0168

然后我们来搭建一下zookeeper集群,这个集群,以后不管是搭建Hadoop高可用,还是nifi集群,还是 hive 集群,hbase集群,spark集群,kettle集群,sqoop集群,都是基础 [root@hadoop122 ~]# cd /opt/software/ [root@hadoop122 software]# ll 总用量 479040 -rw-r--r--. 1 root root 9…

时间颗粒度选择(通过选择时间范围和颗粒度展示选项)

<template><div><el-time-selectplaceholder"起始时间"v-model"startTime":picker-options"startPickerOptions"change"changeStartTime"></el-time-select><el-time-selectplaceholder"结束时间&quo…

【Python】python深拷贝与浅拷贝详解(必须掌握)

深拷贝和浅拷贝是python必须要掌握的内容&#xff0c;无论你是面试开发、测试、运维等职位&#xff0c;只要是python&#xff0c;深拷贝与浅拷贝是面试官常问的一个重要知识点。 &#xff08;关注“测试开发自动化” 弓中皓&#xff0c;获取更多学习内容&#xff09; 文章目录一…

软件测试如何进行需求分析,你真的学会了吗?

目录 前言 从宏观的角度看需求文档 从细节的角度看需求文档 1&#xff09;结构化项目流程 2&#xff09;确认影响模块 3&#xff09;考量综合因素 需求的测试成本与质量风险 总结感谢每一个认真阅读我文章的人&#xff01;&#xff01;&#xff01; 重点&#xff1a;配…

Win11安卓应用自动化测试的准备

前言 APP的自动化测试&#xff0c;前提从ADB连接设备&#xff0c;启动APK应用开始。Win 11自带的WSA的APP的测试&#xff0c;要完全自动化&#xff0c;需要解决几个问题。 1、 启动WSA 此项有两步&#xff1a; i 启动WSA服务 Python程序来启动服务&#xff0c;可以直接调用…

DP1621国产LCD驱动芯片兼容替代HT1621B

目录DP1621简介DP1621芯片特性DP1621简介 DP1621是点阵式存储映射的LCD驱动器芯片&#xff0c;可支持最大128点&#xff08;32SEG * 4COM&#xff09;的 LCD屏&#xff0c;也支持2COM和3COM的LCD屏。单片机可通过3/4个通信脚配置显示参数和发送显示数据&#xff0c;也可通过指…

jmeter基本使用

jmeter基本使用 1.jemeter基本介绍 Jmeter 是什么 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具&#xff0c;用于对软件做压力测 试JMeter 可用于 Web 应用测试&#xff0c;后来扩展到了其他测试领域具体来说, Jmeter 可以测试静态和动态资源&#xff0c;比如…

C语言Switch语句用法

C switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case&#xff0c;且被测试的变量会对每个 switch case 进行检查。 语法 C 语言中 switch 语句的语法&#xff1a; switch(expression){case constant-expression :statement(s);break;…

论索引的重要性

开篇小测验下面这样一个小SQL 你该怎么样添加最优索引两个表上现在只有聚集索引bigproduct 表上已经有聚集索引 ProductIDbigtransactionhistory 表上已经有聚集索引 TransactionID你是否一眼就能看出来呢&#xff1f;答案将在文章中逐步揭晓~~~简单粗暴的添加索引首先我们看一…