大家好,Boruta 和SHAP:不同特征选择技术的比较以及如何选择相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于Boruta 和SHAP:不同特征选择技术的比较以及如何选择和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
一般来说,基于包装的方法是最有效的,因为它们可以提取特征之间的相关性和依赖性。另一方面,它们更容易过度拟合。为了避免这个问题并充分利用基于包装器的技术,我们所需要做的就是采用一些简单但强大的技巧。通过一点数据理解和特殊技巧,我们可以实现更好的特征选择。别担心,我们使用的不是黑魔法,而是SHAP(SHApley Additive exPlanations)的力量。
为了在特征选择过程中更好地利用SHAP 的强大功能,我们发布了shap-hypetune:一个用于同时调整超参数和特征选择的Python 包。它允许将特征选择和参数调整结合在为梯度增强模型定制的单个管道中。它支持网格搜索或随机搜索,并提供基于包装器的特征选择算法,例如递归特征消除(RFE)或Boruta。进一步的补充包括使用SHAP 重要性进行特征选择,而不是经典的基于树的特征重要性。
在本文中,我们演示了正确执行特征选择的实用性。如果我们高估了梯度提升的解释力,或者只是我们对数据没有一般性的了解,这表明它并不像预期的那么简单。我们的范围是研究各种特征选择技术的执行方式以及为什么使用SHAP 会有所帮助。
什么是Boruta?
每个人都知道(或容易理解)RFE 递归特征消除的工作原理。它递归地拟合考虑较小特征集的监督算法。排除的特征是根据某些权重的大小被认为不太重要的特征(例如,线性模型的系数或基于树的模型的特征重要性)。
Boruta 与RFE 一样,是一种基于包装器的特征选择技术。可能很少有人听说过它的名字,但它同样强大。 Boruta 背后的想法非常简单。给定表格数据集,我们在数据的扩展版本上迭代地拟合监督算法(通常是基于树的模型)。在每次迭代中,扩展版本由原始数据的副本和水平连接的打乱列组成。我们只维护每次迭代中的特征:
比最佳随机排序特征更高的重要性;优于随机因素的预期(使用二项式分布)。 RFE 和Boruta 都使用监督学习算法来提供特征重要性排名。该模型是这两种技术的核心,因为它决定了每个功能的好坏程度。这里可能会出现问题。决策树的标准特征重要性方法往往会高估高频或高基数变量的重要性。对于Boruta 和RFE,这可能会导致错误的特征选择。
本次实验
我们从Kaggle 收集了一个数据集。我们选择了一组银行客户的数据,并尝试预测客户是否会很快流失。在开始之前,我们向数据集中添加一些由简单噪声组成的随机列。我们这样做是为了了解我们的模型如何计算特征重要性。我们首先拟合和调整梯度提升(LGBM)。我们用不同的分裂种子重复这个过程不同的时间,以覆盖数据选择的随机性。下面提供了平均特征重要性。
令人惊讶的是,随机特征对我们的模型非常重要。另一个错误的假设是将CustomerId 视为有用的预测变量。这是客户端的唯一标识符,梯度提升错误地认为它很重要。
考虑到这些前提,让我们在数据上尝试一些特征选择技术。我们从RFE 开始。我们将参数调整与特征选择过程结合起来。和以前一样,我们使用不同的分裂种子重复整个过程,以减轻数据选择的随机性。对于每个实验,我们考虑标准的基于树的特征重要性和SHAP 重要性来存储所选特征。这样我们就可以绘制在试验结束时选择某个特征的次数。
使用RFE 选择某个特征的次数(左);使用RFE + SHAP 选择特征的次数(右)
在我们的例子中,具有标准重要性的RFE 显示是不准确的。它通常选择与CustomerId 相关的随机预测变量。 SHAP + RFE 最好不要选择无用的功能,但同时承认一些不好的选择。
作为最后一步,我们重复相同的过程,但使用Boruta。
使用Boruta 选择某个特征的次数(左);使用Boruta + SHAP 选择特征的次数(右)
单独的标准Boruta 在不考虑随机变量和CustomerId 方面做得很好。 SHAP + BORUTA 似乎也能更好地减少选择过程中的变化。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/111925.html
用户评论
凝残月
这个题目说的就是我最近在学习的! Boruta和SHAP确实很有意思,都是对模型进行解释的方法呀,希望能详细说明这两种方法的优缺点,还有哪些具体的应用场景?
有19位网友表示赞同!
残花为谁悲丶
特征选择很重要啊!Boruta 我以前听过,感觉是选出最相关的特征嘛。 SHAP 看起来更复杂一些,想了解一下它是怎么评估每个特征的重要性的。
有16位网友表示赞同!
仰望幸福
这篇文章很 timely ,我最近也在考虑如何更好地进行特征选择,希望能从这篇博文里找到一些灵感!
有15位网友表示赞同!
我的黑色迷你裙
两种方法都很有用,Boruta 更关注于是否该保留某个特征而非绝对的重要性。而SHAP则是给出每个特征的贡献度占比,对理解模型决策过程更直观,但我觉得有时候对于高维度数据来说 SHAP 会比较耗时…
有19位网友表示赞同!
昂贵的背影
对于不同数据集来说,两种方法的效果应该也会有所区别吧? 文章可以对比一下不同数据集下使用 Boruta 和 SHAP 的结果吗?
有9位网友表示赞同!
你身上有刺,别扎我
我之前一直用特征重要性得分选取特征,现在看到Boruta感觉很不一样!这个方法更有科学的依据,而且更能保证选择的特征是模型决策的关键因素。
有18位网友表示赞同!
柠栀
这篇博文太棒了! 让我终于理解了两种方法的区别和各自的局限性。 之后我会根据实际情况选择使用哪种方法。
有6位网友表示赞同!
盲从于你
这篇文章写得真好,很容易理解 Boruta 和 SHAP 的工作原理,而且还分析了如何选择合适的特征选择技术,真是太实用了!
有18位网友表示赞同!
采姑娘的小蘑菇
我觉得对于一些黑盒模型来说,理解它背后的决策机制非常重要,SHAP 在这种情况下就显得很有价值。
有13位网友表示赞同!
你tm的滚
两种方法都很有用,但我更倾向于使用 SHAP 因为它可以更直观地展示每个特征的贡献度,这样更容易找出模型中的关键因素。
有18位网友表示赞同!
。婞褔vīp
Boruta 可以通过随机森林生成基准特征集来评估每个特征的重要性,这比传统的特征重要性得分更有说服力。
有5位网友表示赞同!
青袂婉约
文章中提到了多种数据分析场景以及适用推荐的特征选择方法,很棒!让我对 Boruta 和 SHAP 运用有了更清晰的认识。
有6位网友表示赞同!
孤城暮雨
对于非常大的数据集来说,Boruta 的效率相比 SHAP 可能要更高一些? 文章里有提到这个吗?
有18位网友表示赞同!
凉凉凉”凉但是人心
其实有些时后我们不需要过于关注特征的重要性排名,只要确保模型能够得到足够的解释性就行。 这方面 Boruta 感觉更灵活。
有8位网友表示赞同!
杰克
我想了解一下在实际案例中,Boruta 和 SHAP 是否被广泛应用,并且有哪些比较明显的优缺点?
有16位网友表示赞同!
强辩
我觉得这篇文章很适合入门学习特征选择的人阅读,它简单易懂地介绍了两种方法的基本原理和适用场景。
有11位网友表示赞同!
短发
SHAP 的可解释性强,但是计算量也很大,对于一些时间敏感的应用来说可能不太合适吧?
有20位网友表示赞同!
ˉ夨落旳尐孩。
我对 Boruta 有点感兴趣,它是通过比对真实特征和随机特征来判断特征重要性的,感觉很有意思!
有19位网友表示赞同!