信息增益——信息熵

本文深入探讨了信息熵的概念,解释了它是如何作为信息量和不确定性度量的,并通过实例说明了信息熵随知识增长的变化过程。同时,文章还介绍了基尼不纯度这一衡量信息不纯度的指标。

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

熵是一个热力学中表征物质状态的参量之一,物理意义为:体系混乱程度的度量。

信息熵是为了解决信息量化问题。香浓【】认为,一条信息的信息量和它的不确定性有直接关系。一个问题的不确定性越大,要搞清楚这个问题,需要了解的信息就越多,其信息熵就越大。

                                                                   

 

横坐标是P(x)表示x的概率

纵坐标为H(u)表示信息熵Entropy

当概率越接近0或者越接近1时,信息熵的值越小,其不确定性就越小,数据就越“纯”。

class Entropy(object):
    def __init__(self,name):
        self.name = name
    
    def entropy(X):
        Y = -X * np.log2(X)
        return Y
import matplotlib.pyplot as plt
import numpy as np
from aligo_alg import Entropy

#画出图
X = np.linspace(0,1,500)
Y = Entropy.entropy(X)
plt.xlabel("P(x)")

plt.ylabel("-P(x)log2(P(x))")
plt.plot(X,Y)

 

比如我们开始学习一门课程“无人驾驶”。

刚开始我们对其了解得很少,只有0,说明了解得信息很少,就是不知道!

对比于一个钻研30年的教授,对于这门课程的信息熵可能是接近于1的,就是我都知道。

在刚开始学习的时候,只是初步的做了了解,很多东西不知道,但是你又很想学好它。此时对于这门课程,你需要了解的东西就有很多很多,所以在前0.4的信息熵很大。

随着你慢慢的学习,思路慢慢的理清,需要了解的东西不多了。此时对于这门课程的信息熵就会慢慢减小了。

 

用白话描述就是,如果没有外力的作用,这个世界将是越来越无序的。人活着,在于尽量让熵变低,即让世界变得有序,降低不确定性。

当我们在消费资源时,是一个增熵的过程,将有序的食物变为无序的能力。

当我们在学习的时候,是一个减熵的过程,减少了不确定的信息,让自己的思维变得更加有序

信息增益(减熵量 - 增熵量)即是衡量人生价值得尺度。

 

信息熵除了是独立信息的不确定性指标,也是衡量信息“纯度”的指标

基尼不纯度 是衡量信息不纯度的指标:                       

class Gini_impurity(object):
    def __init__(self,name):
        self.name = name
        
    def gini_impurity(X):
        Y = X * (1-X)
        return Y

 

### 信息熵信息增益的概念及其计算方法 #### 什么是信息熵信息熵是一种衡量随机变量不确定性的指标,其核心思想来源于热力学中的熵概念。在信息论中,信息熵表示的是平均信息量或不确定性程度。如果一个事件的概率越低,则该事件发生时携带的信息量越大;反之亦然。因此,信息熵可以用作对信息的一种量化工具[^3]。 信息熵的定义如下: 对于离散型随机变量 \(X\) 的概率分布 \(\{p(x_i)\}\),其中 \(i=1,2,\ldots,n\) 表示可能的状态数,那么信息熵 \(H(X)\) 可以通过以下公式计算: \[ H(X) = -\sum_{i=1}^{n} p(x_i) \log_2(p(x_i)) \] 这里,\(p(x_i)\) 是状态 \(x_i\) 出现的概率,而 \(\log_2(p(x_i))\) 则是以 2 为底的对数函数[^2]。 #### 什么是信息增益信息增益是用来评估某个特征的重要性的一个重要指标。它描述了当引入某一特征后,数据集的混乱度(即信息熵)减少的程度。通常情况下,在构建决策树的过程中会优先选择具有较大信息增益的特征作为分裂节点[^4]。 假设有一个初始的数据集合 \(D\) 和某特定属性 \(A\) 将此数据划分为若干子集 \(\{D_v\}\),则基于属性 \(A\) 的划分所获得的信息增益可由下述公式给出: \[ IG(D,A) = H(D) - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} H(D_v) \] 此处,\(Values(A)\) 表示属性 \(A\) 所有可能取值的集合,\(D_v\) 对应于这些不同取值下的样本子集,而 \(H(D_v)\) 即为各子集中目标分类标签对应的条件熵。 #### 应用场景 信息熵信息增益广泛应用于机器学习领域,尤其是在决策树算法的设计过程中起到关键作用。具体而言,它们帮助确定最佳分割标准——即如何选取最优特征以及相应的阈值来进行下一步拆分操作。此外,在某些高级模型如随机森林或者梯度提升树当中也会间接利用到这两个概念来优化整体性能表现[^1]。 ```python import numpy as np def entropy(labels): """Calculate the information entropy of a given label distribution.""" value_counts = np.bincount(labels) probabilities = value_counts / len(labels) log_probabilities = np.log2(probabilities + 1e-9) # Avoid division by zero error. return -np.sum(probabilities * log_probabilities) def information_gain(data, labels, feature_index): """Compute Information Gain based on specified feature index.""" total_entropy = entropy(labels) unique_values, counts = np.unique(data[:, feature_index], return_counts=True) weighted_entropies = [] for val, cnt in zip(unique_values, counts): subset_indices = (data[:, feature_index] == val) subset_labels = labels[subset_indices] subset_entropy = entropy(subset_labels) weighted_entropies.append((cnt / len(labels)) * subset_entropy) gain = total_entropy - sum(weighted_entropies) return gain ``` 上述代码片段展示了如何实现基本的信息熵信息增益计算功能。`entropy()` 函数负责求解给定类别分布对应的整体熵值;而 `information_gain()` 方法则是针对指定维度特性去估算它的贡献度得分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值