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

我目前正在使用一个包含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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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