首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何找到BlackBox的特征重要性

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

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

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

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

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

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

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

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

什么是排列重要性

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

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

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

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

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

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

数据集

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

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

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

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

简单的数据预处理

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

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

训练数据X

实操

1.sklearn 模型

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

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

结果如下: 

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

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

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

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

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

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

结论:

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191029A0M70F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券