![](/img/trans.png)
[英]How to do these in weka: cross validation + imbalanced data + feature selection
[英]How the selection happens in 'InfoGainAttributeEval' in weka feature selection (filter method)
我目前正在使用'InfoGainAttributeEval'进行功能选择。 我想知道该方法会发生什么。 我找到了以下内容。
通过测量关于类的信息增益来评估属性的价值。
InfoGain(Class,Attribute)= H(Class) - H(Class | Attribute)。
由于我是这个领域的新手,我不明白它是什么。 有人可以解释一下它是如何工作的吗? :)与'GainRationAttributeEval'有什么区别?
InfoGainAttributeEval(和GainRatioAttributeEval)都用于特征选择任务 。
InfoGainAttributeEval基本上做的是测量每个特征如何有助于降低整体熵 。
我们来举个例子吧。 假设我们有这个数据集:
------------------------------------------
temperature | wind | class
high | low | play
low | low | play
high | low | play
low | high | cancelled
low | low | play
high | high | canceled
high | low | play
熵,H(X),定义如下:
H(X) = -sum(Pi*log2(Pi))
,Pi是数据集中类i的概率,log2是基数2的对数(使用基数e的 Weka自然对数,但通常我们采用log2)。 熵基本上测量“杂质”的程度 。 最接近0的是,数据集中的杂质越少。
因此,良好属性是包含最多信息的属性,即, 减少最多的熵 。 Weka的InfoGainAttributeEval方法正是一种评估这种方法的方法。
现在,我们的例子的熵是:H(Class)= - (5/7 * log2(5/7)+2 / 7 * log(2/7))= 0,863。
让我们为我们的例子计算温度属性所携带的信息量。
InfoGain(等级,温度)= H(等级) - H(等级|温度)。
要获得H(Class | Temperature),我们需要根据此属性拆分数据集。
Dataset
/ \
/ \
/ Temp° \
/ \
/ \
/ \
high low
temperature | wind | class temperature|wind|class
high | low | play low | low|play
high | low | play low | high|cancelled
high | high | cancelled low | low |play
high | low | play
这里的每个分支都有自己的熵。 我们需要首先计算每个分裂的熵。
H(left_split) = -(3/4log(3/4)+1/4log(1/4) = 0,811
H(right_split) = -(1/3log(1/3)+2/3log(2/3) = 0,918
然后,H(Class | Temperature)等于两个孩子的熵的总和,加权来自父数据集的实例的比例。 简而言之 :
H(Class | Temperature) = 4/7*H(left_split) + 3/7*H(right_split).
然后,您可以随心所欲地计算InfoGain。 在这个例子中,它是0.06位。 这意味着温度特征仅将全局熵减少0.06位,该特征对减小熵 (= 信息增益 ) 的贡献相当小。
这很明显地看着数据集中的实例,因为我们可以乍看之下,与风特征不同,温度对最终类别的影响不大。
至于GainRatioAttributeEval ,它是InfoGain的增强版,具有标准化分数。
希望有所帮助!
部分回答的来源:Anuj Sharma和Shubhamoy Dey。 文章:情感分析的特征选择方法和情感词典的表现研究。 IJCA针对HPC应用的高级计算和通信技术特刊ACCTHPCA(3):2012年7月15 - 20日。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.