机器学习-通过算法对功能进行排名

时间:2019-01-04 07:01:49

标签: machine-learning weka prediction feature-selection

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

  1. 神经网络
  2. 物流
  3. 天真
  4. 随机森林
  5. Adaboost

我了解了很多有关信息获取技术的知识,看来它与所使用的机器学习算法无关。就像预处理技术一样。

接下来的问题是,最佳实践是对每种算法独立地执行功能重要性,还是仅使用信息增益。如果是,每种技术使用什么?

2 个答案:

答案 0 :(得分:2)

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

想到的一些方法:

  1. 基于互信息的特征选择(例如here),独立于分类器。
  2. 向后或向前选择(请参阅stackexchange question),适用于任何分类器,但由于您需要训练/测试许多模型,因此可能成本很高。
  3. 作为分类器优化的一部分的正则化技术,例如Lassoelastic net。后者在具有高共线性的数据集中可能会更好。
  4. 主成分分析或将特征进行分组的任何其他降维技术(example)。
  5. 某些模型计算的潜在变量可用于解释而不是原始特征(例如Partial Least SquaresCanonical Correlation Analysis)。

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

  • 逻辑回归:您可以为每个特征获取p值。在您的解释中,您可以关注那些“显着”的值(例如,p值<0.05)。 (与两类线性判别分析相同)
  • Random Forest:可以返回变量重要性指数,该指数将变量从最重要到最不重要进行排名。
  

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

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

答案 1 :(得分:1)

由于您的目的是对正在发生的事情有一些直觉,因此您可以执行以下操作:

为了简单起见,让我们从随机森林开始,但是您也可以使用其他算法来做到这一点。首先,您需要建立一个好的模型。好的意思是您需要满意其性能,并且应该稳健,这意味着您应该使用验证和/或测试集。这些要点非常重要,因为我们将分析模型如何做出决策,因此,如果模型不好,您将获得直觉。

建立模型之后,您可以在两个层次上进行分析:对于整个数据集(了解您的过程),或对于给定的预测。对于此任务,我建议您看一下SHAP library,它计算出可用于两个人偶的特征贡献(即特征在多大程度上影响了我的分类器的预测)。

有关此过程和更多工具的详细说明,您可以快速浏览。machine learning serie上的一门极好的课程,其中2/3/4/5的课程与该主题有关。

希望有帮助!