机器学习|决策树|Gini指数和熵的区别|简单示例

如是我闻: 在决策树模型中,Gini指数和熵(Entropy)是用来计算节点纯度的两种方法。它们都是评估分裂点的好坏,以选择最佳的属性来分裂。让我们先来了解一下这两种方法的定义,然后通过一个简单的例子来讨论它们之间的区别。

Gini指数

Gini指数是一个衡量数据分布不均匀程度的指标。在决策树中,它用于评估数据集的不纯度。Gini指数越低,数据的纯度越高。其计算公式为:
G i n i = 1 − ∑ i = 1 n p i 2 Gini = 1 - \sum_{i=1}^n p_i^2 Gini=1−i=1∑npi2

其中 p i p_i pi 是类别 i i i 在集合中的比例。

熵(Entropy)

熵是衡量数据集随机性的指标,同样用于评估数据集的不纯度。熵越高,数据的不确定性越大。其计算公式为:
E n t r o p y = − ∑ i = 1 n p i log ⁡ 2 ( p i ) Entropy = -\sum_{i=1}^n p_i \log_2(p_i) Entropy=−i=1∑npilog2(pi)

其中 p i p_i pi 是类别 i i i 在集合中的比例。

好的,相信你一定纳闷他们到低是来干什么用的,下面我们来看一个生活化的例子------小朋友分水果------来解释Gini指数和熵(Entropy)如何在决策树中帮助选择分裂属性。

场景描述

假设我们在幼儿园有一个水果分发活动,有20个小朋友参加,分发的水果有苹果和香蕉。以下是小朋友的喜好列表:

  • 10个小朋友喜欢苹果
  • 10个小朋友喜欢香蕉

我们的目标是通过询问一个问题(属性的选择),尽可能准确地分辨出哪些小朋友喜欢苹果,哪些喜欢香蕉。

选择属性

假设我们可以询问的问题有两个:

  1. "你是否喜欢吃甜食?"
  2. "你是男孩还是女孩?"

情况一

假设第一个问题"你是否喜欢吃甜食?"的回答如下:

  • 是:12个小朋友(6喜欢苹果,6喜欢香蕉)
  • 否:8个小朋友(4喜欢苹果,4喜欢香蕉)

计算Gini指数

G i n i ( 是 ) = 1 − ( ( 6 12 ) 2 + ( 6 12 ) 2 ) = 0.5 Gini(是) = 1 - ( (\frac{6}{12})^2 + (\frac{6}{12})^2 ) = 0.5 Gini(是)=1−((126)2+(126)2)=0.5
G i n i ( 否 ) = 1 − ( ( 4 8 ) 2 + ( 4 8 ) 2 ) = 0.5 Gini(否) = 1 - ( (\frac{4}{8})^2 + (\frac{4}{8})^2 ) = 0.5 Gini(否)=1−((84)2+(84)2)=0.5
G i n i ( 总体 ) = 12 20 × 0.5 + 8 20 × 0.5 = 0.5 Gini(总体) = \frac{12}{20} \times 0.5 + \frac{8}{20} \times 0.5 = 0.5 Gini(总体)=2012×0.5+208×0.5=0.5

计算熵

E n t r o p y ( 是 ) = − ( 6 12 log ⁡ 2 6 12 + 6 12 log ⁡ 2 6 12 ) = 1 Entropy(是) = -(\frac{6}{12} \log_2 \frac{6}{12} + \frac{6}{12} \log_2 \frac{6}{12}) = 1 Entropy(是)=−(126log2126+126log2126)=1
E n t r o p y ( 否 ) = − ( 4 8 log ⁡ 2 4 8 + 4 8 log ⁡ 2 4 8 ) = 1 Entropy(否) = -(\frac{4}{8} \log_2 \frac{4}{8} + \frac{4}{8} \log_2 \frac{4}{8}) = 1 Entropy(否)=−(84log284+84log284)=1
E n t r o p y ( 总体 ) = 12 20 × 1 + 8 20 × 1 = 1 Entropy(总体) = \frac{12}{20} \times 1 + \frac{8}{20} \times 1 = 1 Entropy(总体)=2012×1+208×1=1

这个问题没有很好地分离出喜好不同的小朋友,因为不论是使用Gini指数还是熵,分裂后的子集依然保持了原始分布的比例(1:1苹果与香蕉的比例)。

情况二

现在假设第二个问题"你是男孩还是女孩?"的回答分布为:

  • 男孩:10个小朋友(9喜欢苹果,1喜欢香蕉)
  • 女孩:10个小朋友(1喜欢苹果,9喜欢香蕉)

让我们来计算在第二个问题"你是男孩还是女孩?"的情况下,使用Gini指数和熵的具体数值,并展示这个问题如何更有效地帮助分辨小朋友的水果喜好。

计算Gini指数

首先计算每个分支的Gini指数:

G i n i ( 男孩 ) = 1 − ( ( 9 10 ) 2 + ( 1 10 ) 2 ) = 1 − ( 0.81 + 0.01 ) = 0.18 Gini(男孩) = 1 - ( (\frac{9}{10})^2 + (\frac{1}{10})^2 ) = 1 - (0.81 + 0.01) = 0.18 Gini(男孩)=1−((109)2+(101)2)=1−(0.81+0.01)=0.18
G i n i ( 女孩 ) = 1 − ( ( 1 10 ) 2 + ( 9 10 ) 2 ) = 1 − ( 0.01 + 0.81 ) = 0.18 Gini(女孩) = 1 - ( (\frac{1}{10})^2 + (\frac{9}{10})^2 ) = 1 - (0.01 + 0.81) = 0.18 Gini(女孩)=1−((101)2+(109)2)=1−(0.01+0.81)=0.18

总体Gini指数为:
G i n i ( 总体 ) = 10 20 × 0.18 + 10 20 × 0.18 = 0.18 Gini(总体) = \frac{10}{20} \times 0.18 + \frac{10}{20} \times 0.18 = 0.18 Gini(总体)=2010×0.18+2010×0.18=0.18

计算熵

接下来计算每个分支的熵:

E n t r o p y ( 男孩 ) = − ( 9 10 log ⁡ 2 9 10 + 1 10 log ⁡ 2 1 10 ) = − ( 9 10 × ( − 0.152 ) + 1 10 × 3.321 ) = 0.469 Entropy(男孩) = -(\frac{9}{10} \log_2 \frac{9}{10} + \frac{1}{10} \log_2 \frac{1}{10})=-(\frac{9}{10} \times (-0.152) + \frac{1}{10} \times 3.321) = 0.469 Entropy(男孩)=−(109log2109+101log2101)=−(109×(−0.152)+101×3.321)=0.469

E n t r o p y ( 女孩 ) = − ( 1 10 log ⁡ 2 1 10 + 9 10 log ⁡ 2 9 10 ) = 0.469 ( 同样的计算过程 ) Entropy(女孩) = -(\frac{1}{10} \log_2 \frac{1}{10} + \frac{9}{10} \log_2 \frac{9}{10})=0.469(同样的计算过程) Entropy(女孩)=−(101log2101+109log2109)=0.469(同样的计算过程)

总体熵为:
E n t r o p y ( 总体 ) = 10 20 × 0.469 + 10 20 × 0.469 = 0.469 Entropy(总体) = \frac{10}{20} \times 0.469 + \frac{10}{20} \times 0.469 = 0.469 Entropy(总体)=2010×0.469+2010×0.469=0.469

比较和结论

与第一个问题相比(在那里我们得到了总体Gini指数为0.5和总体熵为1),第二个问题的Gini指数和熵都明显降低,说明这个问题能更有效地区分小朋友对水果的喜好。降低的Gini指数和熵值表示在分裂后的子集纯度更高,每组中几乎都是喜欢同一种水果的小朋友。因此,这个属性(性别)更适合用来划分数据,达到更高的预测准确性和效率。

但是我还是想说,实际应用中他俩没有什么显著的区别

非常的有品

以上

相关推荐
智驱力人工智能29 分钟前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_1601448733 分钟前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile33 分钟前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算
人工不智能57736 分钟前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
盟接之桥38 分钟前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
kfyty72538 分钟前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
h64648564h1 小时前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
数据与后端架构提升之路1 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
忆~遂愿1 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
Liue612312311 小时前
YOLO11-C3k2-MBRConv3改进提升金属表面缺陷检测与分类性能_焊接裂纹气孔飞溅物焊接线识别
人工智能·分类·数据挖掘