我想知道哪种特征选择算法可以用来找出每个类别受哪个特征影响最大?

我目前正在使用一个包含10个特征和3个类别的数据集进行监督学习实验,但有一个问题出现了:我应该使用哪种特征选择算法来找出哪个特征对哪个类别影响最大,或者哪些特征的组合会导致哪个类别。

例如,假设有一个数据集,包含睡眠时间和学习时间,这可能会导致通过或失败的结果。

enter image description here

我想知道学习时间如何影响通过类别,以及如何影响失败类别,同样的,睡眠时间如何影响通过或失败的结果。

哪种特征选择方法可以告诉我睡眠时间对失败有x影响,对通过有y影响,同样的,学习时间也有相应的影响?


回答:

一种方法是观察在根据某个属性的值对类别值进行分区后,类别标签分布的熵如何变化。熵减少最大的属性就是“最佳”属性。(这种方法仅适用于离散属性;你需要将属性离散化才能使用这种方法;例如,将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

它大致衡量了分布的杂质。先验上你对结果了解得越少,熵就越高;先验上你对结果了解得越多,熵就越低。实际上,分布pi=1/k对于所有i(所有结果的可能性相等)具有最高可能的熵(值为log_2 k);而分布pi=1对于某个i具有最低可能的熵(值为0)。

定义pi=ni/n,其中n是样本数,ni是第i类值的样本数。这会诱导一个离散分布(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对类别标签的了解程度。

供你参考,这种方法在决策树学习中广泛使用,该度量被称为信息增益。例如,参见这些幻灯片;这个Math.SE上的解释非常好(尽管是在决策树学习的背景下)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注