如何在weka特征选择(过滤方法)中的'InfoGainAttributeEval'中进行选择

时间:2015-11-29 12:49:09

标签: machine-learning weka feature-extraction feature-selection

我目前正在使用'InfoGainAttributeEval'进行功能选择。我想知道该方法会发生什么。我找到了以下内容。

通过测量关于班级的信息收益来评估属性的价值。

InfoGain(Class,Attribute)= H(Class) - H(Class | Attribute)。

由于我是这个领域的新手,我不明白它是什么。有人可以解释一下它是如何工作的吗? :)与'GainRationAttributeEval'

有什么区别

1 个答案:

答案 0 :(得分:6)

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(Class,Temperature)= H(Class) - H(Class | Temperature)。

要获得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日。