You need to enable JavaScript to run this app. H2O AutoML场景下IML包计算Shapley值如何筛选Top特征展示
优惠活动
大模型
产品
解决方案
定价
更多

H2O AutoML场景下IML包计算Shapley值如何筛选Top特征展示

IML包Shapley图筛选TopN高贡献特征实现方案

核心原理

IML包生成的Shapley类对象会将全量特征的Shapley贡献计算结果完整存储在内部属性中,不需要修改原有的Shapley计算流程,仅需在可视化阶段对结果做提取、排序、筛选,即可实现仅展示高贡献特征的效果,全程不额外增加计算开销。

具体操作步骤

1. 提取Shapley计算结果并排序筛选

在原有代码完成shapley <- Shapley$new(predictor.aml, x.interest = high_prob_ob, sample.size = 200)的计算逻辑后,不要直接调用内置绘图函数,先提取底层计算结果做筛选:

# 提取Shapley对象存储的全量特征贡献值
shapley_full_results <- shapley$results
# 按贡献绝对值从高到低排序(兼顾正负向贡献的重要性)
shapley_full_results <- shapley_full_results[order(-abs(shapley_full_results$phi)), ]
# 设置需要展示的Top特征数,可根据展示需求调整,例如取前10个特征
top_n <- 10
# 截取排名前N的高贡献特征
top_shapley_results <- shapley_full_results[1:top_n, ]

代码说明:phi列是IML内部存储每个特征对应Shapley贡献值的字段;取绝对值排序是因为无论特征是正向推高预测值还是下拉低预测值,只要贡献幅度大就属于需要展示的核心特征。

2. 两种方式完成筛选后的可视化

方式一:直接复用IML原生绘图逻辑

通过克隆原Shapley对象、替换内部结果集的方式,直接调用原生plot方法,无需重新计算:

# 克隆原Shapley对象,避免破坏原对象的全量结果
filtered_shapley <- shapley$clone()
# 替换内部存储的结果为筛选后的TopN子集
filtered_shapley$results <- top_shapley_results
# 调用原生绘图,即可仅展示筛选后的高贡献特征
plot(filtered_shapley, sort = TRUE)

方式二:自定义ggplot可视化

如果需要调整图表样式,可基于筛选后的结果直接用ggplot绘制和IML风格一致的贡献条形图:

library(ggplot2)
# 按贡献值调整因子顺序,保证绘图时从最高到最低排列
top_shapley_results$feature <- factor(
  top_shapley_results$feature,
  levels = top_shapley_results$feature[order(top_shapley_results$phi)]
)
ggplot(top_shapley_results, aes(x = phi, y = feature, fill = phi > 0)) +
  geom_col() +
  # 匹配IML原生配色:正向贡献用蓝色,负向贡献用红色
  scale_fill_manual(values = c("TRUE" = "#1a75bb", "FALSE" = "#c33c3c"), guide = "none") +
  labs(x = "Shapley 贡献值", y = NULL) +
  theme_bw()

注意事项

  • 整个筛选流程是在Shapley值计算完成后基于已有结果操作的,不会触发重复的H2O预测调用,也不会修改原有Shapley值的计算精度
  • 如果不需要兼顾负向贡献,仅想按正向贡献从高到低筛选,只需将排序逻辑中的abs()去掉,直接按phi值降序排列即可
  • 如果后续需要重新查看全量特征的Shapley结果,直接调用原shapley对象绘图即可,因为筛选操作是基于克隆的副本完成的,不会修改原对象的内容

内容的提问来源于stack exchange,提问作者Brian Head

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 23:45:07