机器学习 - 按算法进行特征排名

Mis*_*ian 4 machine-learning prediction weka feature-selection

我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果贡献最大。我有5种算法:

  1. 神经网络
  2. 后勤
  3. 幼稚的
  4. 随机森林
  5. 阿达助推器

我读了很多有关信息增益技术的内容,它似乎与所使用的机器学习算法无关。它就像一种预处理技术。

我的问题如下:最佳实践是独立地为每个算法执行特征重要性还是仅使用信息增益。如果是的话,每种技术使用什么技术?

小智 5

首先,值得强调的是,您必须仅基于训练数据执行特征选择,即使它是一个单独的算法。在测试过程中,您可以从测试数据集中选择相同的特征。

我想到了一些方法:

  1. 基于互信息的特征选择(例如此处),独立于分类器。
  2. 向后或向前选择(请参阅stackexchange Question),适用于任何分类器,但可能成本高昂,因为您需要训练/测试许多模型。
  3. 正则化技术是分类器优化的一部分,例如Lasso弹性网络。后者在共线性高的数据集中效果更好。
  4. 主成分分析或任何其他对特征进行分组的降维技术(示例)。
  5. 某些模型会计算潜在变量,您可以将其用于解释而不是原始特征(例如偏最小二乘典型相关分析)。

特定的分类器可以通过提供有关特征/预测变量的额外信息来帮助解释:

  • 逻辑回归:您可以获得每个特征的 p 值。在您的解释中,您可以关注那些“显着”的内容(例如 p 值<0.05)。(二类线性判别分析相同)
  • 随机森林:可以返回一个变量重要性指数,将变量从最重要到最不重要进行排名。

我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果贡献最大。

这将取决于算法。如果您有 5 种算法,您可能会得到 5 个略有不同的答案,除非您在分类之前执行特征选择(例如使用互信息)。原因之一是随机森林和神经网络会拾取非线性关系,而逻辑回归则不会。此外,朴素贝叶斯对交互视而不见。因此,除非您的研究明确涉及这 5 个模型,否则我宁愿选择一个模型并继续进行。