前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >决策树:什么是基尼系数(“杂质 增益 指数 系数”辨析)「建议收藏」

决策树:什么是基尼系数(“杂质 增益 指数 系数”辨析)「建议收藏」

作者头像
全栈程序员站长
发布于 2022-11-08 03:12:24
发布于 2022-11-08 03:12:24
4.2K0
举报

决策树:什么是基尼系数

在我翻译学习这篇Random Forests for Complete Beginners的时候,对基尼系数和它相关的一些中文表达充满了疑问,查了一些资料以后,完成了这篇文章。其中基尼杂质系数的计算和解释参考了A Simple Explanation of Gini Impurity

如果你查看scikit-learnDecisionTreeClassifier的文档,你会看到这样的参数:

RandomForestClassifier文档里也谈到了gini。那么两者都提到并作为默认标准的基尼系数是什么?

名词辨析

你在不同的地方往往能看到关于基尼的不同名词,我查询了一大堆文献,发现它们的使用遵循以下规律:

  • 基尼杂质系数/基尼不纯系数(Gini Impurity):等效于我们通常说的基尼系数,在上面提到的分类器文档里的就是它,计算方法在后面将提到。
  • 基尼增益系数/基尼系数增益(Gini Gain):表征某个划分对基尼系数的增益,使用原基尼杂质系数减去按样本占比加权的各个分支的基尼杂质系数来计算,计算方法在后面将提到。
  • 基尼指数(Gini index):这是一个尴尬的问题,因为有人把它等价于gini impurity,但也有人把它用作gini coefficient。需要结合上下文来判断。
  • 基尼系数(Gini coefficient):表征在二分类问题中,正负两种标签的分配合理程度。当G=0,说明正负标签的预测概率均匀分配,模型相当于是随机排序。这个名词也在经济学中也有使用,本质是相同的,是用来表征一个地区财富的分配的合理程度。当G=0,说明财富均匀分配。

基尼杂质系数(Gini Impurity)的理解和计算

训练决策树包括将当前数据分成两个分支。假设我们有以下数据点:

现在,我们的分支里有5个蓝点和5个绿点。 如果我们在x=2处进行划分:

这很明显是个完美划分,因为它把数据集分成了两个分支:

  • 左分支全是蓝点
  • 右分支全是绿点

但如果我们在x=1.5处进行划分呢?

这个划分把数据集分成了两个分支:

  • 左分支,4个蓝点
  • 右分支,1个蓝点+5个绿点

很明显,这种划分更糟糕,但我们如何量化呢?

解决方法就是基尼杂质系数。

示例1:整个数据集

我们来计算整个数据集的基尼杂质系数。

如果随机选择一个数据点并随机给它分类,我们错误分类数据点的概率是多少?

我们的选择

实际的分类

可能性

对错

25%

25%

25%

25%

我们只在上面的两个事件中对其进行了错误的分类。因此,我们的错误概率是25% + 25% = 50%,也即基尼杂质系数是0.5.

公式 G = ∑ i = 1 C p ( i ) ∗ [ 1 − p ( i ) ] G = \sum_{i=1}^C {p(i)*[1-p(i)]} G=i=1∑C​p(i)∗[1−p(i)]

  • C: 类别数
  • p(i):一个样本被归类进第i类的概率

上面这个例子计算式即为: G = p ( 1 ) ∗ [ 1 − p ( 1 ) ] + p ( 2 ) ∗ [ 1 − p ( 2 ) ] = 0.5 ∗ [ 1 − 0.5 ] + 0.5 ∗ [ 1 − 0.5 ] = 0.5 \begin{aligned} G&=p(1)*[1-p(1)]+p(2)*[1-p(2)]\\ &=0.5*[1-0.5]+0.5*[1-0.5]\\ &=0.5 \end{aligned} G​=p(1)∗[1−p(1)]+p(2)∗[1−p(2)]=0.5∗[1−0.5]+0.5∗[1−0.5]=0.5​

示例2:完美划分

完美划分后数据集的基尼杂质系数是多少?

左分支的基尼杂质系数: G l e f t = 1 ∗ ( 1 − 1 ) + 0 ∗ ( 1 − 0 ) = 0 G_{left}=1∗(1−1)+0∗(1−0)=0 Gleft​=1∗(1−1)+0∗(1−0)=0

右分支的基尼杂质系数: G r i g h t = 0 ∗ ( 1 − 0 ) + 1 ∗ ( 1 − 1 ) = 0 G_{right}=0∗(1−0)+1∗(1−1)=0 Gright​=0∗(1−0)+1∗(1−1)=0

它们没有杂质,所以基尼杂质系数自然为0!此时就是最优情况。

示例3:不完美划分

那不完美划分呢?

易知左分支: G l e f t = 0 G_{left}=0 Gleft​=0

右分支: G r i g h t = 1 6 ∗ ( 1 − 1 6 ) + 5 6 ∗ ( 1 − 5 6 ) = 5 18 = 0.278 \begin{aligned} G_{right}&=\frac{1}{6}*(1-\frac{1}{6})+\frac{5}{6}*(1-\frac{5}{6})\\ &=\frac{5}{18}\\ &=0.278 \end{aligned} Gright​​=61​∗(1−61​)+65​∗(1−65​)=185​=0.278​

划分的选择

终于到了回答之前提出问题的时候了:我们如何量化划分的效果?

对这个划分:

我们已经计算了基尼系数杂质:

  • 划分前(整个数据集):0.5
  • 左分支:0
  • 右分支:0.278

我们将基于每个分支中的样本占比来进行加权来以确定划分的基尼增益。由于左分支有4个样本,右分支有6个样本,我们得到: ( 0.4 ∗ 0 ) + ( 0.6 ∗ 0.278 ) = 0.167 (0.4∗0)+(0.6∗0.278)=0.167 (0.4∗0)+(0.6∗0.278)=0.167

因此,我们用这个划分“降低”的杂质量是 0.5 − 0.167 = 0.333 0.5−0.167=0.333 0.5−0.167=0.333

这就被称为基尼增益系数。越好的划分基尼增益系数越大,比如此处0.5>0.333.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184168.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月9日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Qt开发入门与环境搭建(基础篇)
当前专栏里的项目上位机APP是采用Qt开发的,这一章节主要是介绍Qt开发环境的安装,以及Qt开发环境入门的使用。如果你Qt没有任何基础,建议仔细看一遍,大致了解下Qt基础。
DS小龙哥
2025/05/27
6370
Qt开发入门与环境搭建(基础篇)
Java IDEA使用详解(附:新建SpringBoot项目-Web项目)
IntelliJ IDEA号称当前Java开发效率最高的IDE工具。 IntelliJ IDEA有两个版本:社区版(Community)和旗舰版(Ultimate)。 社区版 是免费的、开源的,但功能较少; 旗舰版 提供了较多的功能
Java帮帮
2019/12/13
3.3K0
Java IDEA使用详解(附:新建SpringBoot项目-Web项目)
办公技巧:分享12个实用的word小技巧,欢迎收藏!
在Word表格里选中要填入相同内容的单元格,单击“格式→项目符号和编号”,进入“编号”选项卡,选择任意一种样式,单击“自定义”按钮,在“自定义编号列表”窗口中“编号格式”栏内输入要填充的内容,在“编号样式”栏内选择“无”,依次单击“确定”退出后即可。
小明互联网技术分享社区
2021/12/27
3.3K0
办公技巧:分享12个实用的word小技巧,欢迎收藏!
一看就会又超级实用的Excel10大技巧
本期责编:Sophie 普通人需要用到的Excel的功能不到其全部功能的10%。也就是说,对于绝大部分的用户来说,只要掌握了几个必须懂的Excel表格的基本操作,就能很好地使用Excel表格。 由于还
CDA数据分析师
2018/02/24
1.2K0
一看就会又超级实用的Excel10大技巧
Form表单 问题多多(中)
HTML5学堂 - 刘国利:在上一篇的博文当中,主要讲解了表单的嵌套规则与书写习惯。在本篇博文当中,我主要就具体的样式实现进行一下讲解,并提一下表单相关的浏览器兼容问题。今天主要提到的标签有;label、文本框和密码框input、文本域。本文最早的版本也是在2013年8月时书写的,随着行业的变化,针对本篇文章也进行了内容的调整,调整时间2015年08月05日。 本篇博文当中主要内容 1、label的作用 2、如何处理input文本框|密码框的样式 3、多行文本域textarea样式的处理 label的作用
HTML5学堂
2018/03/12
1.6K0
Form表单 问题多多(中)
Excel表格中最经典的36个小技巧,全在这儿了
技巧1、单元格内强制换行 技巧2、锁定标题行 技巧3、打印标题行 技巧4、查找重复值 技巧5、删除重复值 技巧6、快速输入对号√ 技巧7、万元显示 技巧8、隐藏0值 技巧9、隐藏单元格所有值。 技巧10、单元格中输入00001 技巧11、按月填充日期 技巧12、合并多个单元格内容 技巧13、防止重复录入 技巧14、公式转数值 技巧15、小数变整数 技巧16、快速插入多行 技巧17、两列互换 技巧18、批量设置求和公式 技巧19、同时查看一个excel文件的两个工作表。 技巧20:同时修改多个工作表 技巧21:恢复未保存文件 技巧22、给excel文件添加打开密码 技巧23、快速关闭所有excel文件 技巧24、制作下拉菜单 技巧25、二级联动下拉 技巧27、删除空白行 技巧28、表格只能填写不能修改 技巧29、文字跨列居中显示 技巧30、批注添加图片 技巧31、批量隐藏和显示批注 技巧32、解决数字不能求和 技巧33、隔行插入空行 技巧34、快速调整最适合列宽 技巧35、快速复制公式 技巧36、合并单元格筛选
Ai学习的老章
2019/09/25
8.8K0
Excel表格中最经典的36个小技巧,全在这儿了
Word编辑公式有哪些不为人知的小技巧?
最近跟一个出版社签了《数据挖掘算法导论》的出版合同,因为交稿日期并不远,这些天都在认真写字。
讲编程的高老师
2020/10/27
1.7K0
Word编辑公式有哪些不为人知的小技巧?
Linux Deploy:在Android上部署Linux
文章更新:   20161025 初次成文   20170422 微小修正 问题提出:   因为小苏在很久之前就听说在安卓上可以跑Linux系统,期间各种工具也试了很多(包括这个),但是要么是使用方法不得当,要么是和ROM不兼容,总之是一直都没成功,所以这类软件总是下了用,用了卸,想起来的时候再下了用...无限循环。直到之前,看了一篇简单的关于Linux Deploy的使用教程之后茅塞顿开,在Android上成功跑起了Ubuntu,所以写这篇文章来记录一下。 解决方案:   Linux Deploy
美丽应用
2018/07/20
10.5K0
Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)
由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的。这篇博文主要是记录vim使用和配置相关的一些知识点。
西湖醋鱼
2020/12/30
4.9K0
Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)
Excel 常用的九十九个技巧 Office 自学教程快速掌握办公技巧
Microsoft Excel 是微软为 Windows、macOS、Android 和 iOS 开发的电子表格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测,并且具有强大的制作图表的功能。由于 Excel 具有十分友好的人机界面和强大的计算功能,它已成为国内外广大用户管理公司和个人财务、统计数据、绘制各种专业化表格的得力助手。允许用户自定义界面的电子制表软件包括字体、文字属性和单元格格式,它还引进了智能重算的功能,当单元格数据变动时,只有与之相关的数据才会更新,荒岛本次带来九十九个 Excel 技巧,提高您的办公效率。
ximagine
2023/05/05
8.2K0
8个硬核技巧带你迅速提升CSS技术
笔者选择了一些常用甚至有些小册都未提及到的干货作为分享内容,相信这些内容能帮助同学们在短期内提升CSS编码素质,实现一些看似只能由JS才能实现的效果。
javascript艺术
2021/05/28
2.9K0
8个硬核技巧带你迅速提升CSS技术
word如何加目录、图标题目录、表标题目录
比如预计这篇文章有三级标题,首先让word显示出“标题 1”、“标题 2”、“标题 3”的字体样式 。
用户6948990
2025/04/03
3710
word如何加目录、图标题目录、表标题目录
如何用 Python 写个登陆窗口?
最近在学习 PyQt5 GUI 编程,大致路线是找了套网课《撩课-Python-GUI编程-PyQt5》,以梳理思维导图的形式梳理了下基础知识点以及 QtDesigner 应用流程,跳过各种具体控件的细节,结合课程中具体的综合案例来进行具体练习。
TTTEED
2020/07/23
2K0
AutoCAD工程制图 常见命令与注意事项全总结(120例)
15.旋转选定目标后要回车一次,角度可以输入正负,正为顺时针。旋转时可以选择复制。
timerring
2022/07/20
1.4K0
AutoCAD工程制图 常见命令与注意事项全总结(120例)
如何提升CSS技术?8个硬核技巧带你迅速提升CSS技术
整个分享过程不搞那些乱七八糟的环境搭建。既然只玩CSS,那只有html文件和css文件就足够了。另外还需一个浏览器Chrome和一个编辑器VSCode。
睡魔的谎言
2020/12/22
2.3K0
如何利用Excel2007做RFM细分客户群
背景 一个会员服务的企业,有近1年约1200个会员客户的收银数据。由于公司想针对不同类别不活跃客户进行激活促销;同时,为回馈重点客户,也计划推出一系列针对重点客户的优惠活动,希望保留这些客户,维持其活跃度。因此希望利用该数据进行客户分类研究。 根据客户的需求,RFM模型相对简单并且直接,按照R(Recency-近度)、F(Frequency-频度)和M(Monetary-额度)三个维度进行细分客户群体。由于该客户的数量较少(约1200个),所以,采用3x3x3=27个魔方(1200/27=44左右)较为合适
小莹莹
2018/04/20
1.5K0
如何利用Excel2007做RFM细分客户群
超详细论文排版秘籍,宜收藏!
👆点击“博文视点Broadview”,获取更多书讯 又到一年毕业季,你的论文定稿了吗?很多小伙伴在进行论文排版时,总会遇到各种各样的问题,本文就来手把手教大家如何从头开始给自己的论文排一个好看的版式! 排版思维及页面设置 论文排版的顺序和书写的顺序不完全相同。 论文排版主要包括:前置部分(封 面、诚信书、致谢、摘要及目录)、正文、参考文献和附录。 小贴士 较为高效的排版方法是,在书写的过程中完成正文的排版。然后进行参考文献、附录的排版,最后添加前置部分,即封面、目录等。 在调整文本之前,一定要先做好页面
博文视点Broadview
2022/05/27
5.3K1
超详细论文排版秘籍,宜收藏!
python入门与实战--python编程环境搭建
在正式开始学习python基础知识前,我们还需要搭建能够运行python程序的环境。目前,能够运行python程序的方式有很多,大体上可以理解为三个部分的组合:
用户9875047
2022/07/04
8530
python入门与实战--python编程环境搭建
excel常用操作大全
例如,在excel中输入单位的人员信息后,如果需要在原出生年份的数字前再加两位数字,即在每个人的出生年份前再加两位数字19,如果逐个修改太麻烦,那么我们可以使用以下方法来节省时间和精力:
崩天的勾玉
2021/12/20
21.5K0
excel常用操作大全
Solidworks 2023中文版下载安装激活 附安装教程
伴随着2023年的钟声即将响起,很多软件都迎接了2023年的版本,今日小编为大家带来了这款:SOLIDWORKS 2023,这是一款在设计领域非常著名的三维机械设计软件,同时也是世界上第一个基于Windows开发的三维CAD系统,简称叫做“SW 2023”,现阶段具备三大特色,分别是:功能强大、易学使用、技术创新,能够为用户提供出以整套实体模型设计系统,可以很好的满足用户机械设计办公的需求。值得一提的是:SOLIDWORKS 2023在安装过程以及操作界面,都更加人性化了,即便你是新手用户,也是可以快速安装上手。不仅如此,SOLIDWORKS 2023采用了先进的Windows OLE技术、直观式设计技术以及良好的与第三方软件的集成技术,再搭配上由剑桥提供的Parasolid内核,拥有丰富的模型创建、编辑实用程序、布尔建模运算符、特征建模支持、先进表面处理、增厚与弧刮等等,让用户在这里创建模型可以更加轻松。
用户10122115
2023/01/07
12.7K0
推荐阅读
相关推荐
Qt开发入门与环境搭建(基础篇)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档