mmschlk/shapiq
Shapley Values and Shapley Interactions for Machine Learning
shapiq – 机器学习的Shapley交互量化
是什么 – shapiq 是一个Python库,扩展了流行的SHAP生态系统,提供Shapley交互值。经典SHAP为每个特征给出单一重要性分数(“主效应”),而shapiq还可以量化特征组如何协同或干扰彼此。在博弈论术语中,这些是高阶Shapley交互指数。
主要能力
- 任意阶交互估计 – 计算成对、三重等直到用户指定阶数(快速入门中默认最多4阶)的交互分数。该库提供了多种近似器,包括用于高维数据的稀疏“ProxySPEX”方法。
- 即插即用的SHAP兼容性 – 您可以请求经典Shapley值指数(
"SV"),并获得与shap包完全相同的输出格式,使迁移变得轻松。 - 内置游戏与基准测试套件 –
shapiq_games提供现成的“游戏”(例如,TabPFN、CatBoost、基于图像的游戏),shapiq_benchmark允许您在这些任务上比较算法。 - 可视化工具 – 针对主效应和交互的力导向图风格可视化,以及将特征显示为节点、交互强度显示为边的网络图。
- 模型无关 – 适用于任何将输入映射到预测的可调用对象(scikit-learn模型、PyTorch、CatBoost、TabPFN等)。
典型工作流程
- 加载数据并训练模型(例如,
RandomForestRegressor)。 - 实例化
Explainer(例如,TabularExplainer)并选择交互指数,如"k-SII"(k阶Shapley交互指数)和max_order。 - 调用
explain(sample, budget=…)– budget控制近似器可以使用的模型评估次数。 - 检查返回的
InteractionValues对象或调用其plot_*方法以生成力导向图或网络图。
为何重要 – 当模型捕捉非线性关系时(例如,位置和大小共同比各自单独更重要的房价模型),理解特征交互至关重要。shapiq为研究人员提供了一种基于博弈论的原则性方法,无需手动构建交互项即可揭示这些协同效应。
安装 – pip install shapiq(或uv add shapiq)。可选扩展shapiq[games]和shapiq[benchmark]会引入重型依赖,如torch、tabpfn、catboost等。
状态与社区 – 积极维护(支持Python 3.12-3.15,CI徽章,测试覆盖率)。欢迎贡献,作者为随附的NeurIPS 2024论文提供了引用。
以上所有细节均直接取自仓库的README。
相关
- 项目
- 项目
- 项目
- Dispatch
- 项目