【结合实例】信息增益的计算

本文介绍了信息增益的基本概念及其在数据分析中的应用,并通过具体案例详细解释了如何使用熵来衡量不确定性,以及如何通过信息增益判断特征的重要性。此外,还提供了使用HiveSQL实现信息增益计算的方法。

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

参考文章:

https://www.cnblogs.com/qcloud1001/p/6735352.html

http://blog.csdn.net/lixuemei504/article/details/7278748

http://blog.csdn.net/u013164528/article/details/44359677

信息增益原理介绍

介绍信息增益之前,首先需要介绍一下熵的概念,这是一个物理学概念,表示“一个系统的混乱程度”。系统的不确定性越高,熵就越大。假设集合中的变量X={x1,x2…xn},它对应在集合的概率分别是P={p1,p2…pn}。那么这个集合的熵表示为:

举一个的例子:对游戏活跃用户进行分层,分为高活跃、中活跃、低活跃,游戏A按照这个方式划分,用户比例分别为20%,30%,50%。游戏B按照这种方式划分,用户比例分别为5%,5%,90%。那么游戏A对于这种划分方式的熵为:

同理游戏B对于这种划分方式的熵为:

游戏A的熵比游戏B的熵大,所以游戏A的不确定性比游戏B高。用简单通俗的话来讲,游戏B要不就在上升期,要不就在衰退期,它的未来已经很确定了,所以熵低。而游戏A的未来有更多的不确定性,它的熵更高。

介绍完熵的概念,我们继续看信息增益。为了便于理解,我们还是以一个实际的例子来说明信息增益的概念。假设有下表样本

!

第一列为QQ,第二列为性别,第三列为活跃度,最后一列用户是否流失。我们要解决一个问题:性别和活跃度两个特征,哪个对用户流失影响更大?我们通过计算信息熵可以解决这个问题。

按照分组统计,我们可以得到如下信息:

其中Positive为正样本(已流失),Negative为负样本(未流失),下面的数值为不同划分下对应的人数。那么可得到三个熵:

整体熵:

性别熵:

性别信息增益:

同理计算活跃度熵:

活跃度信息增益:

活跃度的信息增益比性别的信息增益大,也就是说,活跃度对用户流失的影响比性别大。在做特征选择或者数据分析的时候,我们应该重点考察活跃度这个指标。

使用Hive SQL实现信息熵的计算

从表2中我们不难发现,在计算信息熵和信息增益之前,需要对各维度做汇总计数,计算各公式中出现的分母。Hive SQL中,cube能帮助我们很快的做汇总计算,话不多说直接上代码:


SELECT
t1.feature_name,
SUM((ea_all/es)*EA) as gain,
SUM(NVL(-(ea_all/ES)*log2(ea_all/es),0)) as info,--计算信息增益率的分母 SUM((ea_all/es)*EA)/SUM(NVL(-(ea_all/es)*log2(ea_all/es),0)) as gain_rate--信息增益率计算 FROM ( SELECT feature_name, feature_value, ea_all, --Key Step2 对于整体熵,要记得更换符号,NVL的出现是防止计算log2(0)得NULL case when feature_value='-100' then -(NVL((ea_positive/ea_all)*log2(ea_positive/ea_all),0)+NVL((ea_negative/ea_all)*log2(ea_negative/ea_all),0)) else (NVL((ea_positive/ea_all)*log2(ea_positive/ea_all),0)+NVL((ea_negative/ea_all)*log2(ea_negative/ea_all),0)) end as EA FROM ( SELECT feature_name, feature_value, SUM(case when is_lost=-100 then user_cnt else 0 end) as ea_all, SUM(case when is_lost=1 then user_cnt else 0 end) as ea_positive, SUM(case when is_lost=0 then user_cnt else 0 end) as ea_negative FROM ( SELECT feature_name, --Key Step1 对feature值和label值做汇总统计,1、用于熵计算的分母,2、计算整体熵情况 case when grouping(feature_value)=1 then '-100' else feature_value end as feature_value, case when grouping(is_lost)=1 then -100 else is_lost end as is_lost, COUNT(1) as user_cnt FROM ( SELECT feature_name,feature_value,is_lost FROM gain_caculate )GROUP BY feature_name,cube(feature_value,is_lost) )GROUP BY feature_name,feature_value ) )t1 join ( --Key Step3信息增益计算时,需要给出样本总量作为分母 SELECT feature_name,COUNT(1) as es FROM gain_caculate GROUP BY feature_name )t2 on t1.feature_name=t2.feature_name GROUP BY t1.feature_name 

数据表结构如下:

关键步骤说明:

KeyStep1:各特征的熵计算

KeyStep2:各feature下的信息增熵

信息增益计算结果:

结束语:

以上为信息熵计算过程的SQL版本,其关键点在于使用cube实现了feature和label所需要的汇总计算。需要的同学只需要按照规定的表结构填入数据,修改SQL代码即可计算信息增益。文中如有不足的地方,还请各位指正。

参考文档

[1] 算法杂货铺——分类算法之决策树(Decision tree)

http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

[2] c4.5为什么使用信息增益比来选择特征?

https://www.zhihu.com/question/22928442

参考资源链接:[控制系统稳定性:相位裕度与增益裕度解析](https://wenku.csdn.net/doc/2hfzqosu63?utm_source=wenku_answer2doc_content) 分析控制系统的稳定性和计算增益裕度与相位裕度,Bode图是一个十分有效的工具。《控制系统稳定性:相位裕度与增益裕度解析》详细解析了这一过程,提供了一个全面的理论和实际应用视角。 首先,Bode图由增益图(Magnitude Plot)和相位图(Phase Plot)组成,分别表示系统增益和相位随频率变化的情况。在增益图中,增益裕度是系统增益从零开始增加到1分贝(dB)时的频率处的增益值与零增益之间的差值。换句话说,它是系统增益在交叉-1分贝线之前的余量。在相位图中,相位裕度是系统相位到达-180度时的频率处的相位与-180度之间的差值。 在实际操作中,我们通常先绘制开环传递函数的Bode图。例如,考虑一个开环传递函数为G(s)H(s) = K/(s(s+2)(s+3))的控制系统。首先,我们需要求出该传递函数的增益和相位响应。通过计算开环传递函数在特定频率下的增益和相位,我们可以得到Bode图。 在Bode图上,我们可以看到增益曲线在某一频率下交叉-1分贝线,该频率为增益交叉频率。在相位图上,我们可以找到相位达到-180度的频率点。增益裕度是该交叉频率下增益与-1分贝的差值;相位裕度是该频率点相位与-180度的差值。 如果增益裕度为正且相位裕度为正,系统是稳定的。如果增益裕度和相位裕度都小于零,系统将是不稳定的。若其中一个裕度为负,系统可能处于临界稳定状态。通过分析这些裕度,设计者可以对系统进行调整,如增加系统的相位裕度或增益裕度,从而提高系统的稳定性。 对于希望深入理解控制系统稳定性,以及如何利用Bode图进行稳定性分析的学习者,《控制系统稳定性:相位裕度与增益裕度解析》是一份宝贵的资源。它不仅提供了一个完整的理论框架,还通过实例分析,帮助读者建立起理论和实践之间的桥梁,使得控制系统的稳定性分析不再是抽象的概念,而是可以实际操作和应用的技能。 参考资源链接:[控制系统稳定性:相位裕度与增益裕度解析](https://wenku.csdn.net/doc/2hfzqosu63?utm_source=wenku_answer2doc_content)
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值