Python特征工程系列使用SHAP进行特征重要性分析和决策树为例

一、引言SHAP 属于模型事后解释的方法,它的核心思想是计算特征对模型输出的边际贡献,再从全局和局部两个层面对“黑盒模型”进行解释。SHAP构建一个加性的解释模

今天给各位分享Python特征工程系列使用SHAP进行特征重要性分析和决策树为例的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

基本思想:计算某个特征加入模型时的边际贡献,然后考虑该特征在所有特征序列中的不同边际贡献,取平均值,即为该特征的SHAP基线值。

SHAP值是帮助我们理解机器学习模型如何进行预测的工具。它可以让我们通过分析每个特征对预测结果的影响,更清楚地看到模型是如何“思考”的。

通过计算SHAP值,我们可以:

解释单个预测:了解每个特征如何影响单个样本的模型预测。全局解释:通过对多个样本的SHAP值进行平均,了解特征对模型预测的整体影响。特征选择:识别对模型预测最重要的特征。

二、实现过程

2.1准备数据

# 准备数据data=pd.read_csv(r’dataset.csv’)df=pd.DataFrame(data)# 提取目标变量和特征变量target=’target’features=df.columns.drop( target)# 划分训练集和测试集X_train, X_test, y_train, y_test=train_test_split(df[features], df[target], test_size=0.2, random_state=0)df:

2.2 模型训练

# 模型构建与训练model=DecisionTreeClassifier()model.fit(X_train, y_train)

2.3 创建SHAP解释器

# 创建Explainerexplainer=shap.TreeExplainer(model, X_test)# 以numpy数组shap_values的形式输出SHAP值=解释者。 shap_values(X_test)print(shap_values) # shap_values=shap_obj.values# # 以SHAP的Explanation对象的形式输出SHAP值shap_obj=explainer(X_test)print(shap_obj.values) shap_values是一个三维数组(60,13,2),60个样本,13个特征,2类形状值,

shap_values[0]是一个二维数组(13, 2),是第一个样本的13个特征和两个类别的shap值。 shap_values[1] 是一个二维数组(13, 2),它是第二个样本的13 个特征。 2 类形状值,

shap_values[0][0]是一个一维数组(2,)是第一个样本的第一个特征,2个类别的shap值,shap_values[1][0]是一个一维数组( 13、2)是第二个样本的第一个特征,两个类别的shap值,

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例

shap_values[0][0][0]是一个数值(),表示第一个样本的第一个特征的第一类别的shap值,shap_values[0][0][1]是一个数值,表示第一个样本的第一个特征,第二个类别的shap值。

shap_values[:0]是一个二维数组(60, 13),表示第一类60个样本、13个特征的shap值。

2.4 绘制全局条形图

SHAP提供了一种全局特征重要性图方法,考虑所有样本并计算每个特征的平均绝对SHAP值:

shap.summary_plot(shap_values, X_test)

这个图在低版本的shap 中可以运行,但在高版本的shap 中可能会报错。您可以使用以下函数代替:

shap.plots.bar(shap_obj[:0])

2.5 绘制全局蜂群图

蜂群图是可视化特征重要性和影响的另一种方法。蜂群图旨在显示数据集中的TOP 特征如何影响模型输出的信息密集摘要。

shap.plots.beeswarm(shap_obj[:0], show=True) #全局蜂群图

给定解释的每个实例都由每个特征流上的一个点表示;点的x 位置由该特征的SHAP 值(shap_values.value[instance,feature]) 确定,并且点沿着每个特征行“堆叠”以显示密度;与条形图和蜂群图相比,条形图仅显示蜂群图的平均值。

用户评论

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
←极§速

终于看到了关于SHAP讲解的文章!我一直对特征工程很感兴趣,尤其是决策树,这款工具简直太棒了,可以直观地看到哪个特征对模型决策影响最大。希望能有更多类似的实践案例介绍。

    有16位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
作业是老师的私生子

之前想了解SHAP值怎么用,结果看了半天文档还是一头雾水,这篇博客讲得清晰易懂,比那些教程更容易上手。感谢作者的分享!这篇文章太棒了,现在终于明白特征重要性分析到底是个什么东西了!

    有12位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
哭花了素颜

对于小白来说,这篇博客讲解得太深入详细了,把SHAP的原理和案例都结合起来说明,真的很有帮助!不过可以再添加一些关于不同模型特点在SHAP中的应用分析吗?

    有6位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
醉红颜

决策树特征重要性分析?看起来很不错的样子。之前用过其他的方法,感觉这个更直观,而且可以更好的理解模型的决策过程。期待作者后续分享更多类型的特征工程案例!

    有7位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
眉黛如画

说实话,这篇博客说的东西我也会,而且我已经在项目里应用过SHAP价值估计法了,但是还是觉得作者的讲解很有意思,结构清晰易懂,推荐给其他学习伙伴们参考!

    有20位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
苍白的笑〃

看完这篇文章,我对SHAP有了更深入的理解。之前只是听说过它的名字,没有真正了解它的功能和优势。这个工具确实可以帮助我们更好地理解模型的决策过程。

    有7位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
暖栀

我个人觉得这篇博客对入门者来说太枯燥了,缺少一些趣味元素,比如用通俗易懂的语言解释SHAP原理,或者增加一些案例分享,让读者更加容易理解。建议作者进行改进

    有17位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
灬一抹丶苍白

对于我这种已经从事数据分析多年的老手来说,SHAP的应用早已轻车熟路。这篇博文内容较为基础,篇幅略短,希望能看到更高级的应用场景和技术的探讨

    有20位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
北朽暖栀

虽然标题明确了采用决策树为例,但我觉得对不同模型下SHAP的解释结果应该有所区别吧? 文章可以多加一些对比分析,更加全面地介绍SHAP的使用方法。

    有10位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
淡写薰衣草的香

我一直在学习 Python 特征工程,这篇博客让我了解到一个很有用的工具 – SHAP。 以后我要尝试用它来分析我的项目,看看能否提升模型的表现!

    有7位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
煮酒

文章写的不错,把SHAP的关键知识点都提到了,对于初学者来说非常有帮助。不过我觉得可以补充一些关于SHAP的局限性的讨论,比如在面对高维特征的数据时,是否容易出现计算开销过大等问题?

    有10位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
陌颜幽梦

我总觉得决策树这类模型比较“简单”,用SHAP来分析特征重要性似乎也没什么新鲜感。如果作者能结合一些更复杂模型的案例,比如神经网络,效果可能会更上一层楼!

    有13位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
琴断朱弦

我很喜欢这种分析可视化的方式! 可以直接看到每个特征对模型的影响有多大,非常直观易懂。 而且SHAP可以解释非线性关系,这比传统的特征重要性方法更有优势!

    有10位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
拥抱

SHAP的确是一个非常强大的工具,但是需要一定的编程基础才能使用。希望作者能编写一些更加详细的教程,帮助更多人学习和应用它!

    有9位网友表示赞同!

Python特征工程系列使用SHAP进行特征重要性分析和决策树为例
巷口酒肆

我之前尝试过利用 SHAP 进行特征重要性分析,但是结果总是很不理想,可能是我操作出现了问题呢? 作者能否分享一下自己使用的具体步骤以及需要注意的地方?

    有13位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/111964.html

(0)
小su's avatar小su
上一篇 2024年8月31日 下午9:42
下一篇 2024年8月31日 下午9:44

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注