SHAP分析+立方样条的拟合展示可能的交互作用
SHAP分析的另一个特点就是对交互作用的分析,计算交互作用的SHAP值,绘制相关的交互作用图表,但是仅局限于xgboost模型,其它的模型不能单独计算相互作用的SHAP值,也就不能绘制交互作用矩阵。根据资料,交互作用值+主效应值=最终预测值,这篇资料可能是全网唯一把SHAP分析交互作用讲清楚的,推荐大家了解。
提示: 以下的观点出自个人研究,仅供大家参考
如何用立方样条回归拟合两个变量
通过SHAP的散点图观察两个变量情况下,SHAP值的变化。可以看到散点图明显分成了两个部分,如果向X轴做垂线,在这条线上的SHAP值受到图右侧变量的影响。这种情况下,认为这两个变量之间具有交互作用,需要将两部分数据分开进行拟合。
具体做法上,还是采用ggrcs的R包,提供了分组绘制rcs图的功能,唯一需要注意的一点就是我把两个变量的SHAP值进行了相加,形成了一个新的SHAP值,代表了两个变量的共同作用。目前认为这个做法是正确的,SHAP值的特点是通过相加来反映两个变量共同的作用,可能是相互叠加,也可能是相互抵消。
#形成新的SHAP值
combined_df$Balance_NumOfProducts_shap<-combined_df$Balance_shap+combined_df$NumOfProducts_shap
#用于绘图的模型,方程中两个变量只是简单的相加,而不是进行相乘,这里是不是有瑕疵有待于进一步探讨
fm3<-ols(Balance_NumOfProducts_shap~rcs(Balance)+NumOfProducts_cat,data=combined_df)
注意用于绘图的模型中方程中两个变量只是简单的相加,而不是进行相乘,这里是不是有瑕疵有待于进一步探讨。
单变量的分析的结果,作为对照。
统计分析的一些考虑
根据统计学知识,交互作用,可以通过分层分析来实现的, 根据其中一个变量进行分组,之后,X变量与y变量之间的关系(这里是SHAP值)发生了较大的变化,则代表变量之间存在交互作用。所以,统计分析部分是不是将SHAP值分层,然后进行student‘s t检验,或者计算OR值等。
计算交互作用SHAP值
交互作用的SHAP值的计算和展示是R包或者python包的固有功能,还是推荐参考文章开头的资料进行深入了解。后续也不排除展示相关的操作。本文涉及代码存储在和鲸网站上的项目中,一键运行,欢迎查看。
总结
立方样条拟合的作用在于展示关键的点,为后续决策提供参考。根据本人已有的知识和拟合的结果来看,认为上述操作是正确的,但是也不排除存在错误的可能,欢迎大家讨论指正。