InterpretML:让黑盒模型不再黑

interpret 在 GitHub 上已经拿到 6,866 Star 了。

微软研究院开源了这个工具,专门解决机器学习可解释性的问题。它把玻璃盒模型和黑盒解释器统一到一个包里,训练、解释、比较一条龙。

1、这东西是干嘛的

一句话:让机器学习模型的决策过程变得透明。

不管是调试模型、排查特征工程问题、检测公平性偏差,还是满足合规审计要求,都需要知道模型为什么做出某个预测。InterpretML 把这些可解释性技术打包到了一起,不用在不同的库之间切换。

正文顶部截图

2、两种解释思路

InterpretML 提供了两条路线。

第一条是玻璃盒模型。这些模型本身就是可解释的,训练出来的每一部分都有明确的含义。比如他们主推的 EBM(Explainable Boosting Machine),训练完成后你可以直接看到每个特征对预测结果的贡献值,不需要额外的后处理步骤。

第二条是黑盒解释器。如果你的模型已经定下来了,比如已经在线上跑着 XGBoost 或者随机森林,InterpretML 可以提供 SHAP、LIME、Partial Dependence 等事后解释工具,在不改变原模型的情况下分析它的行为。

支持的算法覆盖了常见的需求:

技术 类型
Explainable Boosting (EBM) 玻璃盒模型
APLR 玻璃盒模型
Decision Tree 玻璃盒模型
Decision Rule List 玻璃盒模型
Linear/Logistic Regression 玻璃盒模型
SHAP Kernel Explainer 黑盒解释器
LIME 黑盒解释器
Morris Sensitivity Analysis 黑盒解释器
Partial Dependence 黑盒解释器

3、EBM:准确度和可解释性可以兼得

传统认知里,准确度和可解释性是一对矛盾。线性回归可解释但不够准,集成树模型准确但内部逻辑无从追溯。

EBM 试图打破这个魔咒。它在传统 GAM(广义加性模型)基础上加入了 bagging、gradient boosting 和自动交互检测,准确度可以跟 XGBoost 和随机森林打平。同时每个特征的贡献都是显式计算的,可以直接查看。

官方 benchmark 里,EBM 在多个数据集上跟 XGBoost 旗鼓相当:

数据集 XGBoost EBM
Adult Income (金融) .927 .928
Heart Disease (医疗) .851 .898
Breast Cancer (医疗) .992 .995
Telecom Churn (商业) .828 .852
Credit Fraud (安全) .981 .981

EBM 还自带隐私保护版本(DP-EBM),通过差分隐私机制可以在不泄露训练数据的情况下生成可解释模型。对医疗和金融这类强监管场景来说,这一点比较实用。

4、安装使用

pip install interpret
# 或者
conda install -c conda-forge interpret

Python 3.10 以上,Linux、Mac、Windows 都支持。

训练一个 EBM 分类器,三行代码搞定:

from interpret.glassbox import ExplainableBoostingClassifier

ebm = ExplainableBoostingClassifier()
ebm.fit(X_train, y_train)

看全局解释:

from interpret import show

ebm_global = ebm.explain_global()
show(ebm_global)

看单个预测的解释:

ebm_local = ebm.explain_local(X_test, y_test)
show(ebm_local)

多个模型放一起对比:

show([logistic_regression_global, decision_tree_global])

所有解释结果都在一个交互式仪表盘里展示,图形化的特征贡献图和决策路径一目了然。

README区域截图

5、适合哪些场景

做风控模型的团队,需要向监管解释审批逻辑。EBM 训练出来的模型每个特征的影响都是透明的,能直接回答"为什么拒绝这笔贷款"。

做医疗诊断辅助系统的,准确度不能差,但医生也不会信任一个给不出理由的预测。EBM 在这类场景下可以把决策依据展示出来。

已经在用 XGBoost 或随机森林的团队,可以在不改动生产模型的前提下,用 InterpretML 提供的 SHAP 和 LIME 做事后解释,排查线上 bad case。

做公平性审计的,可以用 InterpretML 分析模型在不同人群上的行为差异,看是否存在歧视性模式。

提下,用 InterpretML 提供的 SHAP 和 LIME 做事后解释,排查线上 bad case。

做公平性审计的,可以用 InterpretML 分析模型在不同人群上的行为差异,看是否存在歧视性模式。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐