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 为底的对数(在 Weka 中使用以 e 为底的自然对数,但一般我们取 log2)。熵基本上衡量了“杂质”的程度。越接近 0,数据集中的杂质就越少。
因此,好的属性是包含最多信息的属性,即减少最多的熵。 Weka 的 InfoGainAttributeEval 方法是一种准确评估这一点的方法。
现在,我们示例的熵是:
H(类) = -(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 位,特征对降低熵的贡献(=信息增益)相当小。 p>
从数据集中的实例来看,这一点非常明显,我们乍一看可以看出,与风特征不同,温度对最终类的影响不大。
至于 GainRatioAttributeEval,它是 InfoGain 的增强,具有标准化分数。
希望有帮助!
部分答案的来源:Anuj Sharma 和 Shubhamoy Dey。文章:情感分析的特征选择方法和情感词典的性能调查。 IJCA 针对 HPC 应用的高级计算和通信技术专刊 ACCTHPCA(3):15-20,2012 年 7 月。