基尼系数的直观解释

我们在使用分类算法训练数据后,评价分类模型的优劣时,经常会遇到一个词,"基尼系数 "。

那么,什么是基尼系数呢?

本文将尝试用最简单的方式介绍什么是"基尼系数 "以及它的计算方法和意义。

希望能让大家对基尼系数有个直观的印象,而不仅仅是记住它枯燥的计算公式。

1. 从分类模型开始

首先,先假设有一个分类案例,包含2个种类 的数据(紫色和蓝色),每个分类的数据有10个

上图中的3种不同颜色的直线,代表3种不同参数的分类模型。

从图中可以看出:

  • 绿色的线分类效果最好,完美分割了2个种类的数据
  • 黄色次之,有3个蓝色的数据分类错误
  • 红色的分类效果最差,有8个紫色的数据分类错误

对于上面这种简单的数据(只有2个维度10个数据 )和简单的分类模型(线性分类 )来说,

我们通过作图可以一眼看出哪个分类模型的效果最好。

而现实中的实际情况,往往是不仅数据量大,数据维度也很多,分类模型也不会仅仅是一条二维直线。

这时,无法像上面那样绘制出二维图形来,那么该如何去定量的评估一个分类模型的好坏呢?

2. 基尼系数

基尼系数 就是这样一种指标,通过一个分类模型的基尼系数Gini),来帮助我们判断分类模型的好坏。

2.1. 绿色模型

对于绿色的分类模型:

分类过程 分类结果 概率
选择 紫色 数据,并且被分类为 紫色 正确 50%
选择 紫色 数据,并且被分类为 蓝色 错误 0%
选择 蓝色 数据,并且被分类为 蓝色 正确 50%
选择 蓝色 数据,并且被分类为 紫色 错误 0%

概率计算方式说明:比如对于表格第一行,【选择 紫色 数据,并且被分类为 紫色 】的概率。

首先,【选择 紫色 数据】的概率为50%,因为总共20条 数据,紫色数据有10条

其次,【并且被分类为** 紫色**】的概率为100%,因为绿色的模型可以正确分类所有的数据。

所以,【选择 紫色 数据,并且被分类为 紫色 】的概率为 50% x 100% = 50%

其余3行的概率同上一样计算。

2.2. 黄色模型

对于黄色的模型:

分类过程 分类结果 概率
选择 紫色 数据,并且被分类为 紫色 正确 50%
选择 紫色 数据,并且被分类为 蓝色 错误 0%
选择 蓝色 数据,并且被分类为 蓝色 正确 35%
选择 蓝色 数据,并且被分类为 紫色 错误 15%

对于上面表格中的第三行,【选择 蓝色 数据,并且被分类为 蓝色 】为什么是35%

首先,【选择 蓝色 数据】的概率为50%,因为总共20条 数据,蓝色数据有10条

其次,【并且被分类为 蓝色 】的概率是70%,从图中可以看出黄色的模型 对于10条 蓝色数据,有7条 分类正确,有3条 被错误分类到紫色的那一类中了。

所以,【选择 蓝色 数据,并且被分类为 蓝色 】的概率为 50% x 70% = 35%

表格第四行的15%也是同样方式计算出的。

2.3. 红色模型

最后,看下红色的模型:

分类过程 分类结果 概率
选择 紫色 数据,并且被分类为 紫色 正确 10%
选择 紫色 数据,并且被分类为 蓝色 错误 40%
选择 蓝色 数据,并且被分类为 蓝色 正确 50%
选择 蓝色 数据,并且被分类为 紫色 错误 0%

计算方式前面已经介绍,这里不再赘述。

2.4. 计算公式

3种 不同效果的分类模型 的分类效果统计在上面的表格中。

根据这些概率,我们如何给模型打分,从而确定模型好坏呢?

答案就是基尼系数Gini),这时我们再来看看基尼系数的计算公式:
<math xmlns="http://www.w3.org/1998/Math/MathML"> G i n i = ∑ i = 1 C p ( i ) × ( 1 − p ( i ) ) Gini = \sum_{i=1}^C p(i)\times (1-p(i)) </math>Gini=∑i=1Cp(i)×(1−p(i))

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> C C </math>C是数据的总类别数量,本文的例子中有两类数据,所以 <math xmlns="http://www.w3.org/1998/Math/MathML"> C = 2 C=2 </math>C=2
<math xmlns="http://www.w3.org/1998/Math/MathML"> p ( i ) p(i) </math>p(i)是选择某个类别 <math xmlns="http://www.w3.org/1998/Math/MathML"> i i </math>i的数据的概率。

下面来看看本文中的3个模型 的基尼系数分别是多少。

我们假设 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( 1 ) p(1) </math>p(1)代表选中紫色 数据的概率; <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( 2 ) p(2) </math>p(2)代表选中蓝色数据的概率

那么,对于绿色模型,
绿色线上部分 的基尼系数: <math xmlns="http://www.w3.org/1998/Math/MathML"> G u p = p ( 1 ) × ( 1 − p ( 1 ) ) + p ( 2 ) ( 1 − p ( 2 ) ) G_{up} = p(1)\times(1-p(1)) + p(2)(1-p(2)) </math>Gup=p(1)×(1−p(1))+p(2)(1−p(2))

绿色线上部分 ,全是紫色数据,所以 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( 1 ) = 1 , p ( 2 ) = 0 p(1) = 1,\quad p(2)=0 </math>p(1)=1,p(2)=0;

因此, <math xmlns="http://www.w3.org/1998/Math/MathML"> G u p = 1 × ( 1 − 1 ) + 0 × ( 1 − 0 ) = 0 G_{up} = 1\times(1-1)+0\times(1-0) = 0 </math>Gup=1×(1−1)+0×(1−0)=0

对于绿色线下部分 ,同理可计算出 <math xmlns="http://www.w3.org/1998/Math/MathML"> G d o w n = 0 G_{down}=0 </math>Gdown=0

又因为绿色线上下部分 的数据量都是10条,各占总数据量的50%

所以最终绿色模型整体的基尼系数: <math xmlns="http://www.w3.org/1998/Math/MathML"> G g r e e n = 50 % G u p + 50 % G d o w n = 0 G_{green}=50\% G_{up} + 50\% G_{down} = 0 </math>Ggreen=50%Gup+50%Gdown=0

对于黄色模型:

黄色线上部分 ,10个紫色数据,3个蓝色数据,所以 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( 1 ) = 10 13 , p ( 2 ) = 3 13 p(1) = \frac{10}{13},\quad p(2)=\frac{3}{13} </math>p(1)=1310,p(2)=133,

因此, <math xmlns="http://www.w3.org/1998/Math/MathML"> G u p = 10 13 × ( 1 − 10 13 ) + 3 13 × ( 1 − 3 13 ) ≈ 0.355 G_{up} = \frac{10}{13}\times(1-\frac{10}{13})+\frac{3}{13}\times(1-\frac{3}{13}) \approx 0.355 </math>Gup=1310×(1−1310)+133×(1−133)≈0.355
黄色线下部分 ,0个紫色数据,7个蓝色数据,所以 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( 1 ) = 0 , p ( 2 ) = 1 p(1) = 0,\quad p(2)=1 </math>p(1)=0,p(2)=1,所以 <math xmlns="http://www.w3.org/1998/Math/MathML"> G d o w n = 0 G_{down}=0 </math>Gdown=0

又因为黄色线上下部分 的数据量分别13条7条 ,各占总数据量的 <math xmlns="http://www.w3.org/1998/Math/MathML"> 13 20 , 7 20 \frac{13}{20},\quad \frac{7}{20} </math>2013,207,

所以最终黄色模型整体的基尼系数: <math xmlns="http://www.w3.org/1998/Math/MathML"> G y e l l o w = 13 20 G u p + 7 20 G d o w n ≈ 0.23 G_{yellow}=\frac{13}{20} G_{up} + \frac{7}{20} G_{down} \approx 0.23 </math>Gyellow=2013Gup+207Gdown≈0.23

对于红色模型:

和上面同理计算出: <math xmlns="http://www.w3.org/1998/Math/MathML"> G u p = 0 G_{up}=0 </math>Gup=0, <math xmlns="http://www.w3.org/1998/Math/MathML"> G d o w n ≈ 0.494 G_{down} \approx 0.494 </math>Gdown≈0.494;
<math xmlns="http://www.w3.org/1998/Math/MathML"> G r e d = 2 20 × G u p + 18 20 × G d o w n ≈ 0.444 G_{red} = \frac{2}{20} \times G_{up} + \frac{18}{20}\times G_{down} \approx 0.444 </math>Gred=202×Gup+2018×Gdown≈0.444

基尼系数是介于0~1的数值,且越小表示效果越好,

因为 <math xmlns="http://www.w3.org/1998/Math/MathML"> G g r e e n = 0 < G y e l l o w = 0.23 < G r e d = 0.444 G_{green}=0<G_{yellow}=0.23<G_{red}=0.444 </math>Ggreen=0<Gyellow=0.23<Gred=0.444

所以 绿色模型 优于 黄色模型 优于 红色模型。

3. 总结

通过比较不同模型的基尼系数的值,不仅可以一下看出分类模型的好坏,还可以根据数值的大小了解究竟好多少。

基尼系数也为我们训练分类模型时提供了一个优化的方向,

一方面,对于不同的分类模型,我们可以通过比较它们的基尼系数,确定哪种模型效果更好;

另一方面,对于同一个分类模型 ,我们可以通过观察其中每个分类的基尼系数(比如上面的 <math xmlns="http://www.w3.org/1998/Math/MathML"> G u p G_{up} </math>Gup和 <math xmlns="http://www.w3.org/1998/Math/MathML"> G d o w n G_{down} </math>Gdown),

从而确定那个分类的效果比较差,那就是重点优化的方向。

相关推荐
旧故新长10 分钟前
支持Function Call的本地ollama模型对比评测-》开发代理agent
人工智能·深度学习·机器学习
一只可爱的小猴子1 小时前
2022李宏毅老师机器学习课程笔记
人工智能·笔记·机器学习
爱研究的小陈2 小时前
Day 4:机器学习初探——从监督学习到无监督学习
机器学习
Blossom.1183 小时前
人工智能在智能家居中的应用与发展
人工智能·深度学习·机器学习·智能家居·vr·虚拟现实·多模态融合
薄荷很无奈3 小时前
CuML + Cudf (RAPIDS) 加速python数据分析脚本
python·机器学习·数据分析·gpu算力
qq_436962184 小时前
AI数据分析的利器:解锁BI工具的无限潜力
人工智能·数据挖掘·数据分析·ai数据分析
lilye665 小时前
精益数据分析(24/126):聚焦第一关键指标,驱动创业成功
数据挖掘·数据分析
Y1nhl11 小时前
搜广推校招面经八十一
开发语言·人工智能·pytorch·深度学习·机器学习·推荐算法·搜索算法
lilye6614 小时前
精益数据分析(20/126):解析经典数据分析框架,助力创业增长
大数据·人工智能·数据分析