资讯 人工智能学术
此为临时链接,仅用于文章预览,将在时失效

如何找到BlackBox的特征重要性

作者:栗峰
2019/10/29 18:16

雷锋网AI科技评论编者按:特征选择的方法你了解多少?这篇文章的作者将带领我们认识一种新颖的特征选择方法—排列重要性,它可以帮助我们找到任何BlackBox模型的特征重要性,那么它又是怎么起作用的以及又是如何使用ELI5对其进行编码的呢?这篇文章给你答案。

本文来自数据科学家Rahul Agarwal的文章《How to find Feature importances for BlackBox Models?

》在不改变原文意思的基础上雷锋网AI科技评论的编译如下:

数据科学是对算法进行的研究。我每天都要处理很多的算法,因此我想把一些最常见和最常用的算法列出来,这些算法将会在新的DS算法系列中使用。

有多少次,当你创建了很多特征的时候,但接下来你还需要想尽方法减少特征的数量?

上次我写了一篇名为《每个数据科学家都应该知道的5种特征选择算法》的文章,其中谈到了使用相关性或基于树类结构的方法,并在特征选择的过程中添加了一些结构。

最近我接触了另一种新颖的特征选择方法,叫做排列重要性。

因此,这篇文章将介绍排列重要性是如何起作用的以及如何使用ELI5对其进行编码。

什么是排列重要性

简单地说,如果我们从数据集中删除一个特定的特征,我们可以根据我们的评估指标(F1、精度AUC等)的变化来给这个特征赋予重要性。

要做到这一点可就太简单了,我们从数据集中删除了一个特征,然后训练分类器,接着查看评估指标是如何变化的。我们要对所有的特征都这样操作。

所以我们至少要拟合n次模型,其中n是模型中的特征的数量。 这意味着非常多的计算和工作量。我们是否能在这样的条件下做到更好呢?

如何找到BlackBox的特征重要性

 Source:我们使用更新的数据集对特征进行排序和预测。直观地讲,如果我们的准确性或任何评估指标都没有受到影响,那我们就可以说这个特征并不重要。但如果我们的准确性受到了影响,那我们也得承认该特征确实很重要。

我们当然是可以做到的。为了计算排列的重要性,我们对单个特征的值进行改组、排列,并使用所得的数据集进行预测。

然后将这些预测用于计算我们的评估指标。直观地讲,如果我们的准确性或任何评估指标都没有受到影响,那我们就可以说这个特征并不重要。但如果我们的准确性受到了影响,那我们也得承认该特征确实很重要。

数据集

我们尝试使用数据集来更好的理解它。

我将使用一个足球运动员数据集来说明,并尝试通过用它来找出最重要的特征。

如何找到BlackBox的特征重要性

如果你不懂足球术语,也不用担心,我尽量减少使用专业术语。

你可以在这个Kaggle核心内容中查看完整的代码(https://www.kaggle.com/mlwhiz/permutation-feature-selection-using-football-data)

简单的数据预处理

我们已经完成了一些基本的预处理任务,例如删除空值和独热码。我们还使用以下方法将问题转换成分类问题:

如何找到BlackBox的特征重要性

在这里,我们使用“高素质水平”作为优秀球员的代表。我们的数据集(X)如下所示,有223列。

如何找到BlackBox的特征重要性

训练数据X

实操

1.sklearn 模型

有了ELI5库使我们很容易就能将特征重要性应用于sklearn模型。 首先,我们要开始训练模型。

如何找到BlackBox的特征重要性

 然后使用eli5 sklearn模块中的PermutationImportance函数。

如何找到BlackBox的特征重要性

 结果如下:   

如何找到BlackBox的特征重要性

在这里,我们注意到反应,拦截和控球是决定球员素质的最重要的特征。     

2.针对BlackBox模型或非sklearn模型

如何找到BlackBox的特征重要性

我们还可以使用eli5来计算非机器学习模型的特征重要性。在这里我们训练了一个LightGBM模型。          如何找到BlackBox的特征重要性     

我们需要为评分函数创建一个包装器,以计算我们的评估指标。             

如何找到BlackBox的特征重要性

现在我们可以使用eli5.permutation_importance中的get_score_importances函数以获得最终的特征函数。

如何找到BlackBox的特征重要性

 我们可以使用以下内容查看榜单排名前五的特征:

如何找到BlackBox的特征重要性

结论:

特征工程和特征选择是任何机器学习通道的关键部分。

我们追求模型的准确性,如果不反复查看这些模型,就不可能获得良好的准确性。        

在这篇文章中,我试图将排列重要性解释为一种特征选择方法。它可以帮助我们找到任何BlackBox模型的特性重要性,这与我之前关于特征选择的文章中的技术表达不同。

如果你想了解更多关于特征工程、选择的信息,那我想告诉你“如何赢得数据科学竞赛:从Kazanova的高级机器学习专业中的顶级Kagglers课程中学习”。这个课程讨论了很多有用的特征工程、选择技术来改进模型的直观方法。绝对值得推荐。  

原文链接(雷锋网注):https://towardsdatascience.com/how-to-find-feature-importances-for-blackbox-models-c418b694659d

长按图片保存图片,分享给好友或朋友圈

如何找到BlackBox的特征重要性

扫码查看文章

正在生成分享图...

取消
相关文章