决策树选取特征之信息熵

决策树是一种基于特征选择的模型,用于分类和回归。通过递归地划分数据集,选择最优特征以最大化纯度(如信息熵的减少)。信息熵是衡量样本集合纯净度的指标,分类越多,熵值越大,表示系统越混乱。文章还提供了手写实现信息熵的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

决策树

决策树既可以用来做回归模型,也可以用来做分类模型。

核心思想

相似的输入必会产生相似的输出。
首先从训练样本矩阵中选择一个特征进行子表划分,使每个子表中该特征值的值全部相同,然后再在每个子表中选择下一个特征按照同样的规则继续划分更小的子表,不断重复直到所有特征值全部相同。对于待预测样本,根据其每一个特征的值,选择对应的子表,逐一匹配,直到找到与之完全匹配的叶级子表,用该子表中样本的输出,通过平均(回归)或者投票(分类)为待预测样本提供输出。

决策树的底层为一个二叉树

决策树分类

当我们在构建决策树的过程中,发现它其实就是一个递归构建的过程,但是在构建的过程中会遇到以下两个核心问题:

  • 如何选取特征。决策树构建的每一步,应该挑选最优的特征,进行决策对数据集划分效果最好;
  • 决定何时停止分类子节点
如何选取特征值呢
信息熵

信息熵(information entropy)是度量样本集合纯度的常用指标,该值越大,表示该集合纯度越低(或越混乱),该值越小,表示该集合纯度越高(或越有序),信息熵定义如下:
H = − ∑ i = 1 n P ( x i ) log ⁡ 2 P ( x i ) {\text{H}} = - \sum\limits_{i = 1}^n {P({x_i}){{\log }_2}P({x_i})} H=i=1nP(xi)log2P(xi)
其中,
P ( x i ) P({x_i}) P(xi)表示集合中第i类样本所占比例,当其为1时(只有1个类别,比例为100%), log ⁡ 2 P ( x i ) {{\log }_2}P({x_i}) log2P(xi)的值为0,整个系统信息熵为0;当类别越多, P ( x i ) P({x_i}) P(xi)的值越等于0, log ⁡ 2 P ( x i ) {{\log }_2}P({x_i}) log2P(xi)趋近于负无穷大,整个系统信息熵就越大

手写实现信息熵并绘图观察其变化

"""
    1-10个类别信息熵
"""
import math
import numpy as np
import matplotlib.pyplot as plt

class_num = 10


def cal_entropy(n):
    p = 1.0 / n  # 概率
    total_entropy = 0.0  # 总熵值

    for i in range(n):
        p_i = p * math.log2(p)
        total_entropy += p_i
    return -total_entropy


entropies = []

for i in range(1, class_num + 1):
    entropy = cal_entropy(i)
    entropies.append(entropy)

plt.plot(np.arange(1, class_num + 1),
         entropies, color='orangered')
plt.show()

输出结果如下图:
在这里插入图片描述
由上图可以看出,分类越多,熵值越大,越混乱。是不是很像高中化学中的那个熵值呢?

如有错误,请联系作者改正,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二月w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值