【问题标题】:How the selection happens in 'InfoGainAttributeEval' in weka feature selection (filter method)weka 特征选择中的“InfoGainAttributeEval”中的选择如何发生(过滤方法)
【发布时间】:2016-03-03 03:56:57
【问题描述】:

我目前正在使用“InfoGainAttributeEval”进行特征选择。我想知道这种方法会发生什么。我找到了以下内容。

通过测量关于类的信息增益来评估属性的价值。

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

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

【问题讨论】:

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


    【解决方案1】:

    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 月。

    【讨论】:

    • 谢谢你的解释,我有一个疑问,在H(Class | Temperature) = 4/7*H(left_split) + 3/7*H(right_split).,会不会是H(Class | Temperature) = 5/7*H(left_split) + 2/7*H(right_split).,和第一个例子一样,当你第一次计算H(Class)时?
    猜你喜欢
    • 2014-02-03
    • 2020-10-24
    • 2015-06-03
    • 2020-07-07
    • 2023-03-11
    • 2011-01-05
    • 2014-09-21
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多