《机器学习by周志华》学习笔记-决策树-01

本书中的「决策树」有时指学习方法,有时指学得的树。

1、基本流程

1.1、概念

基本流程,亦称「判定树」

决策树(decision tree),是一种常见的机器学习方法。以二分类任务为例,我们希望从给定训练数据集学得一个模型,用以对新样例进行分离。

以二分类任务为例,可看作对「当前样本属于正类吗」这个问题的「决策」或「判定」过程。

1.2、目的

是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。

1.3、基本流程

顾名思义,决策树是基于树结构来进行决策的,这恰是人类在面临决策问题时一种很自然的处理机制。

例如,我们要对「这是好瓜吗」这样的问题进行决策时,通常会进行一系列的子判断或自决策,例如:

  • 他是什么颜色?>>青绿色
  •         它的根蒂是什么形态?>>蜷缩
  •                 它敲起来是什么声音?>>**
  •                         这是好瓜吗?>>好瓜

如下图所示:

显然,决策过程的最终结论对应了我们所希望的判定结果。例如:「是」或「不是」好瓜。

每个判定问题都是对某个属性的「测试」。例如:他是什么颜色?、它的根蒂是什么形态?

每个「测试结果」或是「导出最终结论」或是「导出进一步的判断问题」,其考虑范围是在上次决策结果的限定范围之内。例如:他是什么颜色?>>青绿色>>>它的根蒂是什么形态?

一般的,一颗决策树包含:

  • 一个根节点:包含样本全集
  • 若干个内部节点:对应一个属性测试
  • 若干个叶节点:对应决策结果

每个结点包含的样本集合根据属性测试的结果被划分到子结点中;从「根节点」到「每个叶节点」的路径对应了一个判定测试序列。

其基本流程遵循简单且直观的「分而治之(divide-and-conquer)」策略。如下所示:

   输入  

  • 训练集D=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m}) \right \}
  • 离散属性集A=\left \{ A_{1},A_{2},...A_{n} \right \}
  • 每个属性对应属性值的样本个数为a_{i}^{1},a_{i}^{2},...,a_{i}^{V},其中最大样本个数用a_{i}^{max}表示

   过程  

  • 创建函数TreeGenerate(D,A_{i})
  • 创建节点node
  • if(D中样本全属于同一类别A_{i}
  •         thennode=A_{i}且为叶节点)
  •         return 情形(1)
  •  end if
  • ifA=\varnothing或任意样本类别个数a_{i}^{j}=a_{i}^{max}
  •         thennode为叶节点且标记为D中样本数量最多的类a_{i}^{max}
  •         return 情形(2)
  •  end if
  • A中选择最优划分属性A_{i}//最优划分属性将在下面「2、划分选择」说明
  • for  (A_{i}的每一个属性值用A_{i}^{v}表示)
  •         do(为node生成分支,令D_{i}^{v}表示D中在A_{i}上取值为A_{i}^{v}的样本子集)
  •                 ifD_{i}^{v}=\varnothing
  •                         then(分支节点=叶节点,类别为D中样本数量最多的类a_{i}^{max}
  •                         return 情形(3)
  •                         else(分支节点=TreeGenerate(D_{i}^{v},A\setminus \left \{ A_{i}^{v} \right \})
  •                 end if
  • end for

   输出  

  • 以node为根节点的一棵决策树

显然,决策树的生成是一个递归过程。

在决策树基本算法中,有3种情形会导致递归返回:

  • 情形(1):当前结点包含的样本属于同一类别,无需划分。
  • 情形(2):当前属性集为空,或是所有样本在所有属性上取值相同,无法划分。
  • 情形(3):当前结点包含的样本集合为空,不能划分。

在(2)情形下,我们把当前结点标记为叶节点,并将其类别设定为该结点所含样本最多的类别;

在(3)情形下,同样吧当前结点标记为叶节点,但将其类别设定为其父节点所含样本最多的类别。

注意这两种情形的处理实质不同:

  • 情形(2)是在利用当前结点的后验分布。
  • 情形(3)是把父节点的样本分布作为当前结点的先验分布。

2、划分选择

从上面的决策树「输入-过程-输出」的环节中我们可以知道,其中最重要也是需要研究的部分就是——最优划分属性。

本章主要的内容则是介绍了让「划分选择」最优的方法:

随着划分过程不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别。即节点的「纯度(Purity)」越来越高。

下面我们会介绍一些度量样本集合「纯度(Purity)」比较常用的指标,通过这些指标可以增加样本「纯度」,从而使「划分选择」更优。

2.1、信息增益

2.1.1、信息熵(Information Entropy)

「信息熵」是度量样本「纯度」最常用的一种指标。

假设当前样本集:D=\left \{ \left ( x_{1},y_{1} \right ), \left ( x_{2},y_{2} \right ),..., \left ( x_{m},y_{m} \right ) \right \}的类别集合用Y表示:

Y=\left \{ Y_{1},Y_{2},...,Y_{k} \right \}

其中第Y_{j}(Y_{j}\in Y)类样本个数为y_{j}(1\leq y_{j}\leq m)\sum_{j=1}^{k}y_{j}=m,其所占比例用P_{j}(j=1,2,...,k)表示,则:

P_{j}=\frac{y_{j}}{m}

其离散属性集合用A表示:

A=\left \{ A_{1},A_{2},...,A_{n} \right \}  ,其中任意离散属性用A_{i}(A_{i}\in A)

则样本集D的「信息熵」定义为:

Ent(D)=-\sum_{j=1}^{k}P_{j}\times log_{2}^{P_{j}}

由于0< P_{j}\leq 1\sum_{j=1}^{k}P_{j}=1所以:

0< Ent(D)\leq \sum_{j=1}^{k}log_{2}^{P_{j}}Ent(D)越小,样本D的「纯度」越高。

2.1.2、信息增益(Information Gain)

假设离散属性A_{i}有V个可能的取值,分别用\left \{ A_i^{1},A_i^{2},...,A_i^{V} \right \}表示。若使用A_{i}来对样本集D进行划分,则会产生V个分支节点。其中第v个分支节点A_i^{v}包含了D中所有在属性A_{i}上取值为A_i^{v}的样本,该样本集合记为D_{i}^{v}(数据为i类别v值的样本集合)且其对应的样本数用a_{i}^{v}表示,则样本集合D_{i}^{v}的信息熵:

Ent(D_{i}^{v})=-\sum_{j=1}^{k}P_{j}\times log_{2}^{P_{j}}

考虑到不同分支节点所包含的样本数a_{i}^{v}不同,给分支结点赋予权重的规则定为:样本数越多的分支节点,影响越大。即a_{i}^{v}越大,影响越大。所以权重表示为:

g=\frac{\left | D_{i}^{v} \right |}{\left | D \right |}=\frac{a_{i}^{v}}{m}

则用属性A_{i}对样本D进行划分所获得的「信息增益(Information Gain)」为:

Gain(D,A_{i})=Ent(D)-\sum_{v=1}^{V}\frac{|D_{i}^{v}|}{|D|}Ent(D_{i}^{v})  

一般来说,信息增益Gain(D,A_{i})越大,则意味着使用属性A_{i}来进行划分数据集D获的的「纯度」越大。因此我们可以用信息增益来进行决策树的「划分属性选择」。也就是上面算法的属性选择。

f(A_{i})=\underset{A_{i}\in A}{argmax}Gain(D,A_{i})

上个式子就是求集合A=\left \{ A_{1},A_{2},...,A_{n} \right \}中所有类别的「信息增益」最大的属性公式。

较为著名的就是ID3(Iterative Dichotomiser,迭代二分器)决策树学习算法就是以「信息增益」为准则来选择划分属性。

案例:给出数据集D如下表(绿色文字是好瓜Y1,红色文字是坏瓜Y2)

西瓜数据集D
编号色泽(A1)根蒂(A2)敲声(A3)纹理(A4)脐部(A5)触感(A6)是否好瓜(Y)
x1青绿A_{1}^{1}蜷缩A_{2}^{1}浑浊A_{3}^{1}清晰A_{4}^{1}凹陷A_{5}^{1}硬滑A_{6}^{1}是Y1
x2乌黑A_{1}^{2}蜷缩A_{2}^{1}沉闷A_{3}^{2}清晰A_{4}^{1}凹陷A_{5}^{1}硬滑A_{6}^{1}是Y1
x3乌黑A_{1}^{2}蜷缩A_{2}^{1}浑浊A_{3}^{1}

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

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

相关文章

一图看懂 | 蓝卓煤炭行业解决方案

煤炭是我国能源保障的“压舱石,也是国民经济中重要的支柱产业之一无论是发电、建材、造纸、冶金、化工等工业领域都离不开煤炭近年来&#xff0c;在“双碳”及能源安全双重背景下推动智能化技术与煤炭产业的融合发展提升煤矿安全生产能力的重要性与日俱增智慧矿山的建设已逐渐成…

CentOS 7安装配置docker

CentOS 7、8安装、配置docker 这里宿主机的型号选择是centos7.9.2009的版本 1.宿主机关闭防火墙和selinux&#xff0c;配置ipv4 #设置SELinuxdisabled vim /etc/selinux/config SELinuxdisabled 查看防火墙状态&#xff1a;firewall-cmd --state 关闭防火墙&#xff1a;syst…

selenium爬取TapTap评论

上一篇写的beautifulsoup和request爬取出的结果有误。首先&#xff0c;TapTap网页以JS格式解析&#xff0c;且评论并没有“下一页”&#xff0c;而是每次加载到底部就要进行等待重新加载。我们需要做的&#xff0c;是模仿浏览器的行为&#xff0c;所以这里我们用Selenium的方式…

2024年数维杯B题完整代码和思路论文讲解与分析

2024数维杯数学建模完整代码和成品论文已更新&#xff0c;获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc# 2024数维杯数学建模B题45页论文和代码已完成&#xff0c;代码为全部问题的代码 论文包括摘要、问题重述、问题分析、模型假设、…

【项目实战】使用Github pages、Hexo如何10分钟内快速生成个人博客网站

文章目录 一.准备工作1.安装git2.安装node安装 cnpm 3.使用 GitHub 创建仓库&#xff0c;并配置 GitHub Pages0.Github Pages是什么1. 在 GitHub 上创建一个新仓库2. 创建您的静态网站3. 启用 GitHub Pages4. 等待构建完成5. 访问您的网站 二. Hexo1.什么是Hexo2.安装Hexo1. 安…

Maven 插件使用

1.spring-boot-maven-plugin 我们直接使用 maven package &#xff08;maven自带的package打包功能&#xff09;&#xff0c;打包Jar包的时候&#xff0c;不会将该项目所依赖的Jar包一起打进去&#xff0c;在使用java -jar命令启动项目时会报错&#xff0c;项目无法正常启动。…

开源相机管理库Aravis例程学习(七)——chunk-parser

开源相机管理库Aravis例程学习&#xff08;七&#xff09;——chunk-parser 简介例程代码函数说明arv_camera_create_chunk_parserarv_camera_set_chunksarv_chunk_parser_get_integer_value 简介 本文针对官方例程中的&#xff1a;05-chunk-parser做简单的讲解。并介绍其中调…

kali linux更新卡在libc6:amd64 (2.37-15)

适配于linux的windows子系统&#xff0c;wsl2&#xff0c;安装kali linux&#xff0c;运行 sudo apt update 卡在&#xff1a;Setting up libc6:amd64 (2.37-15) … 关机重启、重新修复执行也不行 解决办法&#xff1a;kill当前apt进程或者关机重启kali-linux&#xff0c;然…

【系统架构师】-选择题(十二)计算机网络

1、网闸的作用&#xff1a;实现内网与互联网通信&#xff0c;但内网与互联网不是直连的 2、管理距离是指一种路由协议的路由可信度。15表示该路由信息比较可靠 管理距离越小&#xff0c;它的优先级就越高&#xff0c;也就是可信度越高。 0是最可信赖的&#xff0c;而255则意味…

【JavaScript】内置对象 - 数组对象 ① ( 数组简介 | 数组创建 | 数组类型检测 )

文章目录 一、数组对象1、数组简介2、数组创建3、数组检测 - Array.isArray() 方法4、数组检测 - instanceof 运算符 Array 数组对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array 一、数组对象 1、数组简介 在 JavaScr…

(三十八)第 6 章 树和二叉树(二叉树的二叉线索存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrc…

Html生成自定义函数的图形(2024/5/10)

大概效果如下&#xff1a; 可以自定义函数和x的定义域。 我们可以使用数学表达式解析库来解析用户输入的函数方程&#xff0c;并根据给定的 x 区间计算函数的值&#xff0c;然后使用图表库绘制图形。 在这里&#xff0c;我将使用 math.js 库来解析数学表达式&#xff0c;并使…

探索计算之美:HTML CSS 计算器案例

本次案例是通过HTML和CSS&#xff0c;我们可以为计算器赋予独特的外观和功能&#xff1b; 在这个计算器中&#xff0c;你将会发现&#xff1a; 简洁清晰的界面设计&#xff0c;使用户能够轻松输入和查看计算结果。利用HTML构建的结构&#xff0c;确保页面具有良好的可访问性和…

【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5

功能介绍 用户端&#xff1a;精准分类、支持家政、维修、万能服务、一口价、报价、线上、各类家政服务、优惠专区、师傅入驻、商家入驻、我的需求、补费明细、我的投诉 师傅端&#xff1a;接单池、消息通知、接单管理、今日订单、师傅入驻、我的钱包、实名认证 商家端&#…

HTTPS 原理和 TLS 握手机制

HTTPS的概述与重要性 在当今数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;数据在传输过程中的安全性备受关注。HTTPS 作为一种重要的网络通信协议&#xff0c;为数据的传输提供了强有力的安全保障。它是在 HTTP 的基础上发展而来&#xff0c;通过引入数据加密机制&a…

流量分析(一)

数据库类流量分析 MySQL流量 常规操作&#xff0c;查找flag ctfhub{} 注意要选择字符集 Redis流量 查找ctfhub结果没找到 尝试把其变成十六进制继续进行查找 看到了前半段flag 接着往下看 找到了后半段的flag MongoDB流量 还是一样查找ctfhub 字符串没找到 转成十六进制也没…

OpenVoiceV2本地部署教程,苹果MacOs部署流程,声音响度统一,文字转语音,TTS

最近OpenVoice项目更新了V2版本&#xff0c;新的模型对于中文推理更加友好&#xff0c;音色也得到了一定的提升&#xff0c;本次分享一下如何在苹果的MacOs系统中本地部署OpenVoice的V2版本。 首先下载OpenVoiceV2的压缩包&#xff1a; OpenVoiceV2-for-mac代码和模型 https:…

Kitti数据集再识(官网阅读)

KITTI数据集中真值与标定参数 0. 前言 为了再研KITTI数据集及方便下载文件,特地买了梯子,心疼人民币QWQ~555 1. KITTI-home Welcome to the KITTI Vision Benchmark Suite! 我们利用我们的自动驾驶平台开发新颖的具有挑战性的真实世界计算机视觉基准。我们感兴趣的任务是…

interview_bak

flink内存管理 JVM 存在的几个问题: Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(1/8字节)就够了。Full GC 会极大地影响性能,尤其是为了处理更大数据而开了很大…

图片转图标(ICO)的工具软件

目前常用的ICO转换方式大多都是网页在线转换&#xff0c;没网就无法使用了。自己编写了一款小软件&#xff0c;可以将各种格式图片转为ICO图标。 目前支持PNG,BMP,JPG,JPEG,GIF等格式的图片转换成ICO&#xff0c;支持的尺寸有常用的16*16&#xff0c;24*24&#xff0c;32*32&am…