CART决策树-基尼指数(全网最详解)

2024-08-22 23:36

本文主要是介绍CART决策树-基尼指数(全网最详解),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、基尼指数的定义
  • 二、基尼指数在CART决策树中的应用
  • 三、基尼指数与CART决策树的构建
    • 1.计算每个子集的基尼系数:
    • 2.计算基尼指数
    • 3.选择最优特征
    • 4.其余基尼指数
    • 5.构建决策树
  • 四、总结

CART决策树基尼指数是CART(Classification And Regression Tree)算法中用于分类任务的一种评估指标,主要用于衡量数据集的不纯度或不确定性。以下是关于CART决策树基尼指数的详细解释:

一、基尼指数的定义

基尼指数(Gini Index)表示从数据集中随机抽取两个样本,它们类别标记不一致的概率。对于一个包含K个类别的数据集D,其基尼指数的计算公式为:

G i n i 系数 ( D ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini系数(D)= \sum_{k=1}^{K} p_k(1-p_k)=1-\sum_{k=1}^{K} p^{2}_k Gini系数(D)=k=1Kpk(1pk)=1k=1Kpk2
G i n i 指数 ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i 系数 ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i 系数 ( D 2 ) Gini指数(D,A)=\frac{|D_1|}{|D|}Gini系数(D_1)+\frac{|D_2|}{|D|}Gini系数(D_2) Gini指数(D,A)=DD1Gini系数(D1)+DD2Gini系数(D2)

其中, p k p_k pk表示类别k在数据集D中的比例。基尼指数的取值范围在[0, 1]之间,值越小表示数据集的纯度越高,即属于同一类别的样本占比越大。

二、基尼指数在CART决策树中的应用

在构建CART分类树时,算法会根据基尼指数来选择最优的特征进行数据集的分割。具体步骤如下:

  • 计算基尼指数:对于每个特征,算法会尝试所有可能的切分点,并计算切分后左右子集的基尼指数。
  • 选择最佳切分:选择使得划分后基尼指数加权和最小的那个特征和切分点作为最优划分。加权和是根据子集大小(样本数量)来计算的。
  • 递归构建树:以选定的特征和阈值进行数据集的分割,然后对每个子集重复上述过程,直至满足停止条件(如节点中的样本都属于同一类别、达到预设的最大深度、节点中的样本数低于某个阈值等)。

三、基尼指数与CART决策树的构建

CART决策树的构建过程是一个递归的过程,通过不断选择最优特征和切分点来分割数据集,直到满足停止条件。基尼指数在这个过程中起到了关键作用,它帮助算法选择出能够最大程度降低数据集不纯度的特征和切分点。下面我们举例说明。
例:
在这里插入图片描述

1.计算每个子集的基尼系数:

首先计算各特征的基尼指数,选择最优特征以及其最优切分点。分别以 A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4表示年龄、有工作、有自己的房子和信贷情况4个特征,并以1,2,3表示年龄的值为青年、中年和老年,以1,2表示有工作和有自己的房子的值为是和否,以1,2,3表示信贷情况的值为非常好、好和一般.
对于子集 A 1 A_1 A1,我们计算其基尼指数Gini( A 1 A_1 A1),这涉及到计算 A 1 A_1 A1中每个类别的比例,并代入基尼指数公式。
同理,对于子集 A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4,我们计算Gini( A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4)。
特征 A 1 A_1 A1(年龄)的基尼系数:
首先我们代入公式:
G i n i ( D ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(D)= \sum_{k=1}^{K} p_k(1-p_k)=1-\sum_{k=1}^{K} p^{2}_k Gini(D)=k=1Kpk(1pk)=1k=1Kpk2
G i n i 指数 ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i 系数 ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i 系数 ( D 2 ) Gini指数(D,A)=\frac{|D_1|}{|D|}Gini系数(D_1)+\frac{|D_2|}{|D|}Gini系数(D_2) Gini指数(D,A)=DD1Gini系数(D1)+DD2Gini系数(D2)
青年(5人,2人贷款)的基尼系数:
G i n i 系数 ( D 1 ) = 2 5 ∗ ( 1 − 2 5 ) + 3 5 ∗ ( 1 − 3 5 ) = 0.48 Gini系数(D_1)=\frac{2}{5}*(1-\frac{2}{5})+\frac{3}{5}*(1-\frac{3}{5})=0.48 Gini系数(D1)=52(152)+53(153)=0.48
G i n i 系数 ( D 1 ) = 2 ∗ 2 5 ∗ ( 1 − 2 5 ) = 0.48 Gini系数(D_1)=2*\frac{2}{5}*(1-\frac{2}{5})=0.48 Gini系数(D1)=252(152)=0.48
如果是类别是二分类,则基尼系数:
p ( 1 − p ) + ( 1 − p ) p = 2 p ( 1 − p ) p(1-p)+(1-p)p=2p(1-p) p(1p)+(1p)p=2p(1p)
非青年(10人,7人贷款)的基尼系数:
G i n i 系数 ( D 2 ) = 2 ∗ 7 10 ∗ ( 1 − 7 10 ) = 0.42 Gini系数(D_2)=2*\frac{7}{10}*(1-\frac{7}{10})=0.42 Gini系数(D2)=2107(1107)=0.42

2.计算基尼指数

A 1 = 1 A_1=1 A1=1(青年)条件下,D的基尼指数:
G i n i 指数 ( D , A 1 = 1 ) = 5 15 ∗ 0.48 + 10 15 ∗ 0.42 = 0.44 Gini指数(D,A_1=1)=\frac{5}{15}*0.48+\frac{10}{15}*0.42=0.44 Gini指数(D,A1=1)=1550.48+15100.42=0.44
总公式为:
G i n i 指数 ( D , A 1 = 1 ) = 5 15 ∗ [ 2 ∗ 2 5 ∗ ( 1 − 2 5 ) ] + 10 15 ∗ [ 2 ∗ 7 10 ∗ ( 1 − 7 10 ] = 0.44 Gini指数(D,A_1=1)=\frac{5}{15}*[2*\frac{2}{5}*(1-\frac{2}{5})]+\frac{10}{15}*[2*\frac{7}{10}*(1-\frac{7}{10}]=0.44 Gini指数(D,A1=1)=155[252(152)]+1510[2107(1107]=0.44
A 1 = 2 A_1=2 A1=2(中年)条件下,D的基尼指数:
G i n i 指数 ( D , A 1 = 2 ) = 5 15 ∗ [ 2 ∗ 3 5 ∗ ( 1 − 3 5 ) ] + 10 15 ∗ [ 2 ∗ 6 10 ∗ ( 1 − 6 10 ] = 0.48 Gini指数(D,A_1=2)=\frac{5}{15}*[2*\frac{3}{5}*(1-\frac{3}{5})]+\frac{10}{15}*[2*\frac{6}{10}*(1-\frac{6}{10}]=0.48 Gini指数(D,A1=2)=155[253(153)]+1510[2106(1106]=0.48
A 1 = 3 A_1=3 A1=3条件下,D的基尼:
G i n i 指数 ( D , A 1 = 3 ) = 5 15 ∗ [ 2 ∗ 4 5 ∗ ( 1 − 4 5 ) ] + 10 15 ∗ [ 2 ∗ 5 10 ∗ ( 1 − 5 10 ] = 0.44 Gini指数(D,A_1=3)=\frac{5}{15}*[2*\frac{4}{5}*(1-\frac{4}{5})]+\frac{10}{15}*[2*\frac{5}{10}*(1-\frac{5}{10}]=0.44 Gini指数(D,A1=3)=155[254(154)]+1510[2105(1105]=0.44

3.选择最优特征

由于 G i n i 指数 ( D , A 1 = 1 ) Gini指数(D,A_1=1) Gini指数(D,A1=1) G i n i 指数 ( D , A 1 = 3 ) Gini指数(D,A_1=3) Gini指数(D,A1=3)相等,且最小,所以 A 1 = 1 A_1=1 A1=1 A 1 = 3 A_1=3 A1=3都可以选作 A 1 A_1 A1的最优切点。

4.其余基尼指数

同理:
求特征 A 2 A_2 A2 A 3 A_3 A3的基尼指数:
G i n i ( D , A 2 = 1 ) = 0.32 Gini(D, A_2=1)=0.32 Gini(D,A2=1)=0.32
G i n i ( D , A 3 = 1 ) = 0.27 Gini(D,A_3=1)=0.27 Gini(D,A3=1)=0.27
由于 A 2 A_2 A2 A 3 A_3 A3只有一个切分点,所以它们就是最优切分点。
求特征 A 4 A_4 A4的基尼指数:
G i n i ( D , A 4 = 1 ) = 0.36 Gini(D,A_4=1)=0.36 Gini(D,A4=1)=0.36
G i n i ( D , A 4 = 2 ) = 0.47 Gini(D,A_4=2)=0.47 Gini(D,A4=2)=0.47
G i n i ( D , A 4 = 3 ) = 0.32 Gini(D, A_4=3)=0.32 Gini(D,A4=3)=0.32
G i n i ( D , A 4 = 3 ) Gini(D,A_4=3) Gini(DA4=3)最小,所以 A 4 = 3 A_4=3 A4=3为A的最优切分点。

5.构建决策树

A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4几个特征中, G i n i ( D , A 3 = 1 ) = 0.27 Gini(D,A_3=1)=0.27 Gini(DA3=1)=0.27最小,所以选择特征 A 3 A_3 A3为最优特征, A 3 = 1 A_3=1 A3=1为其最优切分点,于是根结点生成两个子结点,一个是叶结点.对另一个结点继续使用以上方法在 A 1 A_1 A1 A 2 A_2 A2 A 4 A_4 A4中选择最优特征及其最优切分点,结果是 A 2 = 1 A_2=1 A2=1依此计算得知,所得结点都是叶结点.

四、总结

基尼指数是CART决策树中用于分类任务的重要评估指标,它通过衡量数据集的不纯度来帮助算法选择最优的特征和切分点进行数据集的分割。在构建CART分类树时,基尼指数起到了关键作用,确保了决策树的准确性和泛化能力。

这篇关于CART决策树-基尼指数(全网最详解)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097718

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input