10个最频繁用于解释机器学习模型的 Python 库
文章目录
- 什么是XAI?
- 可解释性实践的步骤
- 技术交流
- 1、SHAP
- 2、LIME
- 3、Eli5
- 4、Shapash
- 5、Anchors
- 6、BreakDown
- 7、Interpret-Text
- 8、aix360 (AI Explainability 360)
- 9、OmniXAI
- 10、XAI (eXplainable AI)
XAI的目标是为模型的行为和决定提供有意义的解释,本文整理了目前能够看到的10个用于可解释AI的Python库。
什么是XAI?
XAI,Explainable AI是指可以为人工智能(AI)决策过程和预测提供清晰易懂的解释的系统或策略。XAI 的目标是为他们的行为和决策提供有意义的解释,这有助于增加信任、提供问责制和模型决策的透明度。XAI 不仅限于解释,还以一种使推理更容易为用户提取和解释的方式进行 ML 实验。
在实践中,XAI 可以通过多种方法实现,例如使用特征重要性度量、可视化技术,或者通过构建本质上可解释的模型,例如决策树或线性回归模型。方法的选择取决于所解决问题的类型和所需的可解释性水平。
AI 系统被用于越来越多的应用程序,包括医疗保健、金融和刑事司法,在这些应用程序中,AI 对人们生活的潜在影响很大,并且了解做出了决定特定原因至关重要。因为这些领域的错误决策成本很高(风险很高),所以XAI 变得越来越重要,因为即使是 AI 做出的决定也需要仔细检查其有效性和可解释性。
可解释性实践的步骤
数据准备:这个阶段包括数据的收集和处理。数据应该是高质量的、平衡的并且代表正在解决的现实问题。拥有平衡的、有代表性的、干净的数据可以减少未来为保持 AI 的可解释性而付出的努力。
模型训练:模型在准备好的数据上进行训练,传统的机器学习模型或深度学习神经网络都可以。模型的选择取决于要解决的问题和所需的可解释性水平。模型越简单就越容易解释结果,但是简单模型的性能并不会很高。
模型评估:选择适当的评估方法和性能指标对于保持模型的可解释性是必要的。在此阶段评估模型的可解释性也很重要,这样确保它能够为其预测提供有意义的解释。
解释生成:这可以使用各种技术来完成,例如特征重要性度量、可视化技术,或通过构建固有的可解释模型。
解释验证:验证模型生成的解释的准确性和完整性。这有助于确保解释是可信的。
部署和监控:XAI 的工作不会在模型创建和验证时结束。它需要在部署后进行持续的可解释性工作。在真实环境中进行监控,定期评估系统的性能和可解释性非常重要。
技术交流
技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。
本文来自技术群粉丝分享整理,文章源码、数据、技术交流,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、添加微信号:pythoner666,备注:来自CSDN +备注来意
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
1、SHAP
(SHapley Additive exPlanations)
SHAP是一种博弈论方法,可用于解释任何机器学习模型的输出。它使用博弈论中的经典Shapley值及其相关扩展将最佳信用分配与本地解释联系起来。
2、LIME
(Local Interpretable Model-agnostic Explanations)
LIME 是一种与模型无关的方法,它通过围绕特定预测在局部近似模型的行为来工作。LIME 试图解释机器学习模型在做什么。LIME 支持解释文本分类器、表格类数据或图像的分类器的个别预测。
3、Eli5
ELI5是一个Python包,它可以帮助调试机器学习分类器并解释它们的预测。它提供了以下机器学习框架和包的支持:
-
scikit-learn:ELI5可以解释scikit-learn线性分类器和回归器的权重和预测,可以将决策树打印为文本或SVG,显示特征的重要性,并解释决策树和基于树集成的预测。ELI5还可以理解scikit-learn中的文本处理程序,并相应地突出显示文本数据。
-
Keras -通过Grad-CAM可视化解释图像分类器的预测。
-
XGBoost -显示特征的重要性,解释XGBClassifier, XGBRegressor和XGBoost . booster的预测。
-
LightGBM -显示特征的重要性,解释LGBMClassifier和LGBMRegressor的预测。
-
CatBoost:显示CatBoostClassifier和CatBoostRegressor的特征重要性。
-
lightning -解释lightning 分类器和回归器的权重和预测。
-
sklearn-crfsuite。ELI5允许检查sklearn_crfsuite.CRF模型的权重。
基本用法:
Show_weights()
显示模型的所有权重,Show_prediction()
可用于检查模型的个体预测
ELI5还实现了一些检查黑盒模型的算法:
TextExplainer使用LIME算法解释任何文本分类器的预测。排列重要性法可用于计算黑盒估计器的特征重要性。
4、Shapash
Shapash提供了几种类型的可视化,可以更容易地理解模型。通过摘要来理解模型提出的决策。该项目由MAIF数据科学家开发。Shapash主要通过一组出色的可视化来解释模型。
Shapash通过web应用程序机制工作,与Jupyter/ipython可以完美的结合。
from shapash import SmartExplainer xpl = SmartExplainer( model=regressor, preprocessing=encoder, # Optional: compile step can use inverse_transform method features_dict=house_dict # Optional parameter, dict specifies label for features name ) xpl.compile(x=Xtest, y_pred=y_pred, y_target=ytest, # Optional: allows to display True Values vs Predicted Values ) xpl.plot.contribution_plot("OverallQual")
5、Anchors
Anchors使用称为锚点的高精度规则解释复杂模型的行为,代表局部的“充分”预测条件。该算法可以有效地计算任何具有高概率保证的黑盒模型的解释。
Anchors可以被看作为LIME v2,其中LIME的一些限制(例如不能为数据的不可见实例拟合模型)已经得到纠正。Anchors使用局部区域,而不是每个单独的观察点。它在计算上比SHAP轻量,因此可以用于高维或大数据集。但是有些限制是标签只能是整数。
6、BreakDown
BreakDown是一种可以用来解释线性模型预测的工具。它的工作原理是将模型的输出分解为每个输入特征的贡献。这个包中有两个主要方法。Explainer()和Explanation()
model = tree.DecisionTreeRegressor() model = model.fit(train_data,y=train_labels) #necessary imports from pyBreakDown.explainer import Explainer from pyBreakDown.explanation import Explanation #make explainer object exp = Explainer(clf=model, data=train_data, colnames=feature_names) #What do you want to be explained from the data (select an observation) explanation = exp.explain(observation=data[302,:],direction="up")
7、Interpret-Text
Interpret-Text 结合了社区为 NLP 模型开发的可解释性技术和用于查看结果的可视化面板。可以在多个最先进的解释器上运行实验,并对它们进行比较分析。这个工具包可以在每个标签上全局或在每个文档本地解释机器学习模型。
以下是此包中可用的解释器列表:
-
Classical Text Explainer——(默认:逻辑回归的词袋)
-
Unified Information Explainer
-
Introspective Rationale Explainer
它的好处是支持CUDA,RNN和BERT等模型。并且可以为文档中特性的重要性生成一个面板
from interpret_text.widget import ExplanationDashboard from interpret_text.explanation.explanation import _create_local_explanation # create local explanation local_explanantion = _create_local_explanation( classification=True, text_explanation=True, local_importance_values=feature_importance_values, method=name_of_model, model_task="classification", features=parsed_sentence_list, classes=list_of_classes, ) # Dash it ExplanationDashboard(local_explanantion)
8、aix360 (AI Explainability 360)
AI Explainbability 360工具包是一个开源库,这个包是由IBM开发的,在他们的平台上广泛使用。AI Explainability 360包含一套全面的算法,涵盖了不同维度的解释以及代理解释性指标。
工具包结合了以下论文中的算法和指标:
-
Towards Robust Interpretability with Self-Explaining Neural Networks, 2018. ref
-
Boolean Decision Rules via Column Generation, 2018. ref
-
Explanations Based on the Missing: Towards Contrastive Explanations with Pertinent Negatives, 2018. ref
-
Improving Simple Models with Confidence Profiles, , 2018. ref
-
Efficient Data Representation by Selecting Prototypes with Importance Weights, 2019. ref
-
TED: Teaching AI to Explain Its Decisions, 2019. ref
-
Variational Inference of Disentangled Latent Concepts from Unlabeled Data, 2018. ref
-
Generating Contrastive Explanations with Monotonic Attribute Functions, 2019. ref
-
Generalized Linear Rule Models, 2019. ref
9、OmniXAI
OmniXAI (Omni explable AI的缩写),解决了在实践中解释机器学习模型产生的判断的几个问题。
它是一个用于可解释AI (XAI)的Python机器学习库,提供全方位的可解释AI和可解释机器学习功能,并能够解决实践中解释机器学习模型所做决策的许多痛点。OmniXAI旨在成为一站式综合库,为数据科学家、ML研究人员和从业者提供可解释的AI。
from omnixai.visualization.dashboard import Dashboard # Launch a dashboard for visualization dashboard = Dashboard( instances=test_instances, # The instances to explain local_explanations=local_explanations, # Set the local explanations global_explanations=global_explanations, # Set the global explanations prediction_explanations=prediction_explanations, # Set the prediction metrics class_names=class_names, # Set class names explainer=explainer # The created TabularExplainer for what if analysis ) dashboard.show()
10、XAI (eXplainable AI)
XAI 库由 The Institute for Ethical AI & ML 维护,它是根据 Responsible Machine Learning 的 8 条原则开发的。它仍处于 alpha 阶段因此请不要将其用于生产工作流程。
相关文章:

10个最频繁用于解释机器学习模型的 Python 库
文章目录什么是XAI?可解释性实践的步骤技术交流1、SHAP2、LIME3、Eli54、Shapash5、Anchors6、BreakDown7、Interpret-Text8、aix360 (AI Explainability 360)9、OmniXAI10、XAI (eXplainable AI)XAI的目标是为模型的行为和决定提供有意义的解释,本文整理…...

final关键字:我偏不让你继承
哈喽,小伙伴们大家好,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java所有final关键字。 之前呢,我们学习了继承,这大大提高了代码的灵活性和复用性。但是总…...

8大主流编程语言的适用领域,你可能选错了语言
很多人学编程经常是脑子一热然后就去网上一搜资源就开始学习了,但学到了后面发现目前所学的东西并不是自己最喜欢的,好像自己更喜欢另一个技术,感觉自己学错了,于是乎又去学习别的东西。 结果竹篮打水一场空,前面所付…...

关于Python库的问题
关于Python库的问题 问题1: ModuleNotFoundError: No module named ‘requests’ Python库 Pycharm使用Requests库时报错: No module named requests’解决方法 未安装requests库,使用"pip install requests"命令安装 依然提示P…...
好记性不如烂笔头(2)
概述:用来记录一些小技巧。 1.查看MyBatis执行的sql 类:org.apache.ibatis.mapping.MappedStatement方法:getBoundSql(Object parameterObject)在IDEA的Evaluate Expression查看sql:boundSql.getSql() 2.maven仓库地址为https&…...

Java for循环嵌套for循环,你需要懂的代码性能优化技巧
前言 本篇分析的技巧点其实是比较常见的,但是最近的几次的代码评审还是发现有不少兄弟没注意到。 所以还是想拿出来说下。 正文 是个什么场景呢? 就是 for循环 里面还有 for循环, 然后做一些数据匹配、处理 这种场景。 我们结合实例代码来…...

关于我拒绝了腾讯测试开发岗offer这件事
2022年刚开始有了向要跳槽的想法,之前的公司不能算大厂但在重庆也算是数一数二。开始跳槽的的时候我其实挺犹豫的 其实说是有跳槽的想法在2022年过年的时候就有了,因为每年公司3月会有涨薪的机会,所以想着看看那能不能涨(其实还是…...

从GPT到GPT-3:自然语言处理领域的prompt方法
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
Git代码提交规范
Git 代码规范Git 每次提交代码,都是需要写 Commit message(提交说明),否则就不允许提交。Commit message 的格式 (三部分):Heaher ----- 必填type ---必需scope --- 可选subject --- 必需Body ---- 可省略Footer ---- …...

【JavaScript速成之路】JavaScript内置对象--Math和Date对象
📃个人主页:「小杨」的csdn博客 🔥系列专栏:【JavaScript速成之路】 🐳希望大家多多支持🥰一起进步呀! 文章目录前言1,Math对象1.1,常用属性方法1.1.1,获取x的…...

(自用POC)Fortinet-CVE-2022-40684
本文转载于:https://mp.weixin.qq.com/s?__bizMzIzNDU5Mzk2OQ&mid2247485332&idx1&sn85931aa474f1ae2c23a66bf6486eec63&chksme8f54c4adf82c55c44bc7b1ea919d44d377e35a18c74f83a15e6e20ec6c7bc65965dbc70130d&mpshare1&scene23&srcid…...

ConvNeXt V2实战:使用ConvNeXt V2实现图像分类任务(二)
文章目录训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整算法设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法运行以及结果查看测试热力图可视化展示完…...
【人工智能与深度学习】基于正则化潜在可变能量的模型
【人工智能与深度学习】基于正则化潜在可变能量的模型 正则化潜变量能量基础模型稀疏编码FISTALISTA稀疏编码示例卷积稀疏编码自然图像上的卷积稀疏编码可变自动编码器正则化潜变量能量基础模型 具有潜在变量的模型能够生成预测分布 y ‾ \overline{y}...

【Leetcode——排序的循环链表】
😊😊😊 文章目录一、力扣题之排序循环链表二、解题思路1. 使用双指针法2、找出最大节点,最大节点的下一个节点是最小节点,由此展开讨论总结一、力扣题之排序循环链表 题目如下:航班直达!&#…...

ChatGPT研究分享:机器第一次开始理解人类世界目录
0、为什么会对ChatGPT感兴趣一开始,我对ChatGPT是没什么关注的,无非就是有更大的数据集,完成了更大规模的计算,所以能够回答更多的问题。但后来了解到几个案例,开始觉得这个事情并不简单。我先分别列举出来,…...

【linux】Linux基本指令(上)
前言: 在之前我们已经简单了介绍了一下【Linux】,包括它的概念,由来啊等进行了讲解,接下来我们就将正式的踏入对其的学习!!! 本文目录👉操作系统的概念1.命令的语法1.1命令介绍1.2选…...

程序员必会技能—— 使用日志
目录 1、为什么要使用日志 2、自定义日志打印 2.1、在程序中得到日志对象 2.2、使用日志对象打印日志 2.3、日志格式 3、日志的级别 3.1、日志级别的分类 3.2、日志级别的设置 4、持久化日志 5、更简单的日志输出——lombok 5.1、如何在已经创建好的SpringBoot项目中添加…...

生成项目的包依赖文件requirements.txt
目录生成项目的包依赖文件requirements.txtrequirements.txt文件怎么来?使用pipreqs第三方库requirements.txt文件使用requirements.txt生成项目的包依赖文件requirements.txt 在安装部署代码时或者使用别人的项目时,会需要安装项目的依赖包,…...

安卓渐变的背景框实现
安卓渐变的背景框实现1.背景实现方法1.利用PorterDuffXfermode进行图层的混合,这是最推荐的方法,也是最有效的。2.利用canvas裁剪实现,这个方法有个缺陷,就是圆角会出现毛边,也就是锯齿。3.利用layer绘制边框1.背景 万…...

【拳打蓝桥杯】算法前置课——时间复杂度与空间复杂度
文章目录前言为什么需要复杂度分析?大O复杂度表示法时间复杂度分析几种常见时间复杂度实例分析空间复杂度分析内容小结最后说一句🐱🐉作者简介:大家好,我是黑洞晓威,一名大二学生,希望和大家一…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...