信息增益计算实例

原文链接

转载于:https://www.cnblogs.com/luoganttcc/p/10525328.html

### 计算信息增益的方法 在决策树的学习过程中,信息增益是一个重要的指标,用来衡量通过引入某一特征能够使数据集的混乱度降低多少。这一过程依赖于熵的概念。 #### 熵(Entropy) 熵是描述随机变量不确定性的度量,在二元分类问题中可以定义为: \[ H(S) = -\sum_{i=1}^{c} p_i \log_2(p_i) \] 其中 \(p_i\) 表示类别\(i\)的概率[^2]。 对于多类别的分类问题,上述公式同样适用,只需将求和范围扩展到所有的类别数\(c\)即可。 #### 信息增益(Information Gain) 给定一个数据集\(D\)以及其子集划分后的各个分支的数据分布情况,则该属性的信息增益可由原始集合的熵减去各分支加权平均后的熵得到: \[ IG(D, A)=H(D)-\sum_{v=1}^{V}\frac{\left|D^{v}\right|}{|D|} H\left(D^{v}\right) \] 这里, - \(IG(D,A)\)代表针对属性A的信息增益; - \(H(D)\) 是整个数据集的熵; - 对于每一个可能的值\(a_v\),有对应的子集\(D^v=\{x|x_A=a_v,x∈D\}\),即只保留那些在这个特定位置上等于\(a_v\) 的样本组成的新的数据集; - 加权因子\(\frac{|D^v|}{|D|}\)反映了不同分支所占的比例大小; #### 示例说明 假设有一个简单的天气条件预测是否适合户外活动的例子,如下表所示: | 天气状况 | 温度等级 | 风力强度 | 是否适合 | | -------- | ------- | ------ | ----- | | 晴朗 | 热 | 弱 | 否 | | 晴朗 | 热 | 强 | 是 | | 过云 | 热 | 弱 | 是 | | 下雨 | 中间 | 弱 | 是 | | 下雨 | 凉爽 | 弱 | 否 | | 下雨 | 凉爽 | 强 | 否 | | 过云 | 凉爽 | 强 | 是 | | 晴朗 | 中间 | 弱 | 是 | 现在要计算“风力强度”这个属性的信息增益作为例子展示。 先计算整体数据集关于“是否适合”的熵\(H(D)\): 设正例(Yes)数量为9,反例(No)数量也为5, 那么总共有14个实例, 所以\(H(D)=-((9/14)*\log_2{(9/14)}+(5/14)*\log_2{(5/14)})≈0.940\) 接着分别考虑弱风和强风两个条件下,“是否适合”的概率分布,并据此计算各自的熵\(H(D^w),H(D^s)\), 最后利用上面提到的信息增益公式得出结论。 ```python import math def entropy(probabilities): """Calculate the entropy of a list of probabilities.""" return sum([-p * math.log(p, 2) for p in probabilities if p != 0]) # Overall dataset distribution (suitable or not) total_yes = 9 / 14 total_no = 5 / 14 overall_entropy = entropy([total_yes, total_no]) print(f'Overall Entropy: {overall_entropy:.3f}') # Wind conditions distributions weak_wind_distribution = [6/7, 1/7] strong_wind_distribution = [3/7, 4/7] entropy_weak_wind = entropy(weak_wind_distribution) entropy_strong_wind = entropy(strong_wind_distribution) weighted_average_entropy = ((7/14) * entropy_weak_wind + (7/14) * entropy_strong_wind) information_gain_wind_strength = overall_entropy - weighted_average_entropy print(f'Information Gain from splitting on wind strength: {information_gain_wind_strength:.3f}') ``` 此代码片段展示了如何根据给出的数据手动计算信息增益的过程。注意这里的数值仅为示意用途,实际应用时应依据具体数据集调整参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值