R语言-新颖的可解释性机器学习(vivid)

在解释统计模型和机器学习模型时,变量重要性、交互作用度量和部分依赖图是非常重要的方法。

R包vivid是一个功能强大的软件包,主要用于可视化机器学习模型以及统计模型中的变量重要性和变量交互。vivid构建了一种新的矩阵类型的布局,用于显示所有单变量和双变量的部分依赖图。这些新的可视化技术与模型无关,可以应用于回归和分类监督的学习设置,即使在变量数量很大且交互结构复杂的情况下,也能增强解释性。

在机器学习模型方面,vivid支持多种模型的可视化,包括但不限于决策树、神经网络、支持向量机等。用户可以根据模型类型选择合适的可视化方法,从而直观地展示模型的结构和决策过程。

一、安装​​

# 安装依赖包if (!requireNamespace("graph", quietly = TRUE)){  install.packages("BiocManager")  BiocManager::install("graph")}
install.packages("zenplots")install.packages("vivid")# 加载vividlibrary(vivid)library(mlr3verse) # 模型构建data("Boston",package = "ISLR2") # 导入数据

二、模型构建

基于mlr3构建LightGBM模型

# 构建机器学习任务task <- as_task_regr(Boston, target = "medv")# 学习器learner <- lrn("regr.lightgbm")# 构建模型m3 <- learner$train(task)

构建模型解释对象

​​​​​​​

vi <- vivi(data = Boston,            fit = m3,            response = 'medv')

​​​​​​​

print(vi,digits = 2)
        lstat   dis  crim   nox   age    rm ptratio    tax  induslstat   6.450 0.894 0.683 0.660 0.883 0.468  0.1189 0.1970 0.1309dis     0.894 1.776 0.574 0.530 0.175 0.214  0.1062 0.1056 0.0265crim    0.683 0.574 0.944 0.168 0.112 0.091  0.0589 0.0599 0.0358nox     0.660 0.530 0.168 1.615 0.212 0.311  0.1828 0.0429 0.0562age     0.883 0.175 0.112 0.212 0.874 0.225  0.1492 0.1261 0.0762rm      0.468 0.214 0.091 0.311 0.225 4.428  0.2295 0.0924 0.0539ptratio 0.119 0.106 0.059 0.183 0.149 0.230  0.4317 0.1415 0.0611tax     0.197 0.106 0.060 0.043 0.126 0.092  0.1415 0.5300 0.1155indus   0.131 0.026 0.036 0.056 0.076 0.054  0.0611 0.1155 0.1519rad     0.167 0.054 0.020 0.080 0.031 0.118  0.0231 0.0412 0.0396zn      0.044 0.020 0.010 0.003 0.027 0.017  0.0109 0.0147 0.0101chas    0.054 0.044 0.010 0.010 0.019 0.018  0.0012 0.0033 0.0013            rad      zn    chaslstat   0.16708 0.04393 0.05380dis     0.05408 0.01978 0.04402crim    0.01950 0.01004 0.01006nox     0.07954 0.00299 0.01010age     0.03114 0.02674 0.01915rm      0.11806 0.01663 0.01774ptratio 0.02315 0.01086 0.00120tax     0.04124 0.01474 0.00330indus   0.03961 0.01007 0.00125rad     0.15665 0.01247 0.00042zn      0.01247 0.01989 0.00024chas    0.00042 0.00024 0.02630attr(,"class")[1] "vivid"  "matrix" "array" 

vivi()函数生成一个对称矩阵,其对角线上包含变量重要性,非对角线上包含变量交互作用。为了计算成对交互作用强度,vivid使用了Friedman的模型无关、未归一化的H统计量。

三、可视化

3.1 热图

​​​​​​​

viviHeatmap(vi,            #交互作用的颜色            intPal = rev(colorspace::sequential_hcl(                                                    palette = "Sunset",                                                     n = 100)),            # 变量重要性的颜色            impPal = rev(colorspace::sequential_hcl(                                                    palette = "RdPu",                                                     n = 100)))

viviHeatmap函数生成一个热图,用于显示变量重要性和交互作用,其中对角线上显示重要性值,非对角线上显示交互作用值。

3.2 网络图

viviNetwork(vi)

使用viviNetwork,可以生成一个网络图来可视化重要性和交互作用。使用视觉元素(如大小和颜色)来描绘重要性和交互作用值的大小。图中每个变量都被表示为一个节点,其大小和颜色反映了其重要性(节点越大、颜色越深表示重要性越高)。成对交互作用通过连接边显示,其中更粗、颜色更深的边表示更高的交互作用值。

3.3 单变量偏依赖图

​​​​​​​

pdpVars(data = Boston,          fit = m3,          response = "medv",         vars = colnames(Boston)[9:12],         gridSize = 10,          nIce = 200,         nmax = 50)

pdpVars函数为选定变量构建了一个包含ICE曲线(个体条件期望曲线)的单变量偏依赖图网格。我们使用ICE曲线来辅助识别线性或非线性效应。

在上图示例中,我们选择vivid矩阵中的四个变量进行展示,并通过nIce参数设置要显示的ICE曲线的数量。

3.4 广义偏依赖对图

​​​​​​​

pdpPairs(data = Boston,          fit = m3,          response = "medv",         vars = colnames(Boston)[9:12],         gridSize = 10,          nmax = 500,         nIce = 100)

pdpPairs函数生成了一个广义偏依赖对图(GPDP),该图在对角线上包含了单变量偏依赖(带有ICE曲线),在上三角区包含了双变量偏依赖图,而在下三角区则是原始变量值的散点图。其中,所有点的颜色和ICE曲线的颜色都根据预测的y值进行分配。

3.5 偏依赖Zen图

pdpZen(data = Boston,          fit = m3,          response = "medv",         gridSize = 10,          nmax = 500)

Zen图旨在展示高维数据的成对图,展示了双变量PDP,强调具有最重要交互值的变量。这种格式在处理高维预测空间时很有用。

参考资料 https://alaninglis.github.io/vivid/

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮肤小白生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值