【问题标题】:What feature selection algorithm would I use to find out which feature impacts each class the most?我会使用什么特征选择算法来找出对每个类影响最大的特征?
【发布时间】:2016-07-24 08:57:24
【问题描述】:

我目前正在试验一个数据集,使用具有 10 个特征和 3 个类别的监督学习,但出现了一个问题,即我将使用什么特征选择算法来找出哪些特征对哪个类别的影响最大,或者哪个组合of features 将导致哪个类。

例如,以睡眠时间和研究时间的数据集为例,这可能会导致通过或失败。

我想知道 Hours Studies 如何影响及格班以及它如何影响不及格班以及 Hours Slept 如何影响通过或失败。

什么特征选择方法会告诉我,Hours Slept 对 Fail 有 x 影响,对 Pass 有 y 影响,对于 Hours study 也是如此?

【问题讨论】:

    标签: algorithm machine-learning feature-selection


    【解决方案1】:

    一种方法是观察根据给定属性的属性值划分类值后类标签分布的熵如何变化。提供最大熵减少的属性是“最佳”属性。 (这仅适用于离散属性;您必须离散化属性才能使用此方法;例如,将hoursSlept>7 转换为sleptAlot;将5 <=hoursSlept<=7 转换为sleptEnough;以及将hoursSlept<5 转换为@987654328 @.)

    离散分布(p1,p2,...,pk) 的熵H 定义为

    H = -p1*log_2 p1 - p2*log_2 p2 - ... - pk*log_2 pk
    

    粗略地说,它测量分布的杂质。先验结果越少,熵就越高;你对结果的了解越多,熵就越小。事实上,所有i 的分布pi=1/k(所有结果的可能性相同)具有最高可能的熵(值log_2 k);以及pi=1 对某些i 具有最低可能熵的分布(值0)。

    定义pi=ni/n,其中n 是示例数,ni 是具有i-th 类值的示例数。这导致了一个离散分布(p1,p2,...,pk),其中k 是类值的数量。

    对于具有可能值a1,a2,...,ar 的属性A,将Si 定义为属性A 的值等于ai 的那些示例的集合。每个集合Si 都会产生一个离散分布(定义方式与之前相同)。设|Si| 为集合Si 中的示例数。用H(Si)表示对应的熵。

    现在计算

    Gain(A) = H - |S1|/n * H(S1) - ... - |Sr|/n * H(Sr)
    

    并选择最大化Gain(A) 的属性。直觉是最大化这种差异的属性对示例进行分区,因此在大多数Si 中,示例具有相似的标签(即熵很低)。

    Gain(A) 的值直观地告诉您属性A 对类标签的信息量。

    供您参考,这在决策树学习中被广泛使用,度量称为信息增益。例如,参见these slides;这个explanation on Math.SE 真的很棒(尽管它是在决策树学习的背景下)。

    【讨论】:

    • 可爱,谢谢 Blazs 我想我现在明白了,真的很详细,它让我想到了另一个问题。我用什么来获得对类上特定属性值的影响例如,假设我们将属性离散化,正如您提到的,睡眠时间将是属性,而 sleptAlot 将是属性值,我有兴趣了解它如何影响通过或失败.谢谢!!!
    • 那么问题是各个属性值如何影响类?您可以通过计算 H(S_sleptAlot) 然后将其与 H 进行比较来量化这一点(例如,取差值)。如果您想知道属性值如何影响实际的类值,可以查看分布本身。
    • 很高兴能帮上忙! :-)
    猜你喜欢
    • 2011-07-10
    • 2021-03-26
    • 2014-01-16
    • 2012-12-16
    • 2018-06-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多