来源:Deephub Imba
本文约1800字,建议阅读5分钟
本文我们通过一个简单据集的回归示例了解了部分依赖图 (PDP) 和个体条件期望 (ICE) 图是什么,以及如何在 Python 中制作它们。

部分依赖图 (PDP) 和个体条件期望 (ICE) 图可用于可视化和分析训练目标与一组输入特征之间的交互关系。

部分依赖图(Partial Dependence Plot)

部分依赖图显示了目标函数(即我们的机器学习模型)和一组特征之间的依赖关系,并边缘化其他特征的值(也就是补充特征)。它们是通过将模型应用于一组数据、改变感兴趣特征的值同时保持补充特征的值不变可以分析模型输出来计算特征变量对模型预测结果影响的函数关系:例如近似线性关系、单调关系或者更复杂的关系。

个体条件期望图(Individual Conditional Expectation )

虽然 PDP 擅长显示目标特征的平均效果,但它可能会模糊仅在某些样本上显示特征的关系影响。

所以个体的条件期望 (ICE) 图显示了目标函数和特征之间的依赖关系。与显示一组特征的平均效果的部分依赖图不同,ICE 图消除了非均匀效应的影响并分别可视化每个样本的预测对特征的依赖关系,每个样本一行。

代码示例

注:sklearn 0.24以后的版本也加入对这两个图进行绘制的功能,但是这里我们使用更好的shap库

from sklearn.datasets import fetch_california_housingfrom sklearn.ensemble import RandomForestRegressor
from sklearn.inspection import PartialDependenceDisplay
import matplotlib.pyplot as plt

在本文中,我们使用加州住房的数据集,其目的是使用收入中位数或每户房间数量等特征来预测街区的平均房价。首先训练一个 RandomForestRegressor 来根据这些特征预测房价,最后使用 sklearn.inspection 模块中的 PartialDependenceDisplay 类制作部分依赖图和个体条件期望图。

我们主要处理以下这些特性:

  • AveOccup:平均家庭成员数。

  • MedInc:收入中位数。

加载加州住房数据集

X, y = fetch_california_housing (return_X_y = True, as_frame = True)

目标变量是加州地区的房屋价值中位数,以数十万美元($100,000)表示。该数据集来自 1990 年的美国 人口普查发布样本数据(街区是最小的地理单位,通常是一个街区人口为 600 至 3,000 人)。

  • MedInc 收入中位数

  • HouseAge 房屋年龄中位数

  • AveRooms 每户平均房间数

  • AveBedrms 每户平均卧室数量

  • Population  人口数

  • AveOccup 平均家庭成员数

  • Latitude  纬度

  • Longitude  经度

以下是数据集中的一些样本特征值。目标特征,即 每个街区的平均价格,在 0 到 5 之间浮动,数值以十万美元表示。

让我们先训练一个 RandomForestRegressor 来学习从房屋特征中预测价格。

model = RandomForestRegressor(random_state=42).fit(X, y)

然后使用 Shap 库来进行绘图,Shap库中包含几种可解释的 AI 相关方法。

pip install shap

导入 Shap 库并创建一小部分训练数据,在本例中为 100 个样本

import shapX100 = X.sample(n=100)

接下来,使用 shap.plots 模块的 partial_dependence 函数制作部分依赖图,并作为参数传递:

  • 目标特征(AveOccup)。

  • 预测函数 (model.predict)。

  • 数据集 (X100)。

  • 是否制作部分依赖图或个体条件期望图。

  • 是否还绘制平均模型预测 (model_expected_value) 和平均特征值 (feature_expected_value)。

shap.plots.partial_dependence("AveOccup", model.predict, X100, ice=False,model_expected_value=True, feature_expected_value=True
)

函数会迭代 X100 中的所有样本,并且对于每个样本多次调用 model.predict 函数,修改目标特征的值,但保持补充特征(即所有其他特征)不变。结果图显示了整个数据集上每个目标特征值的模型平均输出。

上图中可以看到当 AveOccup 低于 2 时,预期模型 Prediction 很高,然后它迅速下降,直到 AveOccup 为 4,并且对于更高的 AveOccup 基本保持不变。

让我们对 MedInc 做同样的事情。

shap.plots.partial_dependence("MedInc", model.predict, X100, ice=False,model_expected_value=True, feature_expected_value=True
)

看起来平均预测家庭价格随着收入中位数的增加而增加。

下面尝试下个体条件期望图。可以再次使用 partial_dependence 函数来制作它们,但这次将 ice 参数设置为 True。

shap.plots.partial_dependence("AveOccup", model.predict, X100, ice=True,model_expected_value=True, feature_expected_value=True
)

结果仍然显示了 AveOccup 特征变化的平均模型预测,即深蓝色线。但是,ICE 图还显示了每个样本的输出变化,这使我们能够查看是否存在具有不同特征交互的样本。

例如在图表的顶部,可以看到模型预测高价的街区不会随着 AveOccup 特征的变化而发生太大变化。这些样本可以进一步的进行研究。

同样计算 MedInc 特征的 ICE 图。

shap.plots.partial_dependence("MedInc", model.predict, X100, ice=True,model_expected_value=True, feature_expected_value=True
)

该模型遵循的规则是:较高的 MedInc 表明大多数样本的价格较高,但仍有一些例外情况值得调查研究。

现在我们可以尝试找出 AveOccup、MedInc 和街区价格之间的关系。首先创建了一个散点图,其中 x 是 AveOccup,y 是 MedInc,每个样本颜色代表块组价格。

px.scatter(x=X["AveOccup"], y=X["MedInc"], color=y,labels={"x": "AveOccup", "y": "MedInc", "color": "price"},range_x=(0, 10))

具有低 AveOccup 和高 MedInc 的样本似乎具有更高的价格,这正是我们看到模型学到的,这要归功于部分依赖和个体条件期望图。看起来模型已经学会了有意义的规则

模型的可解释性:部分依赖图PDP和个体条件期望图ICE相关推荐

  1. 原创 | 一文读懂模型的可解释性(附代码链接)

    作者:林夕 本文长度为10000字,建议阅读10+分钟 对于信任和管理我们的人工智能"合作伙伴",可解释AI则至关重要. 目录 1.1 可解释的重要性 1.2 可解释性的范围 1. ...

  2. 关于机器学习模型的可解释性算法!

     模型可解释性汇总 简 介 目前很多机器学习模型可以做出非常好的预测,但是它们并不能很好地解释他们是如何进行预测的,很多数据科学家都很难知晓为什么该算法会得到这样的预测结果.这是非常致命的,因为如果我 ...

  3. 谈谈机器学习模型的可解释性

    随着AI和机器学习的发展,越来越多的决策会交给自动化的机器学习算法来做.但是当我们把一些非常重要的决定交给机器的时候,我们真的放心么?当波音飞机忽略驾驶员的指令,决定义无反顾的冲向大地:当银行系统莫名 ...

  4. Google新作:注意力机制是否真的能够提供模型的可解释性?

    ©PaperWeekly 原创 · 作者|张琨 学校|中国科学技术大学博士生 研究方向|自然语言处理 论文标题: The elephant in the interpretability room: ...

  5. 机器学习模型的可解释性

    模型可解释性的定义,我认为比较合理的一个:可解释性是指模型能够使用人类可认知的说法进行解释和呈现. 是模型的什么性质使得模型可解释,有些将模型的可解释性等同于模型的可理解性,也就是我们可以掌握模型的工 ...

  6. CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)—五个架构设计思维导图

    CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)-五个架构设计思维导图 ...

  7. ML之PFI(eli5):基于mpg汽车油耗数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特征可解释性排序

    ML之PFI(eli5):基于mpg汽车油耗数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特征可解释性排序 目录 基于mpg数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特 ...

  8. 如何提高深度学习模型的可解释性?极致的数据透出与多维可视化实战详解

    小叽导读:深度网络对机器学习研究和应用领域产生了巨大的影响,与此同时却无法很清晰地解释神经网络的来龙去脉.迄今为止,深度学习不够透明,神经网络整体看来仍然是一个黑箱.因此,人们一直致力于更透彻地去理解 ...

  9. 如何提高深度学习模型的可解释性?极致的数据透出与多维可视化实战详解...

    小叽导读:深度网络对机器学习研究和应用领域产生了巨大的影响,与此同时却无法很清晰地解释神经网络的来龙去脉.迄今为止,深度学习不够透明,神经网络整体看来仍然是一个黑箱.因此,人们一直致力于更透彻地去理解 ...

最新文章

  1. PMON failed to acquire latch, see PMON dump
  2. 谷歌浏览器查询缓存视频图片
  3. 【《Objective-C基础教程 》笔记】(八)OC的基本事实和OC杂七杂八的疑问
  4. Linux下安装RabbitMQ
  5. C#使用 System.Net.Mail发送邮件功能
  6. bzoj 3232 01分数规划+最大权封闭子图判定
  7. redis的安装(Linux)和基本使用
  8. mysql的空间查询函数_MYSQL空间查询函数
  9. noip2015day1 T1 4510 神奇的幻方
  10. 利用tensorFlow api 识别手术器械
  11. 豆瓣电影 Top 250
  12. 视易精通收银服务器自动关机,视易精通量贩式收银系统操作手册3.0
  13. 如何将数字转化为中文大写
  14. TreeSet 和 TreeMap 排序
  15. C语言 十进制转换为二进制
  16. linux写含输入输出的代码,linux系统管理-输入输出
  17. L1-6 烤地瓜 (15 分)
  18. 重磅!《中国DevOps现状调查报告(2021年)》正式发布!(附报告获取方式)
  19. 三亚三姐,三亚海鲜的代言人
  20. GDAL+Python实现栅格影像处理之栅格矢量化及矢量栅格化

热门文章

  1. 大雁塔为什么七层_“大唐不夜城”广场旁边的千年古佛塔为何被叫“大雁塔”?...
  2. VS2017+OpenCV3.4.0 折腾(5)
  3. 查看并修改mysql的默认引擎
  4. Ubuntu更新时遇到/boot空间不足
  5. CocoaPod出现“target overrides the `OTHER_LDFLAGS`……的解决方案
  6. 每个程序员都应该了解的内存知识(3)-虚拟内存
  7. 培养积极状态的八个方法
  8. python3.7安装numpy pandas失败的处理方案
  9. Gini指数、Gini系数、Gini不纯是一回事吗?
  10. sklearn中的RandomForestClassifier参数详解