统计学习算法——决策树
内容来自B站Up主:风中摇曳的小萝卜https://www.bilibili.com/video/BV1ar4y137GD,仅为个人学习所用。
问题引入
有15位客户向某银行申请贷款,下面是他们的一些基本信息,类别列表示是否通过贷款申请,是表示通过贷款申请,否表示未通过贷款申请。

某银行想,这样做工作量太大,有没有方法能够快速判断一个用户的贷款申请通过不通过呢?
决策树
以工作为标准进行划分,发现有工作的全部被批准,而没有工作的只有4位被批准,得出结论:有工作的被批准,这显然和样本结果不符合。

若使用两个标准,首先考虑工作因素划分,然后将分类不当的继续按照信誉划分,如下图

得出结论:客户有工作可以直接批准;若没有工作,继续查看其信誉。若信誉非常好,可以批准,否则拒绝。这就是构建了一个决策树。
虽然按照决策树进行判断很方便,但是如何确定按什么标准进行划分呢?
基尼系数
基尼系数是一种衡量数据集纯度的指标。基尼系数越小,表明该节点包含的样本越可能属于同一类别,纯度越高;基尼系数越大,表明样本的类别越混杂,纯度越低。
计算公式为: G i n i ( D ) = 1 − ∑ k = 1 K p k 2 Gini(D)=1-\sum_{k = 1}^{K}p_k^2 Gini(D)=1−k=1∑Kpk2
用1减去所有事件概率的平方。本例中,代入公式有 1 − p ( 批准 ) 2 − p ( 不批准 ) 2 1-p(批准)^2-p(不批准)^2 1−p(批准)2−p(不批准)2。

- 当批准的概率,被批准的概率分别为1和0时,基尼系数为0;
- 当批准的概率,被批准的概率分别为0和1时,基尼系数为0;
- 当批准的概率,被批准的概率分别为0.5和0.5时,基尼系数为0.5。

由此图可以看出,当一定被批准或拒绝时,基尼系数为0;当批准或拒绝不确定,概率为0.5时候,基尼基数达到最大。一般选择基数小的作为决策树下一级分类的标准。
对于本例,不考虑任何标准,只看最后的结果。15份申请中有9份通过,6份未通过。计算基尼系数

根据上图,这是个很大的值,说明数据类似于随机生成。
考虑有工作的客户,5位客户有工作,5人通过,0人未通过,计算基尼系数

考虑没有工作的客户,10位无工作,4位通过,6人未通过,计算基尼系数

计算以工作为标准的基尼系数,进行加权平均计算

同理,计算其他标准的基尼系数

发现,以房子为标准,基尼系数最小,按照此标准来构建决策树。

左侧被分类很好,继续分类右边。
接下来按照无房子继续计算概率。无房子的客户有9位,其中被批准的3位,未通过的6位,计算基尼系数

无房子且有工作的3位,通过批准的3位,未通过批准的0位;无工作的6位,通过批准的0位,未通过批准的6位。计算工作的基尼系数
G i n i ( 工作,是 ) = 1 − ( 3 3 ) 2 − 0 = 0 Gini(工作,是)=1-(\frac{3}{3})^2-0=0 Gini(工作,是)=1−(33)2−0=0
G i n i ( 工作,否 ) = 1 − ( 6 6 ) 2 − 0 = 0 Gini(工作,否)=1-(\frac{6}{6})^2-0=0 Gini(工作,否)=1−(66)2−0=0
G i n i ( 工作 ) = 3 9 ∗ 0 + 6 9 ∗ 0 = 0 Gini(工作)=\frac{3}{9}*0+\frac{6}{9}*0=0 Gini(工作)=93∗0+96∗0=0
无房子,信誉非常好的1位,通过批准的1位,未通过批准的0位;信誉好的4位,通过批准的2位,未通过批准的2位;信誉一般的4位,通过批准的0位,未通过批准的4位。计算基尼系数
G i n i ( 信誉,非常好 ) = 1 − ( 1 1 ) 2 − 0 = 0 Gini(信誉,非常好)=1-(\frac{1}{1})^2-0=0 Gini(信誉,非常好)=1−(11)2−0=0
G i n i ( 信誉,好 ) = 1 − ( 2 4 ) 2 − ( 2 4 ) 2 = 0.5 Gini(信誉,好)=1-(\frac{2}{4})^2-(\frac{2}{4})^2=0.5 Gini(信誉,好)=1−(42)2−(42)2=0.5
G i n i ( 信誉,一般 ) = 1 − ( 4 4 ) 2 − 0 = 0 Gini(信誉,一般)=1-(\frac{4}{4})^2-0=0 Gini(信誉,一般)=1−(44)2−0=0
G i n i ( 信誉 ) = 1 9 ∗ 0 + 4 9 ∗ 1 2 + 4 9 ∗ 0 = 0.22 Gini(信誉)=\frac{1}{9}*0+\frac{4}{9}*\frac{1}{2}+\frac{4}{9}*0=0.22 Gini(信誉)=91∗0+94∗21+94∗0=0.22
通过上述计算可知,应该选择是否有工作作为下一级的分类标准。

这是由基尼系数得出的决策树,称为CART决策树。
生成的决策树一般是二叉树。
决策树的生成容易造成过拟合问题,需要进行剪枝。
相关文章:
统计学习算法——决策树
内容来自B站Up主:风中摇曳的小萝卜https://www.bilibili.com/video/BV1ar4y137GD,仅为个人学习所用。 问题引入 有15位客户向某银行申请贷款,下面是他们的一些基本信息,类别列表示是否通过贷款申请,是表示通过贷款申…...
基于网络爬虫技术的网络新闻分析
文末附有完整项目代码 在信息爆炸的时代,如何从海量的网络新闻中挖掘出有价值的信息呢?今天就来给大家分享一下基于网络爬虫技术的网络新闻分析的实现过程。 首先,我们来了解一下系统的需求。我们的目标是能够实时抓取凤凰网新闻、网易新闻、…...
51_Lua面向对象编程
面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。像C++、Java、Objective-C、Smalltalk、C#、Ruby等编程语言都支持面向对象编程。 1.面向对象编程特性 面向对象编程是一种编程范式,它使用“对象”来设计软件。对象是数据和行为的封装单元…...
关于在 Kotlin DSL 中,ndk 的配置方式
在 Kotlin DSL 中,ndk 的配置方式有所不同,取决于 Android Gradle 插件版本。ndk { abiFilters(…) } 在 Kotlin DSL 中实际上是 externalNativeBuild 的一部分,需要通过正确的上下文调用。 错误代码: ndk {abiFilters("ar…...
【论文阅读+复现】High-fidelity Person-centric Subject-to-Image Synthesis
以人物为中心的主体到图像的高保真合成,CVPR2024 code:CodeGoat24/Face-diffuser: [CVPR2024] Official implementation of High-fidelity Person-centric Subject-to-Image Synthesis. paper:2311.10329 背景 研究问题:这篇文…...
Spring Boot 应用开发入门
一、Spring Boot简介 Spring Boot 是一个基于 Spring 框架的开源 Java 基础框架,它简化了基于 Spring 的应用开发。Spring Boot 提供了一种快速、便捷的方式来创建独立、生产级的基于 Spring 框架的应用程序。它通过提供一系列的“启动器”依赖,帮助开发…...
【C语言】字符串函数详解
文章目录 Ⅰ. strcpy -- 字符串拷贝1、函数介绍2、模拟实现 Ⅱ. strcat -- 字符串追加1、函数介绍2、模拟实现 Ⅲ. strcmp -- 字符串比较1、函数介绍2、模拟实现 Ⅳ. strncpy、strncat、strncmp -- 可限制操作长度Ⅴ. strlen -- 求字符串长度1、函数介绍2、模拟实现(…...
【Vim Masterclass 笔记14】S07L29 + L30:练习课08 —— Vim 文本对象同步练习(含点评课内容)
文章目录 L29 Exercise 08 - Text Objects1 训练目标2 操作指令2.1. 打开 textobjectspractice.txt 文件2.2. 单词对象练习 Word Objects2.3. 区块对象 ( ) 练习 Block Object ( )2.4. 引用字符串练习 Quoted Strings2.5. 区块对象 [ ] 练习 Block Object [ ]2.6. 区块对象 <…...
非PHP开源内容管理系统(CMS)一览
在现代网站开发中,内容管理系统(CMS)是不可或缺的工具。虽然许多广泛使用的CMS(如WordPress和Joomla)是基于PHP开发的,但其他编程语言同样诞生了许多优秀的开源CMS,适用于不同需求和技术栈的项目…...
WEB 攻防-通用漏-XSS 跨站脚本攻击-反射型/存储型/DOMBEEF-XSS
XSS跨站脚本攻击技术(一) XSS的定义 XSS攻击,全称为跨站脚本攻击,是指攻击者通过在网页中插入恶意脚本代码,当用户浏览该网页时,恶意脚本会被执行,从而达到攻击目的的一种安全漏洞。这些恶意脚…...
SQLAlchemy -批量插入时忽略重复
PostgreSQL 有一个很棒的INSERT() ON CONFLICT DO NOTHING子句,您可以将其与 SQLAlchemy 一起使用: from sqlalchemy.dialects.postgresql import insert session.execute(insert(MyTable).values(my_entries).on_conflict_do_nothing())MySQL 有类似的INSERT IGNORE子句,但…...
1月13日学习
[HITCON 2017]SSRFme 直接给了源代码,题目名称还是ssrf,那么该题大概率就是SSRF的漏洞,进行代码审计。 <?php// 检查是否存在 HTTP_X_FORWARDED_FOR 头,如果存在,则将其拆分为数组,并将第一个 IP 地址…...
Steam个人开发者注册备记
具体的注册过程有很多同志已经写过了,这里只写一点自己搞得有点费劲的地方。有点久了记得也不多了。 1.姓名用汉语拼音,参考护照上的,一般是Zhang Sanli这样的格式,姓一个单词,名字一个单词(不管1个字还是…...
django在线考试系统
Django在线考试系统是一种基于Django框架开发的在线考试平台,它提供了完整的在线考试解决方案。 一、系统概述 Django在线考试系统旨在为用户提供便捷、高效的在线考试环境,满足教育机构、企业、个人等不同场景下的考试需求。通过该系统,用…...
Laravel 中 Cache::remember 的基本用途
在 Laravel 中,Cache::remember 方法用于缓存数据,以提高应用程序的性能。当需要从数据库或其他较慢的数据源中检索数据时,可以使用 Cache::remember 来检查请求的数据是否已经被缓存。如果数据已缓存,则直接从缓存中读取…...
前端进程和线程及介绍
前端开发中经常涉及到进程和线程的概念,特别是在浏览器中。理解这两个概念对于理解浏览器的工作机制和前端性能优化非常重要。以下是详细介绍: 1. 什么是进程和线程? 进程: 是操作系统分配资源的基本单位。一个程序启动后…...
OpenGL —— 基于Qt的视频播放器 - ffmpeg硬解码,QOpenGL渲染yuv420p或nv12视频(附源码)
运行效果 工程说明 源码 vertex.glsl...
Vue Router
Vue Router4 匹配 Vue3;Vue Router3 匹配 Vue2。 Vue Router 是 Vue.js 官方的路由管理器。Vue Router 基于路由和组件的映射关系,监听页面路径的变化,渲染对应的组件。 安装: npm install vue-router。 基本使用: …...
【黑灰产】人工查档业务产业链
2024年“查档”类型泄露事件快速上涨,涉及电商、外卖、社交、快递等行业数据。 近年来,陆续关注到非法数据交易产业链中游频繁出现的“查档”数据泄露情况,例如通过一个手机号,就可以查询这个手机号相关的所有身份信息࿰…...
114周二复盘 (178)
1、打新包,测试 2、白天为打包开始冲刺,问题不少,一堆细节问题, 但还是傍晚打包,不到3分钟,1.77G。 速度超预期。 3、开始测试。 基本还是达到预期的,但还是很多问题。 好在打包速度很快&am…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
