决策树算法原理

目录

一:介绍

二:算法原理

1.熵和信息熵

2.信息增益

 三决策树分裂指标

1.信息熵分裂:

2.Gini系数(CART)

3.信息增益率


一:介绍

决策树( Decision Tree) 又称为判定树,是数据挖掘技术中的一种重要的分类与回归方法,它是一种以树结构(包括二叉树和多叉树)形式来表达的预测分析模型。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。

一般,一棵决策树包含一个根节点,若干个内部结点和若干个叶结点。

叶结点对应于决策结果,其他每个结点对应于一个属性测试。每个结点包含的样本集合根据属性测试的结果划分到子结点中,根结点包含样本全集,从根结点到每个叶结点的路径对应了一个判定的测试序列。决策树学习的目的是产生一棵泛化能力强,即处理未见示例强的决策树。

使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

二:算法原理

1.熵和信息熵

熵:物理意义是体系混乱程度的度量。

信息熵:表示事物不确定性的度量标准,可以根据数学中的概率计算,出现的概率就大,出现的机会就多,不确定性就小(信息熵小)。

2.信息增益

信息增益是知道了某个条件后,事件的不确定性下降的程度。写作 g(X,Y)。它的计算方式为熵减去条件熵

举个栗子:现在又一个数据集E和特征A

熵的计算:

其中Ck是这个数据集中有多少类样本,D 为E中有多少个数据集

条件熵的计算:

 

信息增益的计算:

信息增益越大,使用特征A来划分获得的“纯度提升”越大。因此我们可以用信息增益来进行决策树属性选择,ID3决策树学习算法就是以信息增益为准则来选择划分属性的

 三决策树分裂指标

1.信息熵:

在信息世界中,熵越高,则能传输越多的信息,熵越低,传输的信息越少。比如我们在买手机的时候,我们一般要看这个手机的摄像头像素、屏幕大小、运行内存RAM、机身容量ROM、CPU等,当要考虑的因素越多,不确定因素就越大,获取的信息越多,也就是熵越大。所以信息量=熵=不确定性。

2.Gini系数(CART)

基尼系数是指国际上通用的用来衡量一个国家或地区居民收入差距的常用指标。

国际上惯例:0.2以下为收入绝对平均,0.2-0.3为收入比较平均,0.3-0.4为收入相对合理,0.4-0.5收入差距较大,0.5以上为收入悬殊。基尼系数的实际值只能介于0-1之间,越小越平均,越大越不平均,国际上把0.4作为贫富差距的警戒线

在这里,基尼系数越小,代表集合中的数据越纯,我们可以计算分裂前的值在按照某个维度对数据集进行划分。

3.信息增益率

 信息增益率在信息增益的基础熵增加了惩罚项,惩罚项是特征的固有值,

写作gr(X,Y)。定义为信息增益除以特征的固有值

 

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

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

相关文章

你如何看待市场波动性的?

实际上,波动性并不总是负面的,它有时也孕育着快速获利的机会。 对于长期投资者而言,市场波动(尤其与熊市相伴时)往往是一个优势。它允许投资者拓展并多样化投资组合,以较低的价格购入投资工具,…

【嵌入式Linux】<总览> 多进程(更新中)

文章目录 前言 一、进程的概念与结构 1. 相关概念 2. 内核区中的进程结构 3. 进程的状态 4. 获取进程ID函数 二、进程创建 1. fork和vfork函数 2. 额外注意点 3. 构建进程链 4.构建进程扇 三、进程终止 1. C程序的启动过程 2. 进程终止方式 四、特殊的进程 1. 僵…

免费体验软件开发生产线 CodeArts

软件开发生产线 CodeArts 一站式、全流程、安全可信的软件开发生产线,开箱即用,内置华为多年研发最佳实践,助力效能倍增和数字化转型 免费试用体验版套餐,50人内免费试用 功能特性 Scrum和看板需求模型 代码托管 代码检查&am…

GIS开发如何高质量就业?这几点是关键!

高质量就业,包含薪资和其他福利待遇,在讨论如何高质量就业之前,我们先来看下GIS开发岗位的前景、薪资水平如何?最后讨论一下GIS开发工程师到底需要学习哪些技术? 01 GIS开发岗位呈持续上升趋势 从GIS开发岗位趋势也可…

Java知识点整理 11— 后端 Spring Boot 万用初始化模板使用

一. 模块简介 annotation:自定义注解aop:请求日志和权限校验common:通用类config:配置类constant:常量 controller:控制层esdao:方便操作ESexception:异常类job:定时任务…

Facebook广告投放的6个误区,老手也会犯

一、没有目标 无论是投放哪种产品,我们始终都需要明确,广告的目标是什么。 因为Facebook广告的形式和类型,也经常会有变化,例如近期Facebook推出的360视频广告,以及之后即将推出的LIVE,Mid-Roll视频插播广…

美国电商选品、大促、趋势、案例,掌慧科技首期NewsBreak沙龙干货满满

今年第一季度,美国电商销售额达到了2681.2亿美元,相较上一年同期的2471.8亿美元增长8.5%。同时,该季度美国电商销售额在零售业总销售额中的占比为22.2%,高于上一年同期的21.2%。美国在2023年下半年通胀得到良好控制,20…

CleanMyMac2024破解版下载链接!你的Mac清洁利器!

嘿,亲爱的朋友们,今天我要跟大家分享一款我最近超级依赖的电脑清理神器—CleanMyMac2024破解版!如果你还在为电脑运行缓慢、存储空间不够而烦恼,那你一定不能错过它! 🔥 为什么选择CleanMyMac2024破解版&am…

声波的种类

声波可以根据不同的特性进行分类,主要包括频率和传播方式两个方面: ### 按频率分类: 1. **次声波**:频率低于20Hz的机械波,这类波通常不能被人耳感知。 2. **可闻声波**:频率在20Hz至20kHz之间的机械波&am…

C++ | Leetcode C++题解之第160题相交链表

题目: 题解: class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if (headA nullptr || headB nullptr) {return nullptr;}ListNode *pA headA, *pB headB;while (pA ! pB) {pA pA nullptr ? headB : p…

【fiddler】fiddler抓取websocket

1.先了解websocket流 下载4.5版本以上的fiddler 如图所示:在rules--customize rules 里面插入以下代码: static function OnWebSocketMessage(oMsg: WebSocketMessage) { // Log Message to the LOG tab FiddlerApplication.Log.LogString(oMsg.ToStr…

鸿蒙开发下拉选项框在表单递交的处理

下拉选项框 <select name"identity"><option value"0">顾 客</option><option value"1">行 政</option><option value"2" >保 洁</option></select>在表单数据中没有找到identit…

Win11 Docker Desktop下部署springboot jar

1.将springboot程序使用maven package打包出jar。 2.创建dockerfile&#xff0c;为了本地打包时方便&#xff0c;这里的dockerfile有小变动。 # Docker Desktop下部署springboot jar FROM openjdk:8 VOLUME /tmp EXPOSE 8601 ARG JAR_FILEtarget/webflux-hello-0.0.1-SNAPSHO…

AVL树插入详解

1.什么是AVL树 二叉搜索树可以提高搜索的效率&#xff0c;但是如果数据有序或者接近有序&#xff0c;就会退化为单边树&#xff0c;查找效率相当于在顺序表中查找数据&#xff0c;时间复杂度会退化到O(n)。AVL树解决了这个问题&#xff0c;通过保证每个节点的左右子树高度之差…

重学java 83.Java注解

As a failure,I met my last sound. —— 24.6.24 一、注解的介绍 1.引用数据类型: 类、数组、接口、枚举、注解 jdk1.5版本的新特性 一个引用数据类型 和类,接口,枚举是同一个层次的 引用数据类型:类、数组、接口、枚举、注解 2.作用: ① 说明&#xff1a;对代码进行说明,生…

elementui组件库实现电影选座面板demo

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Cinema Seat Selection</title><!-- 引入E…

前端中的深拷贝

第1部分&#xff1a;引言 深拷贝&#xff1a;前端开发的隐形守护者 在前端开发的世界里&#xff0c;数据的传递和状态的管理是构建用户界面的基础。然而&#xff0c;数据的复制常常被忽视&#xff0c;直到它引发bug&#xff0c;我们才意识到它的重要性。深拷贝&#xff0c;这…

122.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件物品箱的管理

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

【论文精读】ViM: Out-Of-Distribution with Virtual-logit Matching 使用虚拟分对数匹配的分布外检测

文章目录 一、文章概览&#xff08;一&#xff09;问题来源&#xff08;二&#xff09;文章的主要工作&#xff08;三&#xff09;相关研究 二、动机&#xff1a;Logits 中缺失的信息&#xff08;一&#xff09;logits&#xff08;三&#xff09;基于零空间的 OOD 评分&#xf…

你还在手动操作仓库?这款 CLI 工具让你效率飙升300%!

前言 作为一名开发者&#xff0c;我经常会在 GitHub 和 Gitee 上 fork 各种项目。时间一长&#xff0c;这些仓库就会堆积如山&#xff0c;变成了“垃圾仓库”。每次打开代码托管平台&#xff0c;看到那些不再需要的仓库&#xff0c;我的强迫症就会发作。手动一个一个删除这些仓…