对于不止一种分类算法,是否有任何最优的特征选择方法?

数据挖掘 机器学习 scikit-学习
2022-02-11 12:21:03

我有一个带有 13 个特征的葡萄酒数据集,表示 3 个不同的葡萄酒类别(目标),以及 k-NN、带有线性内核的 SVM 和带有 rbf 内核算法的 SVM,可以使用这个数据集进行尝试。

我的目标是获得最好的分类准确率,并获得这个准确率:

  1. 我应该选择哪种分类算法(kNN、带线性核的 SVM 或带 rbf 核的 SVM)?

  2. 在所有特征中,应该选择哪些特征(基于向后消除,可能根据 p 值)?

我曾想过将 GridSearchCV 与上述算法的 3 个估计器一起使用。但在这种情况下,问题出在您猜测的特征选择部分。是否有任何最佳方式来实现两者?谢谢!

1个回答

如果你想知道一个数据集的特征重要性是什么,你可以通过训练一个随机森林来获得它。训练随机森林后,您可以访问对任何算法都有效的特征重要性。

请注意,其他类似算法的特征重要性,例如一些 boosting 算法,与这些算法密切相关;对于随机森林来说,这样的事情是不正确的。

希望这可以帮助!

编辑1:

我说随机森林具有普遍特征重要性的原因是,rf 基于许多较小的决策树,其中每个决策树都使用来自训练集的引导程序和随机获取的属性子集。引导程序试图避免过度拟合,而属性子集有助于确定哪些是最重要的。rf 能够给出每个特征的重要性,平均来自使用该属性的树的 oob 精度。当一个特性是一个很好的预测器时,使用它的树比不使用它的树有更好的结果。对于成百上千棵树,一个 rf 可以对每个属性的预测能力有很好的意见。

请注意,rf 中的每棵树都是决策树,它基于 Gini 杂质/信息增益(熵)或回归情况下的方差进行拆分。这自然会选择在每种情况下最重要的特征。

在这里,一篇文章探讨了研究特征重要性的替代方法。关于 rf 的内容还有很多,但并不限于这种方法,因此它可能对阅读这篇文章的任何人都有用。 https://towardsdatascience.com/explaining-feature-importance-by-example-of-a-random-forest-d9166011959e