统计学习算法——决策树
内容来自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…...
量化交易开发实战指南:从入门到部署
量化交易开发实战指南:从入门到部署 【免费下载链接】StockSharp Algorithmic trading and quantitative trading open source platform to develop trading robots (stock markets, forex, crypto, bitcoins, and options). 项目地址: https://gitcode.com/gh_mi…...
轰动全国的“327国债期货事件”的四大赢家后来都怎么样了?
轰动全国的“327国债期货事件”的四大赢家后来都怎么样了?轰动全国的“327国债期货事件”,四大赢家28岁的魏东、29岁的袁宝璟、34岁的周正毅以及30岁的刘汉,一举实现资本原始积累,称霸一方。天道好还,四人最终悲剧谢幕…...
智能邮件中枢:OpenClaw+Qwen3.5-9B自动分类回复系统
智能邮件中枢:OpenClawQwen3.5-9B自动分类回复系统 1. 为什么需要自动化邮件处理 每天早晨打开邮箱,看到堆积如山的未读邮件时,那种窒息感我太熟悉了。作为外贸团队的独立开发者,我经常需要同时处理客户询盘、供应商报价、内部协…...
HeidiSQL连接池管理终极指南:优化数据库性能的10个关键技巧
HeidiSQL连接池管理终极指南:优化数据库性能的10个关键技巧 【免费下载链接】HeidiSQL A lightweight client for managing MariaDB, MySQL, SQL Server, PostgreSQL, SQLite, Interbase and Firebird, written in Delphi and Lazarus/FreePascal 项目地址: https…...
4个维度解析多网盘协同工具:提升云资源管理效率 | 网盘直链下载助手
4个维度解析多网盘协同工具:提升云资源管理效率 | 网盘直链下载助手 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…...
新手福音:用快马AI生成带详细注释的Hello World安装包项目
作为一名刚接触Python编程的新手,我最近尝试为自己的第一个图形界面程序制作安装包。这个过程让我深刻体会到,传统打包工具的学习曲线对初学者来说确实不太友好。不过通过InsCode(快马)平台的AI辅助功能,整个流程变得异常简单。下面分享我的实…...
如何高效使用MRiLab数值磁共振成像仿真平台:面向开发者的创新应用指南
如何高效使用MRiLab数值磁共振成像仿真平台:面向开发者的创新应用指南 【免费下载链接】MRiLab A Numerical Magnetic Resonance Imaging (MRI) Simulation Platform 项目地址: https://gitcode.com/gh_mirrors/mr/MRiLab MRiLab是一款专业的数值磁共振成像仿…...
效率倍增:用快马打造Ollama多模型对比测试工具
最近在折腾本地大模型时,发现Ollama虽然能方便地运行多个模型,但每次想对比不同模型的表现都得手动切换,特别影响效率。于是琢磨着做个工具来提升测试效率,顺便把实现过程记录下来分享给大家。 需求痛点分析 本地测试不同模型时&a…...
智能声控LED楼道灯电路设计与实现
1. 智能声控LED楼道灯的设计初衷 每次深夜回家摸黑找楼道开关的经历,相信大家都深有体会。传统楼道灯要么需要手动开关,要么长明浪费电力,而智能声控LED灯正是为解决这些痛点而生。这种灯具融合了声控、光控和LED照明三项技术,白…...
智能文档处理新范式:Umi-OCR双层PDF功能让家庭与学生文档管理效率倍增
智能文档处理新范式:Umi-OCR双层PDF功能让家庭与学生文档管理效率倍增 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维…...
