特征选择与分类精度关系

数据挖掘 机器学习 特征选择
2021-10-11 05:39:33

为分类器选择可用特征子集的方法之一是根据标准(例如信息增益)对它们进行排名,然后使用分类器和排名特征的子集计算准确度。

例如,如果您的特征是A, B, C, D, E,并且它们的排名如下D,B,C,E,A,那么您使用D、然后D, BD, B, C然后D, B, C, E... 计算准确度,直到您的准确度开始下降。一旦它开始减少,您就停止添加功能。

示例 1

在示例 1(上图)中,您将选择特征F, C, D, A并删除其他特征,因为它们会降低您的准确性。

该方法假设向模型添加更多特征会提高分类器的准确性,直到某个点之后添加其他特征会降低准确性(如示例 1 所示)

但是,我的情况有所不同。我已经应用了上述方法,我发现添加更多特征会降低准确性,直到某个点之后它会增加。

示例 2

在这种情况下,您如何选择您的功能?你只挑选F和丢弃其余的吗?您知道为什么准确性会降低然后提高吗?

4个回答

特征选择涉及多种方法,就像机器学习的方法一样。想法是为可以产生最佳准确性的预测模型保留最相关但不冗余的特征。

在您的情况下,我看不到您使用哪种方法进行特征选择,但假设您没有考虑特征依赖的多变量性质。假设您有 N 个特征,这可能是因为您的模型精度在 n 个顶级特征之后下降,但通过添加 n+k(其中 n < k < N 当特征根据信息增益按降序排列时)得到提高,这是由于前 n 和 k 个特征的依赖性(更多相关性和更少冗余)。当特征相互依赖且不相互排斥时,单变量特征选择不一定能获得最佳模型精度。从哲学的角度来看,一组最优特征类似于亚里士多德的一句话:“整体大于部分之和”!

为了优化特征选择,我经常使用 CaretR语言包,其中可以使用递归特征消除(RFE) 以及其他几种方法进行特征选择。还有一个名为mRMRe的包,用于基于最大相关性、最小冗余进行特征选择。

最好的,
萨米尔

关于具体问题

当您选择特征子集时,您不应该期望特定行为(增加然后降低准确性),因为这将完全取决于问题(和每个模型)

当你计算特征的变量重要性时,你同时考虑了所有特征的贡献。一旦您选择了一个特征子集并构建了一个新模型,您将获得问题的不同表示或建模(这不考虑其他特征 - 信息性或非信息性 -)。

现在,您要选择最佳数量的特征。这也取决于您的问题以及您需要满足的特征或条件。如果您在优化预测精度的同时确实需要尽可能少的特征,您可以选择实现最低误差的最少特征......错误的成对差异低于阈值的顶级案例,并选择一个(例如特征数量较少的案例 - 因为错误几乎相同 - )。

考虑递归特征消除

您使用的方法可能不是最稳定的方法。您应该考虑尝试诸如递归特征消除(RFE)之类的方法,这是一种构建分类器的包装方法,对所有特征进行排名,删除最差的特征并在剩余特征上重建模型。然后你再次重复该方法。这将趋于更稳定......并且您应该每次都期待不同的排名。

方差也是一个关键因素

除了模型为每个子集提供的实际误差(或准确性)之外,您应该考虑通过交叉验证程序构建每个模型,并考虑折叠的平均误差和这些误差的标准偏差。如果标准差很高,则所选的特征子集不稳定,并且在使用看不见的数据进行测试时往往会发生很大变化。这对于评估模型的预期泛化能力很重要,并且可能有助于在模型之间做出决定(使用不同的子集构建)。

您需要从数据集中删除冗余和不相关的特征。可以看出,你的数据集中存在不相关和冗余的特征。

我建议您查看最小冗余最大相关性特征选择(MRMR)算法。在您训练模型之前,它是一个非常流行且功能强大的过滤器。

“但是,我的情况不同。我已经应用了上述方法,我发现添加更多特征会降低准确性,直到某个点之后它会增加”

这也是可能的,但这会导致更复杂的模型。

通常有三类特征选择算法。

  • 过滤器方法分析数据的内在属性并为每个特征分配分数,不涉及任何模型。一些例子是倍数变化,学生t检验。

  • 通过特定算法选择不同特征子集的包装器方法。然后,我们适合分类或回归模型以评估每个选择并选择具有最佳适应度值的选择。一些例子是用于特征选择的遗传算法、用于特征选择的蒙特卡罗优化、向前/向后逐步选择。

  • 嵌入式方法允许模型本身选择对模型的适应度贡献最大的特征。典型的是 LASSO,岭回归。

这是一篇很棒的文章,详细介绍了特征选择