决策树 | 分类树回归树:算法逻辑

目录

  • 一. 决策树(Decision Tree)
    • 1. 决策树的构建
      • 1.1 信息熵(Entropy)
        • 1.1.1 信息量&信息熵 定义
        • 1.1.2 高信息熵&低信息熵 定义
        • 1.1.3 信息熵 公式
      • 1.2 信息增益(Information Gain)
        • 1.2.1 信息增益的计算
        • 1.2.2 小节
    • 2. 小节
      • 2.1 算法分类
      • 2.2 决策树算法分割选择
      • 2.3 决策树算法的停止条件
      • 2.4 决策树算法的评估

本篇我们来开始新的话题——决策树
在正式开始讲解之前,我们先来看一个数据集:
在这里插入图片描述

上图展示了银行用于决定是否放贷的数据集。银行通过分析用户特征,预测债务偿还能力,从而决定是否放贷;

针对上面的数据,我们先给出一个决策树的模型:
在这里插入图片描述

有了这个模型后,当有新数据进入时,我们可以通过数据特征来预测用户是否有能力偿还债务

那么,我们的问题是,怎么构建上图模型?

一. 决策树(Decision Tree)

1. 决策树的构建

对于决策树的构建,我们的主要问题是:

  • 首先用哪个特征进行判断呢,即:树的根节点应该是哪个特征?
  • 第二层的节点又应该怎样确定呢?

对于节点选择问题,很明显,我们希望最有效(区分度最大)的特征作为根节点,用同样的思路,不断判断区分度最大的特征,从而依次得到下层的节点;如此反复,我们就会得到一个有效的决策树

那么,我们怎样衡量一个划分的“有效性”呢?

1.1 信息熵(Entropy)

1.1.1 信息量&信息熵 定义
  • 信息量:如果一个事件发生的概率越大, 那么该事件所蕴含的信息量越少
        比如:“地球的自转与公转” ,因为是确定事件,所以不携带任何信息量
  • 信息熵:一个系统越是有序,信息熵就越低;一个系统越是混乱,信息熵就越高
        人话版:信息熵是一个系统的有序程度的度量

信息熵用来描述系统信息量的不确定度

这里我们举一个例子:
A={1,1,1,1,1,1,2,2,2,2}
B={1,2,3,4,5,6,7,8,9,10}

A集合中元素单一化,即信息熵低(越确定,信息熵越低)
B集合中元素多样化,即信息熵高(越不确定,信息熵越高)

1.1.2 高信息熵&低信息熵 定义
  • High Entropy(高信息熵):随机变量X是均匀分布的,各种取值情况是等概率出现的

  • Low Entropy(低信息熵):随机变量X的各种取值不是等概率出现的

     对于高信息熵与低信息熵,我们讨论的前提是:
     	 1. 都有ABCD四种情况
     	 2. ABCD等概率时,信息熵高 
    

如下图:
在这里插入图片描述

左图信息熵高于右图
1.1.3 信息熵 公式

H ( X ) = − ∑ i = 1 m p i log ⁡ 2 ( p i ) H(X)=-\sum_{i=1}^{m}p_{i} \log_{2}({p_{i}}) H(X)=i=1mpilog2(pi)

公式解释:
参数:
      p i p_{i} pi表示第i个元素出现的概率
H ( X ) H(X) H(X)信息熵的大小:

  1. 与m的个数有关
  2. 与概率p是否平均有关

解释第一条:m越多,则系统越混乱,熵越大
解释第二条:p越平均,信息熵越大


例子:
存在一组数据:0.1,0.1,0.1,0.7,0.7,0.7
第一种分法:

(0.1,0.1,0.1)、(0.7,0.7,0.7)

第二种分法:

(0.1,0.1,0.7)、(0.7,0.7,0.1)

最直接的分法为第一种,该分法信息熵为0

1.2 信息增益(Information Gain)

在了解过熵的概念后,我们就可以计算第一次划分得到的信息增益

  • 信息增益:用划分之前系统的“熵”减去划分之后系统的“熵”,就是这次划分所获得的“信息增益”

一次划分所获得的“信息增益”越大,则该划分就越有效

1.2.1 信息增益的计算
	简单来说,信息增益就是计算增益的加权和

针对开篇给出的数据集,我们对树的构建方式给出具体计算解释:

系统未划分时:
系统的信息熵(偿还能力值:7是,3否)
− 3 10 log ⁡ 2 3 10 − 7 10 log ⁡ 2 7 10 = 0.88 -\frac{3}{10} \log_{2}{\frac{3}{10} } -\frac{7}{10} \log_{2}{\frac{7}{10} }=0.88 103log2103107log2107=0.88
系统划分时:

  1. 按照拥有房产情况划分
    − 0 4 log ⁡ 2 0 4 − 4 4 log ⁡ 2 4 4 = 0.0 -\frac{0}{4} \log_{2}{\frac{0}{4} } -\frac{4}{4} \log_{2}{\frac{4}{4} }=0.0 40log24044log244=0.0
    − 3 6 log ⁡ 2 3 6 − 3 6 log ⁡ 2 3 6 = 1.0 -\frac{3}{6} \log_{2}{\frac{3}{6} } -\frac{3}{6} \log_{2}{\frac{3}{6} }=1.0 63log26363log263=1.0
    若按照该特征进行划分,信息增益为:
    g a i n = 0.88 − 4 10 ∗ 0.0 − 6 10 ∗ 1.0 = 0.28 gain = 0.88-{\frac{4}{10}}*0.0-{\frac{6}{10} }*1.0=0.28 gain=0.881040.01061.0=0.28

  2. 按照婚姻状态划分
    − 2 4 log ⁡ 2 2 4 − 2 4 log ⁡ 2 2 4 = 1.0 -\frac{2}{4} \log_{2}{\frac{2}{4} } -\frac{2}{4} \log_{2}{\frac{2}{4} }=1.0 42log24242log242=1.0
    − 0 3 log ⁡ 2 0 3 − 3 3 log ⁡ 2 3 3 = 0.0 -\frac{0}{3} \log_{2}{\frac{0}{3} } -\frac{3}{3} \log_{2}{\frac{3}{3} }=0.0 30log23033log233=0.0
    − 1 3 log ⁡ 2 1 3 − 2 3 log ⁡ 2 2 3 = 0.918 -\frac{1}{3} \log_{2}{\frac{1}{3} } -\frac{2}{3} \log_{2}{\frac{2}{3} }=0.918 31log23132log232=0.918
    若按照该特征进行划分,信息增益为:
    g a i n = 0.88 − 4 10 ∗ 1.0 − 3 10 ∗ 0.0 − 3 10 ∗ 0.918 = 0.21 gain =0.88-{\frac{4}{10}}*1.0-{\frac{3}{10} }*0.0-{\frac{3}{10}}*0.918=0.21 gain=0.881041.01030.01030.918=0.21

  3. 按照年收入划分

针对连续值,我们希望划分可以尽可能的降低系统混乱程度,具体可能出现的分法如下:
在这里插入图片描述

思考:为什么划分数值直接跳过了70?


上面,为了得到符合目标的树,我们分别计算了不同特征作为根节点的信息增益,即

g a i n ( 房产 ) = 0.28 gain(房产) = 0.28 gain(房产)=0.28
g a i n ( 婚姻 ) = 0.21 gain(婚姻)=0.21 gain(婚姻)=0.21
g a i n ( 收入 ) = 0.39 gain(收入)=0.39 gain(收入)=0.39

因此,选择信息增益最大的收入=95作为我们第一次划分划分条件

那么,我们就会得到:
在这里插入图片描述
对于第一个节点 ≥ 95 \ge95 95信息熵为0,不需要继续划分
对于第二个节点 < 95 <95 <95信息熵大于0,需要继续划分

即,重复上述计算过程,就可以得到一个完整的决策树

1.2.2 小节

样本集合D中含有k类样本,每个类别所占比例分别为 p k ( k = 1 , 2 , 3 , . . . . ) p_{k}(k=1,2,3,....) pk(k=1,2,3,....),那么集合D的信息熵为:
H ( D ) = − ∑ k = 1 k p k log ⁡ 2 p k H(D)=-\sum_{k=1}^{k}p_{k}\log_{2}{p_{k}} H(D)=k=1kpklog2pk

假设使用离散特征a对集合D进行划分,且特征a有V个取值,那么信息增益为:
g a i n ( D , a ) = H ( D ) − ∑ v = 1 V p k ∣ D v ∣ ∣ D ∣ H ( D v ) gain(D,a)=H(D)-\sum_{v=1}^{V}p_{k}\frac{\left | D_{v} \right | }{|D|} H(D^{v}) gain(D,a)=H(D)v=1VpkDDvH(Dv)

2. 小节

决策树算法是一种“贪心”算法策略,只考虑当前,未见得是全局最优,不能进行回溯操作(吃葡萄永远只吃最好的)

	决策树是在已知各种情况发生概率的基础上,通过构建决策树来进行分析的一种方式;
		决策树:
			一种树形结构
			每个内部节点表示一个属性的测试
			每个分支表示一个测试输出
			每个叶节点代表一种预测类别
	直观应用概率分析的图解法

在这里插入图片描述

2.1 算法分类

决策树是一种常用的有监督算法;从根节点开始,测试待分类项中对应的特征属性,并按照值选择输出分支,直到叶子节点:

  1. 将叶子节点存放的类别作为决策结果(分类树)

  2. 将叶子节点存放的作为决策结果(回归树)

     分类树作用:
     	分类标签值
     回归树作用:
     	预测连续值
    

2.2 决策树算法分割选择

根据特征属性的类型不同,在构建决策树的时候,采用不同的方式:

	属性是离散值时,在不要求生成二叉决策树的前提下,一个属性就是一个分支
	属性是离散值时,在要求生成二叉决策树的前提下,分支为“属于此子集”和“不属于此子集”
	属性是连续值时,可以确定一个值作为分裂点,分别按照大于分裂点和小于分裂点生成两个分支

2.3 决策树算法的停止条件

决策树构建是一个递归的过程,如果不给予停止条件,会一直划分,直至叶子节点熵为0;这里我们给出三种常用的停止方式:

	1. 当每个叶子节点只有一种类型时,停止构建;即熵为0 ,节点非常纯(会导致过拟合,一般不用)
	2. 给定树深度值,同时限制叶子节点样本数量小于某个阈值时,停止构建;
	   	   此时对于不纯的节点,采用最大概率类别作为对应类型
	3. 限制分裂前后叶子节点中特征数目 

2.4 决策树算法的评估

对于分类树:

	1. 采用混淆矩阵,即计算准确率,召回率,精确率...
	2. 采用叶子节点的不纯度总和来评估效果,在确定树深和叶子节点个数的前提下,C(T)越小越好

C ( T ) = − ∑ t = 1 l e a f ∣ D t ∣ D H ( t ) C(T) = -\sum_{t=1}^{leaf} \frac{|D^{t}|}{D}H(t) C(T)=t=1leafDDtH(t)


感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!

祝愉快🌟!


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python应用数值方法:工程与科学实践指南

信息技术时代的挑战与机遇 我们正处在一个信息技术高速发展的时代&#xff0c;这是一个科技与创新蓬勃发展的时代。大数据与人工智能的崛起&#xff0c;正以前所未有的速度推动着传统技术的智能化变革。这种变革不仅带来了前所未有的机遇&#xff0c;也对科学和工程技术人员的…

什么时候要分库分表

对于一个日活用户在百万数量级的商城来说&#xff0c;每天产生的订单数量可能在百万级&#xff0c;特别在一些活动促销期间&#xff0c;甚至上千万。 假设我们基于单表来实现&#xff0c;每天产生上百万的数据量&#xff0c;不到一个月的时间就要承受上亿的数据&#xff0c;这…

水库大坝安全监测中需要注意的事项

随着经济和社会的发展&#xff0c;水资源的需求也在不断增加。因此&#xff0c;建设水库已成为保障水资源的主要方式之一。然而&#xff0c;随着水库规模的增大和工程的复杂性的增加&#xff0c;水库大坝的安全问题也日益引起重视。为此&#xff0c;需要对水库大坝进行安全监测…

2024年云服务器ECS价格表出炉——阿里云

2024年阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核4G服务…

变量的本质和命名规则

变量的本质 内存:计算机中存储数据的地方&#xff0c;相当于一个空间变量本质:是程序在内存中申请的一块用来存放数据的小空间 变量命名规则与规范 规则: 不能用关键字 关键字:有特殊含义的字符&#xff0c;JavaScript 内置的一些英语词汇。例如:let、var、if、for等>只…

2024阿里技术官重磅推出“Java进阶必备宝典” 5大专题 6000字解析

5.JVM实战 CPU占用过高案例实战 内存占用过高案例实战 15种方式编写高效优雅Java程序实战 6.JVM底层技术 亿级流量高井发下GC预估与调优 JHSDB工具透视L ambda底层实现 JVM(HotSpot)核心源码解读 JVM核心模块(GC算法)手写实战 核心三&#xff1a;网络编程与高效IO 1.网络…

人形双臂机器人重大进展!顶刊公布业界首个双臂通用协同操作架构

图1&#xff1a;人居环境下的人形双臂机器人系统 通用人形机器人作为近年来机器人与AI交叉领域的研究热点和技术竞争高地&#xff0c;因其具备在非结构化人居环境中承担各种琐碎家务的潜力而得到广泛关注。人形双臂系统直接承载着人形机器人操作任务的执行能力&#xff0c;通用…

使用ai智能工具,让短视频超强变现。利用人工智能创作短视频

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 以下文章简单介绍如何利用人工智能来制作短视频&#xff0c;来实现资源变现。 一、…

ARM TrustZone技术解析:构建嵌入式系统的安全扩展基石

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-LOdvohfCEnd8eKyd {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

阿里云服务器租用费用价格表(2024年新版报价)

2024阿里云服务器优惠活动政策整理&#xff0c;阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;云服务器8核…

C#制作软件时窗体的弹出与嵌入

文章目录 一、窗体的弹出二、窗体的嵌入 一、窗体的弹出 这里面我们以Windows窗体应用程序为例&#xff0c;这里面达到的效果如下&#xff1a; 点击指定按钮&#xff0c;弹出目标窗口。接下来我们看具体操作&#xff1a; 这是我们的主窗体&#xff1a; 接下来我们需要在这个…

表结构设计

三个范式&#xff1a; 一范式要求所有属性都是不可分的基本数据项&#xff1b;二范式解决部分依赖&#xff1b;三范式解决传递依赖。 真实的业务场景是工程实现&#xff0c;表结构设计做好以下几点就已经足够&#xff1a; 每张表一定要有一个主键&#xff08;方法有自增主键…

285K Star,一个让开发变得更简单的 GitHub 项目

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 导语 公共 API&#xff08;Application Programming Interface&…

【框架学习 | 第六篇】SpringBoot基础篇(快速入门、自动配置原理分析、配置文件、整合第三方技术、拦截器、文件上传/下载、访问静态资源)

文章目录 1.SpringBoot简介1.1原有Spring优缺点分析1.1.1Spring优点1.1.2Spring缺点 1.2SpringBoot概述1.2.1SpringBoot解决上述Spring的缺点1.2.2SpringBoot特点1.2.3SpringBoot核心功能 2.SpringBoot快速入门2.1代码实现2.1.1创建Maven工程2.1.2添加SpringBoot的起步依赖2.1.…

HTML CSS入门:从基础到实践

&#x1f310; HTML & CSS入门&#xff1a;从基础到实践 &#x1f3a8; &#x1f4d6; 引言 HTML和CSS是构建网页的基石。HTML&#xff08;超文本标记语言&#xff09;用于创建网页内容&#xff0c;而CSS&#xff08;层叠样式表&#xff09;则用于美化这些内容。无论你是…

【Python】成功解决NameError: name ‘cv2‘ is not defined

【Python】成功解决NameError: name ‘cv2’ is not defined &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您…

公众号怎么转移主体

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;长期以来&#xff0c;由于部分公众号在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者公众号主体发生合并、分立或业务调整等现实状况&#xff0c;在公众号登记主体不能对应实际运营人的情况下&#xff0…

单据分页的实现

单据分页的实现 1. AceWzcgfkjtMaintainProxy.java package nc.ui.jych.wzcgfkjt.ace.serviceproxy;import nc.bs.framework.common.NCLocator; import nc.itf.jych.IWzcgfkjtMaintain; import nc.ui.uif2.components.pagination.IPaginationQueryService; import nc.vo.jych.…

Python小设计

1. 五个PPT上的界面打印【print、input函数】 &#xff08;1&#xff09;英雄商城登陆界面 print(英雄联盟商城登录界面 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~…

请说一下卷积神经网络里的特征图和感受野怎么计算?VGG网络的特点?如何解释?

请说一下卷积神经网络里的特征图和感受野怎么计算&#xff1f; 特征图的计算 首先要明确什么是特征图&#xff1f; 特征图是卷积层输出的二维数组&#xff0c;每个元素表示一个特定区域的特征。特征图的大小取决于输入图像的大小、卷积核的大小、步幅&#xff08;stride&…
最新文章