信息增益、增益率、基尼系数、误分类率计算案例详解

在机器学习和数据挖掘中,特征选择是一个重要的步骤,它可以帮助我们选择最相关的特征来构建模型,提高模型的准确性和效率。信息增益、信息增益率、基尼系数和误分类错误率是常用的特征选择指标。

本文将通过一个简单的数据集,详细讲解如何计算这些指标,帮助大家更好地理解特征选择在机器学习中的应用。

数据集

假设有一个数据集,包含5个样本,其中3个属于类别A,2个属于类别B。每个样本都有两个特征,特征1和特征2,它们的取值如下表所示:

| 样本 | 特征1 | 特征2 | 类别 | |------|-------|-------|------| | 1 | 1 | 1 | A | | 2 | 1 | 0 | A | | 3 | 1 | 1 | B | | 4 | 0 | 0 | A | | 5 | 0 | 1 | B |

现在我们想要计算特征1和特征2的信息增益、信息增益率、基尼系数和误分类错误率,以便选择最佳特征进行分类。

1. 计算数据集的熵

熵是用来衡量数据集不确定性的指标,熵值越大,数据集的不确定性越高。数据集的熵计算公式如下:

H(D) = - Σ (p_i * log2(p_i))

其中,p_i 表示第 i 个类别样本在数据集中出现的概率。

对于本例,数据集的熵为:

H(D) = -(3/5) * log2(3/5) - (2/5) * log2(2/5) = 0.971

2. 计算特征的条件熵和信息增益

条件熵是指在已知特征 A 的情况下,数据集 D 的不确定性。特征 A 的条件熵计算公式如下:

H(D|A) = Σ (p(A_i) * H(D|A_i))

其中,p(A_i) 表示特征 A 取值为 A_i 的样本在数据集中出现的概率,H(D|A_i) 表示在特征 A 取值为 A_i 的情况下,数据集 D 的熵。

信息增益是指特征 A 减少数据集 D 的不确定性的程度,计算公式如下:

IG(D, A) = H(D) - H(D|A)

特征1:

  • 将数据集按照特征1的取值划分为两个子集:
    • 特征1 = 1: { (1,1,A), (1,0,A), (1,1,B) }
    • 特征1 = 0: { (0,0,A), (0,1,B) }
  • 计算特征1的条件熵:
    H(D|特征1) = (3/5) * [-(2/3) * log2(2/3) - (1/3) * log2(1/3)] + (2/5) * [-(1/2) * log2(1/2) - (1/2) * log2(1/2)] = 0.571
    
  • 计算特征1的信息增益:
    IG(D, 特征1) = H(D) - H(D|特征1) = 0.971 - 0.571 = 0.4
    

特征2:

  • 将数据集按照特征2的取值划分为两个子集:
    • 特征2 = 1: { (1,1,A), (1,1,B), (0,1,B) }
    • 特征2 = 0: { (1,0,A), (0,0,A) }
  • 计算特征2的条件熵:
    H(D|特征2) = (3/5) * [-(2/3) * log2(2/3) - (1/3) * log2(1/3)] + (2/5) * [-(1/2) * log2(1/2) - (1/2) * log2(1/2)] = 0.571
    
  • 计算特征2的信息增益:
    IG(D, 特征2) = H(D) - H(D|特征2) = 0.971 - 0.571 = 0.4
    

3. 计算特征的信息增益率

信息增益率是在信息增益的基础上,考虑了特征本身的熵,计算公式如下:

IGR(D, A) = IG(D, A) / H(A)

其中,H(A) 表示特征 A 的熵。

特征1:

  • 计算特征1的熵:
    H(特征1) = -(3/5) * log2(3/5) - (2/5) * log2(2/5) = 0.971
    
  • 计算特征1的信息增益率:
    IGR(D, 特征1) = IG(D, 特征1) / H(特征1) = 0.4 / 0.971 = 0.412
    

特征2:

  • 计算特征2的熵:
    H(特征2) = -(3/5) * log2(3/5) - (2/5) * log2(2/5) = 0.971
    
  • 计算特征2的信息增益率:
    IGR(D, 特征2) = IG(D, 特征2) / H(特征2) = 0.4 / 0.971 = 0.412
    

4. 计算特征的基尼系数和误分类错误率

基尼系数是用来衡量数据集纯度的指标,基尼系数越小,数据集的纯度越高。特征 A 的基尼系数计算公式如下:

Gini(D|A) = Σ (p(A_i) * (1 - Σ (p(j|A_i))^2))

其中,p(A_i) 表示特征 A 取值为 A_i 的样本在数据集中出现的概率,p(j|A_i) 表示在特征 A 取值为 A_i 的情况下,类别 j 出现的概率。

误分类错误率是指在使用特征 A 进行分类时,分类错误的样本占总样本的比例。

特征1:

  • 计算特征1的基尼系数:
    Gini(D|特征1) = (3/5) * [1 - ((2/3)^2 + (1/3)^2)] + (2/5) * [1 - ((1/2)^2 + (1/2)^2)] = 0.4
    
  • 计算特征1的误分类错误率:
    ERR(D|特征1) = (1/5) * 2 + (2/5) * (1/2) + (2/5) * (1/2) = 0.6 
    

特征2:

  • 计算特征2的基尼系数:
    Gini(D|特征2) = (3/5) * [1 - ((2/3)^2 + (1/3)^2)] + (2/5) * [1 - ((1/2)^2 + (1/2)^2)] = 0.4
    
  • 计算特征2的误分类错误率:
    ERR(D|特征2) = (2/5) * (1/3) + (3/5) * (1/2) + (0/5) * 1 = 0.4
    

总结

通过计算,我们可以得到如下结果:

| 特征 | 信息增益 | 信息增益率 | 基尼系数 | 误分类错误率 | |---|---|---|---|---| | 特征1 | 0.4 | 0.412 | 0.4 | 0.6 | | 特征2 | 0.4 | 0.412 | 0.4 | 0.4 |

从结果可以看出,特征1和特征2的信息增益和信息增益率相同,但是特征2的基尼系数和误分类错误率更低,因此特征2是更优的特征。

需要注意的是,以上只是一些常用的特征选择指标,实际应用中应该根据具体的数据集和模型选择合适的指标。

信息增益、增益率、基尼系数、误分类率计算案例

原文地址: https://www.cveoy.top/t/topic/fYM2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录