我将使用哪种特征选择算法来找出哪个特征对每个 class 的影响最大?
What feature selection algorithm would I use to find out which feature impacts each class the most?
我目前正在试验一个数据集,使用具有 10 个特征和 3 个 classes 的监督学习,但出现了一个问题,即我将使用哪种特征选择算法来找出哪个特征影响哪个class最多,或者哪个特征组合会导致什么class。
例如,获取睡眠时间和研究时间的数据集,这可能会导致通过或失败。
我想知道小时研究如何影响通过 class 以及它如何影响失败 class 以及睡眠时间研究如何影响通过或失败。
哪种特征选择方法会告诉我睡眠时间对失败有 x 影响,对通过有 y 影响,对学习时间也有同样的影响?
一种方法是根据给定属性的属性值对 class 值进行分区后,观察 class 标签分布的熵如何变化。提供最大熵减少的属性是 "best" 属性。 (这仅适用于离散属性;您必须离散化属性才能使用此方法;例如,将 hoursSlept>7
转换为 sleptAlot
;将 5 <=hoursSlept<=7
转换为 sleptEnough
; 和 hoursSlept<5
到 sleepDeprived
.)
离散分布(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
个 class 值的样本数。这会导致离散分布 (p1,p2,...,pk)
,其中 k
是 class 值的数量。
对于具有可能值 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)
的值告诉您关于 class 标签的属性 A
的信息量。
供您参考,这在决策树学习中被广泛使用,该度量称为信息增益。看到,例如,these slides; this explanation on Math.SE 真的很棒(尽管它是在决策树学习的背景下)。
我目前正在试验一个数据集,使用具有 10 个特征和 3 个 classes 的监督学习,但出现了一个问题,即我将使用哪种特征选择算法来找出哪个特征影响哪个class最多,或者哪个特征组合会导致什么class。
例如,获取睡眠时间和研究时间的数据集,这可能会导致通过或失败。
我想知道小时研究如何影响通过 class 以及它如何影响失败 class 以及睡眠时间研究如何影响通过或失败。
哪种特征选择方法会告诉我睡眠时间对失败有 x 影响,对通过有 y 影响,对学习时间也有同样的影响?
一种方法是根据给定属性的属性值对 class 值进行分区后,观察 class 标签分布的熵如何变化。提供最大熵减少的属性是 "best" 属性。 (这仅适用于离散属性;您必须离散化属性才能使用此方法;例如,将 hoursSlept>7
转换为 sleptAlot
;将 5 <=hoursSlept<=7
转换为 sleptEnough
; 和 hoursSlept<5
到 sleepDeprived
.)
离散分布(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
个 class 值的样本数。这会导致离散分布 (p1,p2,...,pk)
,其中 k
是 class 值的数量。
对于具有可能值 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)
的值告诉您关于 class 标签的属性 A
的信息量。
供您参考,这在决策树学习中被广泛使用,该度量称为信息增益。看到,例如,these slides; this explanation on Math.SE 真的很棒(尽管它是在决策树学习的背景下)。