机器学习 决策树 随机森林

news2024/9/22 13:22:53

文章目录

  • 参考
  • 决策树指标
    • 基尼系数
      • 基础公式
      • 公式理解
      • 引入划分后的公式
      • 划分后公式的理解
    • 信息熵、信息增益
      • 如何理解信息熵
    • 两种指标的对比
  • 总结

参考

  • b站视频 【决策树、随机森林】附源码!!超级简单,同济大佬手把手带你学决策树
  • 决策树模型及案例(Python)
  • 决策树之基尼系数 该文章的公式理解可能不对,但提供了思路。
  • 【概率论】1-4:事件的的并集(Union of Events and Statical Swindles) 并集的概率

决策树指标

决策树有多种可选的形态,那么如何确定哪种决策树是更好的呢?有两种指标可以使用:

  • 基尼系数
  • 信息熵、信息增益

基尼系数

基础公式

基尼系数是一种评估决策树好坏的指标。他反映了决策树对样本分类的离散情况。假设样本集合为T,分为了若干个类别,每个类别在样本集合T中占的比例为 p i p_i pi。它的计算公式如下:
gini ⁡ ( T ) = 1 − ∑ p i 2 \operatorname{gini}(T)=1-\sum p_{i}^{2} gini(T)=1pi2

举个例子,假设某个员工的样本集合里都是离职员工,所以该集合只有"离职员工"一个类别,其出现的频率是100%。所以该系统的基尼系数为 1 − 1 2 = 0 1-1^2=0 1120,表示该系统没有混乱,或者说该系统的“纯度”很高。而如果样本中一半是离职员工,另一半是未离职员工,那么类别个数为2,每个类别出现的频率都为50%,所以其基尼系数为 1 − ( 0. 5 2 + 0. 5 2 ) = 0.5 1-(0.5^2+0.5^2)=0.5 10.520.520.5,其混乱程度很高。

公式理解

如何理解这个公式的含义?我们举个例子,假设有个贷款人员的样本集合,有贷款人员是否违约的二分类问题,1表示违约,0表示不违约。现在问:任取两个样本,它们属于同一类别的概率是多少?两个样本同属第一个类别的概率为 P 1 = p 1 2 P_1=p_1^2 P1=p12,同属第二个类别的概率为 P 2 = p 2 2 P_2=p_2^2 P2=p22。所以,两个样本同属一个类别的概率如下:
P r ( P 1 ∪ P 2 ) = P r ( P 1 ) + P r ( P 2 ) − P r ( P 1 ∩ P 2 ) = P r ( P 1 ) + P r ( P 2 ) 两个样本不可能同时都属于多个类别 = p 1 2 + p 2 2 \begin{aligned} Pr(P_1 \cup P_2)&=Pr(P_1)+Pr(P_2)-Pr(P_1 \cap P_2) \\ &=Pr(P_1)+Pr(P_2) \qquad \text{两个样本不可能同时都属于多个类别} \\ &=p_1^2+p_2^2 \end{aligned} Pr(P1P2)=Pr(P1)+Pr(P2)Pr(P1P2)=Pr(P1)+Pr(P2)两个样本不可能同时都属于多个类别=p12+p22
所以,两个样本不属于同一类别的概率为 1 − P r ( P 1 ∪ P 2 ) = 1 − p 1 2 − p 2 2 = g i n i ( T ) 1-Pr(P_1 \cup P_2)=1-p_1^2-p_2^2=gini(T) 1Pr(P1P2)=1p12p22=gini(T)在二分类问题中,基尼系数的含义就是随机采样的两个样本不属于同一类别的概率

该说法在多分类问题中一样成立。参考【概率论】1-4:事件的的并集(Union of Events and Statical Swindles)给出的公式:


图中的并集元素项都等于0,所以任取两个样本,都属于同一类别的概率为 Pr ⁡ ( ⋃ i = 1 n A i ) = ∑ i = 1 n Pr ⁡ ( A i ) = ∑ i = 1 n p i 2 \operatorname{Pr}\left(\bigcup_{\mathrm{i}=1}^{\mathrm{n}} \mathrm{A}_{\mathrm{i}}\right)=\sum_{\mathrm{i}=1}^{\mathrm{n}} \operatorname{Pr}\left(\mathrm{A}_{\mathrm{i}}\right)=\sum_{\mathrm{i}=1}^{\mathrm{n}}p_i^2 Pr(i=1nAi)=i=1nPr(Ai)=i=1npi2。所以任取两个样本,不属于同一类别的概率为 1 − ∑ i = 1 n p i 2 1-\sum_{\mathrm{i}=1}^{\mathrm{n}}p_i^2 1i=1npi2,该说法得证。在多分类问题中,基尼系数的含义也是同样的

引入划分后的公式

当引入某个用于划分样本空间的条件(如“满意度<5”)时,分类后的基尼系数公式如下,其中S1、S2为划分后的两类各自的样本量, g i n i ( T 1 ) gini(T_1) gini(T1) g i n i ( T 2 ) gini(T_2) gini(T2)为两类各自的基尼系数。

gini ⁡ ( T ) = S 1 S 1 + S 2 gini ⁡ ( T 1 ) + S 2 S 1 + S 2 gini ⁡ ( T 2 ) \operatorname{gini}(T)=\frac{S_{1}}{S_{1}+S_{2}} \operatorname{gini}\left(T_{1}\right)+\frac{S_{2}}{S_{1}+S_{2}} \operatorname{gini}\left(T_{2}\right) gini(T)=S1+S2S1gini(T1)+S1+S2S2gini(T2)

举个例子,一个初始样本中有1000个员工,其中已知有400人离职,600人不离职,划分前该系统的基尼系数为 1 − ( 0. 4 2 + 0. 6 2 ) = 0.48 1-(0.4^2+0.6^2)=0.48 10.420.620.48
下面采用两种方式决定根节点:一是根据“满意度<5”进行分类;二是根据“收入<10000元”进行分类。

划分方式1:以“满意度<5”为根节点进行划分,如下图所示,1000个员工中,200个人是满意度<5的,另外有800个人满意度>=5。计算过程如下。

  • T1的基尼系数: g i n i ( T 1 ) = 1 − ( 1 2 + 0 2 ) = 0 gini(T_1)=1-(1^2+0^2)=0 gini(T1)112020
  • T2的基尼系数: g i n i ( T 2 ) = 1 − ( 0.2 5 2 + 0.7 5 2 ) = 0.375 gini(T_2)=1-(0.25^2+0.75^2)=0.375 gini(T2)10.2520.7520.375
  • 综上,划分后的基尼系数就是
    gini ⁡ ( T ) = 200 1000 × 0 + 800 1000 × 0.375 = 0.3 \begin{aligned} \operatorname{gini}(T)&= \frac{200}{1000} \times 0+ \frac{800}{1000} \times 0.375= 0.3 \end{aligned} gini(T)=1000200×0+1000800×0.375=0.3

划分方式2:以“收入<10000元”为根节点进行划分,如下图所示,1000个员工中,有400个人收入小于10000元,另外600人收入>=10000元计算过程如下。

T1的基尼系数: g i n i ( T 1 ) = 1 − ( 0.2 5 2 + 0.7 5 2 ) = 0.375 gini(T1)=1-(0.25^2+0.75^2)=0.375 giniT110.2520.7520.375
T2的基尼系数: g i n i ( T 2 ) = 1 − ( 0. 5 2 + 0. 5 2 ) = 0.5 gini(T2)=1-(0.5^2+0.5^2)=0.5 giniT210.520.520.5

  • 综上,划分后的基尼系数就是
    gini ⁡ ( T ) = 400 1000 × 0.375 + 600 1000 × 0.5 = 0.45 \begin{aligned} \operatorname{gini}(T)&= \frac{400}{1000} \times 0.375+ \frac{600}{1000} \times 0.5= 0.45 \end{aligned} gini(T)=1000400×0.375+1000600×0.5=0.45

可以看到,划分前的基尼系数为0.48,以“满意度<5”为根节点进行划分后的基尼系数为0.3,而以“收入<10000元”为根节点进行划分后的基尼系数为0.45。基尼系数越低表示系统的混乱程度越低(纯度越高),区分度越高,越适合用于分类预测,因此这里选择“满意度<5”作为根节点

划分后公式的理解

如何理解划分后的基尼系数公式?在划分前,样本空间是全集。划分将决策树的分为了若干个树节点,每个树节点相当于一个样本空间子集。所以公式中将各个划分样本计算基尼系数后,按权重相加的方式,相当于计算每个划分样本空间基尼系数的加权和

信息熵、信息增益

这里建议阅读原文决策树模型及案例(Python),对某个样本空间X计算信息熵的公式为:
H ( X ) = − ∑ p i log ⁡ 2 ( p i ) ( i = 1 , 2 … … n ) H(X)=-\sum p_{i} \log _{2}\left(p_{i}\right) \quad\left(i=1,2 \ldots \ldots{ }{\text n}\right) H(X)=pilog2(pi)(i=1,2n)
进行某种变量A划分后(比如“满意度<5”),信息熵的计算公式如下。则根据变量A划分后的信息熵又称为条件熵。
H A ( X ) = S 1 S 1 + S 2 H ( X 1 ) + S 2 S 1 + S 2 H ( X 2 ) H_{A}(X)=\frac{S_{1}}{S_{1}+S_{2}} H\left(X_{1}\right)+\frac{S_{2}}{S_{1}+S_{2}} H\left(X_{2}\right) HA(X)=S1+S2S1H(X1)+S1+S2S2H(X2)

什么是信息增益?为了衡量不同划分方式降低信息熵的效果,还需要计算分类后信息熵的减少值(原系统的信息熵与分类后系统的信息熵之差),该减少值称为熵增益或信息增益,其值越大,说明分类后的系统混乱程度越低,即分类越准确。

假设某样本的初始信息熵为 H ( X ) = 0.97 H(X)=0.97 H(X)=0.97,按照某划分后,信息熵为 H A ( X ) = 0.65 H_A(X)=0.65 HA(X)=0.65,那么信息增益为0.97-0.65=0.32.

如何理解信息熵

参考信息熵为什么要定义成-Σp*log§?,

两种指标的对比

基尼系数涉及平方运算,而信息熵涉及相对复杂的对数函数运算,因此,目前决策树模型默认使用基尼系数作为建树依据,运算速度会较快。

总结

其实算法面试基本不会考吧?可是反正我也失业了,就随着性子学知识吧。这辈子就这样了。

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

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

相关文章

收藏 外贸企业必备的跨境电商B2B出口报关完整指南

跨境企业想要将货物出口到国外&#xff0c;报关是重要步骤之一&#xff0c;它是货物合法进出国境的通行证。许多初入跨境电商行业的B2B企业在报关上由于无人指引走了许多弯路&#xff0c;浪费了时间。 一.跨境出口模式 根据海关总署规定&#xff0c;跨境电商出口的监管模式分为…

QDataStream(数据流)

QDataStream类实现将QIODevice的二进制数据串行化。一个数据流就是一个二进制编码信息流&#xff0c;独立于主机的操作系统&#xff0c;CPU或字节顺序。QDataStream可以实现c的基本数据类型的串行化。 构造函数&#xff1a; 常用函数 &#xff1a; atEnd()是否到达结束位置re…

基于jsp+ssm的旅游活动报名系统-计算机毕业设计

项目介绍 本系统主要采JSP语言进行编写&#xff0c;本系统数据库采用数据处理功能强大的MySQL来建立 管理员可以通过结伴休闲平台进行旅行社管理、个人活动管理、旅行社活动管理、客户管理、用户管理等。个人用户则可通过结伴休闲平台对进行发布活动、结伴活动等。旅行社用户…

STC15 - ExternalRAM_enable()/InternalRAM_enable()

文章目录STC15 - ExternalRAM_enable()/InternalRAM_enable()概述实验环境MCU的规格区别IAP15F2K61S2的使用限制实验的组合公用测试代码1. 没有焊接外部RAM ExternalRAM_enable()2. 没有焊接外部RAM InternalRAM_enable()3. 焊接外部RAM ExternalRAM_enable()4. 焊接外部RAM…

世界杯狂欢季,家居品牌仅靠4位UP增长2000wB站声量

时隔四年&#xff0c;2022年卡塔尔世界杯于11月21日正式开始&#xff0c;直至目前比赛进度已过半程&#xff0c;这场世界赛事备受各国瞩目&#xff0c;全网有关于“足球”的运动信息接踵而至。 飞瓜数据&#xff08;B站版&#xff09;显示&#xff0c;B站平台带有“世界杯”标…

React源码之概念篇

React主要的三部分 这是从ReactDom.render后触发的步骤 调度协调渲染 设计理念 首先在React中需要在浏览器刷新一次就需要执行如下的步骤&#xff1a; JS脚本执行->样式布局->样式绘制&#xff0c;如果js执行时间超过了16.6ms&#xff0c;那么就没有时间留给样式布局…

[附源码]计算机毕业设计良辰之境影视评鉴系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【viper】go 配置管理神器viper使用详解

目录一、viper简介二、基本使用1.viper基本配置2.读取配置3.自定义配置源4.注册别名4.获取环境变量5.获取命令行参数6.多实例使用7.监听配置变化三、读取远程配置四、保存配置一、viper简介 viper是一个应用程序解决方案&#xff0c;它支持在应用程序内使用&#xff0c;特性如…

基于元胞自动机的人员疏散模拟器研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

[前端面试题]:数组去重的几种方法

总结一些日常需要用到的一些api&#xff0c;也是在一些面试中会经常出现的题目&#xff0c;今天分享的是数组去重的几个不同的方法&#xff0c; 同时文章也被收录到我的《JS基础》专栏中&#xff0c;欢迎大家点击收藏加关注。 给大家推荐一个实用面试题库 1、前端面试题库 &am…

魔兽世界开服架设教程—魔兽国服停服时间已确定!玩家该何去何从

《魔兽世界》国服停止运营时间定在&#xff0c;2023年1月24日0点起 近期随着暴雪和网易公司先后发出的公告&#xff0c;《魔兽世界》国服关服时间已经十分确定了&#xff0c;国服停运时间定在明年的1月24号0点起正式关服。随着国服将关闭&#xff0c;魔兽私服即将崛起。毕竟在游…

【Java面试】并发

文章目录线程有那些状态&#xff1f;一个程序来显示状态切换过程正常执行流程阻塞执行流程等待执行流程说说线程池的核心参数wait和sleep的区别Lock和synchronized的区别Lock中Condition的使用说说Java中的悲观锁与乐观锁乐观锁悲观锁Hashtable和ConcurrentHashMap的区别&#…

【玩转算法】(初始)动态规划

本期主题&#xff1a;动态规划&#xff0c;及其相关oj题。博客主页&#xff1a;小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限&#xff0c;出现错误希望大家不吝赐 &#x1f341;1&#xff09;DP定义 动态规划是分治思想的延伸&#xff0c;通俗一点来说…

核酸检测预约系统毕业设计,核酸检测系统设计与实现,毕业设计怎么写论文毕设源码开题报告需求分析怎么做

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的疫情核酸检查预约系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于java的springboot框架下开发&#xff1b;&#xff1b;通过后台设置医院信息、录入医院科室信息、录入医生信息、设…

CVE-2015-4852 Weblogic T3 反序列化分析

0x01 前言 看到很多师傅的面经里面都有提到 Weblogic 这一个漏洞&#xff0c;最近正好有一些闲暇时间&#xff0c;可以看一看。 因为环境上总是有一些小问题&#xff0c;所以会在本地和云服务器切换着调试 0x02 环境搭建 太坑了&#xff0c;我的建议是用本地搭建的方法&…

DeadObjectException解题

DeadObjectException解题 RemoteException occurs on reporting focusChanged, wWindow{2470935 u0 bundle_id/bundle_id.MainActivity}android.os.DeadObjectExceptionat android.os.BinderProxy.transactNative(Native Method)at android.os.BinderProxy.transact(Binder.ja…

十大开源测试工具和框架

免费的开源框架和工具由于其开源特性&#xff0c;现在逐渐成为自动化测试的首选解决方案。区别在于&#xff0c;你是喜欢使用类库编写一个全新的自动化测试框架&#xff0c;或者喜欢使用一个现成的工具。 本文帮忙你快速了解 10 大免费和开源测试工具、框架。 Katalon Studio…

【python】昔去雪如花,今来花似雪,今日份雪花快递到啦

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~ 大雪已至&#xff0c;冬天无恙&#xff0c;愿这个冬天的你&#xff0c;不缺暖阳&#xff0c;好日常在 小时候&#xff0c;冬天最盼望的就是下雪了~雪一下 在地上铺上一层雪白的毛毯的时候甚是好看~ 还能堆堆雪人、打打雪仗…

如何使用 django-import-export + pandas 在 Django 视图中导入 excel 数据

我想每个人都熟悉所有强大的库 django-import-export,它允许我们在 Django 的管理面板中导入和导出数据,但是如果你想让用户在网络上上传 excel 文件或通过 REST 上传它怎么办应用程序接口。最近,我遇到了类似的问题。经过大量研究,我找到了一种使用 Django 方式将数千个数…

基于jsp+mysql+ssm生鲜超市进销存管理系统-计算机毕业设计

项目介绍 目前超市越来越多&#xff0c;越来越普及&#xff0c;如何高效的管理经营超市才是成功的关键,其中对于中小型超市来说&#xff0c;在降低成本的前提下使用最有效的管理方式是非常重要的&#xff0c;所以开发中小型超市管理系统既考虑了成本相对较低又非常实用的特点。…