机器学习 - 按算法进行特征排名
Machine Learning - Feature Ranking by Algorithms
我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果的贡献最大。我有 5 个算法:
- 神经网络
- 物流
- 天真
- 随机森林
- Adaboost
我阅读了很多关于信息增益技术的文章,它似乎独立于所使用的机器学习算法。这就像一种预处理技术。
我的问题是,最好的做法是独立地为每个算法执行特征重要性,还是只使用信息增益。如果是,每种技术使用什么技术?
首先,值得强调的是,您必须仅根据训练数据执行selection 特征,即使它是一个单独的算法。在测试期间,您然后 select 来自测试数据集的相同特征。
spring 想到的一些方法:
- 基于互信息的特征selection(例如here),独立于分类器。
- 向后或向前 selection(参见 stackexchange question),适用于任何分类器,但可能成本很高,因为您需要 train/test 许多模型。
- 作为分类器优化一部分的正则化技术,例如Lasso or elastic net。后者在具有高共线性的数据集中可能更好。
- 主成分分析或任何其他对特征进行分组的降维技术 (example)。
- 一些模型计算潜在变量,您可以将其用于解释而不是原始特征(例如 Partial Least Squares or Canonical Correlation Analysis)。
特定分类器可以通过提供关于 features/predictors 的额外信息来帮助解释性,超出我的想象:
- 逻辑回归:你可以获得每个特征的p值。在您的解释中,您可以专注于 'significant' 的那些(例如 p 值 <0.05)。 (同样适用于二-类线性判别分析)
- 随机森林:可以return一个变量重要性指数,从最重要到最不重要对变量进行排名。
I have a dataset that contains around 30 features and I want to find out which features contribute the most to the outcome.
这取决于算法。如果你有 5 种算法,你可能会得到 5 个略有不同的答案,除非你在分类之前执行特征 selection(例如使用互信息)。一个原因是随机森林和神经网络会选择非线性关系,而逻辑回归则不会。此外,朴素贝叶斯对相互作用视而不见。
因此,除非您的研究明确针对这 5 个模型,否则我宁愿 select 一个模型并继续研究。
由于您的目的是对正在发生的事情有一些直觉,因此您可以执行以下操作:
为了简单起见,让我们从随机森林开始,但您也可以使用其他算法来做到这一点。首先,你需要建立一个好的模型。从某种意义上说,您需要对其性能感到满意,并且它应该稳健,这意味着您应该使用验证and/or 一个测试集。这些点非常重要,因为我们将分析模型如何做出决定,所以如果模型不好,你的直觉就会不好。
建立模型后,您可以在两个层面对其进行分析:针对整个数据集(了解您的过程),或针对给定的预测。对于此任务,我建议您查看 SHAP library,它计算可用于两个 puproses 的特征贡献(即特征对我的分类器的预测有多大影响)。
有关此过程和更多工具的详细说明,您可以在 machine learning serie 上查看 fast.ai 优秀课程,其中第 2/3/4/5 课是关于此主题的。
希望对您有所帮助!
我有一个包含大约 30 个特征的数据集,我想找出哪些特征对结果的贡献最大。我有 5 个算法:
- 神经网络
- 物流
- 天真
- 随机森林
- Adaboost
我阅读了很多关于信息增益技术的文章,它似乎独立于所使用的机器学习算法。这就像一种预处理技术。
我的问题是,最好的做法是独立地为每个算法执行特征重要性,还是只使用信息增益。如果是,每种技术使用什么技术?
首先,值得强调的是,您必须仅根据训练数据执行selection 特征,即使它是一个单独的算法。在测试期间,您然后 select 来自测试数据集的相同特征。
spring 想到的一些方法:
- 基于互信息的特征selection(例如here),独立于分类器。
- 向后或向前 selection(参见 stackexchange question),适用于任何分类器,但可能成本很高,因为您需要 train/test 许多模型。
- 作为分类器优化一部分的正则化技术,例如Lasso or elastic net。后者在具有高共线性的数据集中可能更好。
- 主成分分析或任何其他对特征进行分组的降维技术 (example)。
- 一些模型计算潜在变量,您可以将其用于解释而不是原始特征(例如 Partial Least Squares or Canonical Correlation Analysis)。
特定分类器可以通过提供关于 features/predictors 的额外信息来帮助解释性,超出我的想象:
- 逻辑回归:你可以获得每个特征的p值。在您的解释中,您可以专注于 'significant' 的那些(例如 p 值 <0.05)。 (同样适用于二-类线性判别分析)
- 随机森林:可以return一个变量重要性指数,从最重要到最不重要对变量进行排名。
I have a dataset that contains around 30 features and I want to find out which features contribute the most to the outcome.
这取决于算法。如果你有 5 种算法,你可能会得到 5 个略有不同的答案,除非你在分类之前执行特征 selection(例如使用互信息)。一个原因是随机森林和神经网络会选择非线性关系,而逻辑回归则不会。此外,朴素贝叶斯对相互作用视而不见。 因此,除非您的研究明确针对这 5 个模型,否则我宁愿 select 一个模型并继续研究。
由于您的目的是对正在发生的事情有一些直觉,因此您可以执行以下操作:
为了简单起见,让我们从随机森林开始,但您也可以使用其他算法来做到这一点。首先,你需要建立一个好的模型。从某种意义上说,您需要对其性能感到满意,并且它应该稳健,这意味着您应该使用验证and/or 一个测试集。这些点非常重要,因为我们将分析模型如何做出决定,所以如果模型不好,你的直觉就会不好。
建立模型后,您可以在两个层面对其进行分析:针对整个数据集(了解您的过程),或针对给定的预测。对于此任务,我建议您查看 SHAP library,它计算可用于两个 puproses 的特征贡献(即特征对我的分类器的预测有多大影响)。
有关此过程和更多工具的详细说明,您可以在 machine learning serie 上查看 fast.ai 优秀课程,其中第 2/3/4/5 课是关于此主题的。
希望对您有所帮助!