轻熟女
三隅 倫 巨乳
你的位置:轻熟女 > 三隅 倫 巨乳 > 在线av hsex R说话shapviz已毕SHAP可视化

在线av hsex R说话shapviz已毕SHAP可视化

发布日期:2025-07-03 14:39    点击次数:65

在线av hsex R说话shapviz已毕SHAP可视化

图片

图片

图片

图片

图片

图片

图片

图片

之前先容了SHAP这种模子诠释才调,何况给全球翔实演示了奈何基于DALEX,用3行代码已毕对纵情模子的局部(instance-level)SHAP诠释,并先容了效果的可视化,包括默许的才调以及我方通过ggplot2的画法。

R说话模子诠释概述R说话SHAP模子诠释

SHAP看成一种经典的变量归因模子诠释才调,它和剖析诠释有着相等轮廓的有关,若是你了解了剖析诠释的旨趣,那么SHAP诠释就相等肤浅了。其实对于它的本色相等多,现在在R中已毕SHAP的才调也有相等多,只用一篇推文是不可能先容完的哈,后续会抓续先容这个SHAP。

今天给全球先容一个有益用于SHAP可视化的R包,亦然属于DrWhy.AI生态系统中的一个R包,名字叫shapviz。

公众号后台修起模子诠释即可取得模子诠释书籍,修起shap即可取得SHAP诠释书籍。

本文目次:

装置

简介在线av hsex

示例

对接DALEX

装置
# From CRANinstall.packages("shapviz")# Or the newest version from GitHub:# install.packages("devtools")devtools::install_github("ModelOriented/shapviz")
简介

shapviz主要提供以下几种可视化才调:

sv_importance(): 变量热切性可视化,可选条形图大致蜂窝图(也等于Python中常见的图)sv_dependence()、sv_dependence2D(): 变量依赖图sv_interaction(): 变量交互效应图sv_waterfall(): 瀑布图,最惯例的SHAP累加归因图sv_force(): 瀑布图的一种变体

若是要使用以上几种可视化才调,需要提供shapviz对象,这个对象需要两个东西:

S:SHAP值矩阵X:包含特征值的数据集

为了方便使用,径直赈济以下模子的输出:

XGBoostLightGBMh2okernelshapfastshapshaprtreeshapDALEX

不错看到其中有DALEX哈,因为DALEX基本上赈济扫数的模子,也等于说这个shapviz赈济基本上扫数模子。

踩脚袜 足交示例

使用xgboost修复xgboost模子进行演示。使用diamonds数据集,共有53940行,10列,总结任务,price是效果变量,数值型。

library(shapviz)library(ggplot2)library(xgboost)dim(diamonds)## [1] 53940    10str(diamonds)## tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)##  $ carat  : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...##  $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...##  $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...##  $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...##  $ depth  : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...##  $ table  : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...##  $ price  : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...##  $ x      : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...##  $ y      : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...##  $ z      : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

修复xgboost模子:

# 修复xgboost模子set.seed(3653)x <- c("carat", "cut", "color", "clarity")dtrain <- xgb.DMatrix(data.matrix(diamonds[x]), label = diamonds$price)fit <- xgb.train(params = list(learning_rate = 0.1), data = dtrain, nrounds = 65)

构建shapviz对象,只使用其中2000个不雅测:

dia_small <- diamonds[sample(nrow(diamonds), 2000), ]# 构建shapviz对象shp <- shapviz(fit, X_pred = data.matrix(dia_small[x]), X = dia_small)

这个shapviz具体来说赈济以下方法创建的对象:

XGBoost包创建的模子对象,比如上头的fitLightGBM包创建的模子对象H2O (tree-based regression or binary classification model)创建的模子对象fastshap::explain()创建的对象shapr::explain()创建的对象treeshap::treeshap()创建的对象DALEX::predict_parts()创建的对象kernelshap::kernelshap()创建的对象permshap::permshap()创建的对象

对第一个不雅测画出瀑布图:这个图的诠释请参考之前的推文:剖析诠释

sv_waterfall(shp, row_id = 1)

图片

瀑布图的另一种呈现方法,等于把几个条形放在一转中,和Python中的展示方法差未几:

sv_force(shp, row_id = 1)

图片

对应的Python的SHAP库中的图形是这种:

图片

看颜值我以为Python更胜一筹!可是从图形解读的方便性来看,照旧瀑布图愈加好领悟。

不错团员多个不雅测的平均值,比如同期聘请color为D的样本,此时画出来的SHAP值是平均值:

sv_waterfall(shp, shp$X$color == "D")

图片

咱们聘请对2000个样本进行SHAP诠释,这么对每一个特征,就会得到多个shapley值,对这些值取平均值就不错得到基于SHAP的变量热切性(顾惜和基于重排的变量热切性分袂),这么一来这里的SHAP就形成了dataset-level的模子诠释:

sv_importance(shp)

图片

用蜂窝图的形势呈现效果,这个图亦然Python的SHAP中常见的shap summary plot:

每一个点王人示意一个样本,横坐标是Shapley值,纵坐标是变量名字,心思浅深示意变量数值大小。这张图不错很明晰的展示每个变量的Shapley值散播情况。比如对于carat这个变量来说,它的值越小,钻石的价钱越低(Shapley值是负的)。

sv_importance(shp, kind = "beeswarm")

图片

还不错展示变量依赖图,相等访佛于之前先容过的CP弧线图。只不外这里的图纵坐标是SHAP值,横坐标仍是是展望变量。比如下图就展示了SHAP值跟着color这个变量的篡改而变化的情况:

sv_dependence(shp, v = "color")

图片

多个变量同期展示也不错,只不外需要借助patchwork援救拼图:

library(patchwork)  sv_dependence(shp, v = x) &  theme_gray(base_size = 9) &  ylim(-5000, 15000)

图片

还不错同期展示两个变量对SHAP值的影响,此时的SHAP值是它们的加和:

sv_dependence2D(shp, x = "carat", y = c("clarity", "color"), alpha = 0.5)

图片

若是有交互作用还不错展示主效应和交互效应的SHAP:

shp_i <- shapviz(  fit,   X_pred = data.matrix(dia_small[x]),   X = dia_small, interactions = TRUE)# caret主效应以及,它和其他变量的交互效应sv_dependence(shp_i, v = "carat", color_var = x, interactions = TRUE) &  ylim(-6000, 13000)

图片

还不错用蜂窝图展示扫数的主效应和交互效应:

sv_interaction(shp_i) +  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

图片

对接DALEX

为了展示,再演示一个SVM模子,使用e1071包构建一个赈济向量机模子:

library(e1071)set.seed(3653)diamonds <- diamonds[sample(nrow(diamonds),1000),] #只使用1000行model_svm <- svm(price ~ carat+cut+color+clarity, data = diamonds)

由于shapviz不可径直赈济e1071创建的模子对象,是以咱们使用DALEX移动一下。

修复诠释器:

library(DALEX)explain_svm <- DALEX::explain(model = model_svm,                      data = diamonds[,1:4],                      y = diamonds$price,                      label = "randomforest"                      )## Preparation of a new explainer is initiated##   -> model label       :  randomforest ##   -> data              :  1000  rows  4  cols ##   -> data              :  tibble converted into a data.frame ##   -> target variable   :  1000  values ##   -> predict function  :  yhat.svm  will be used (  default  )##   -> predicted values  :  No value for predict function target column. (  default  )##   -> model_info        :  package e1071 , ver. 1.7.14 , task regression (  default  ) ##   -> predicted values  :  numerical, min =  -161.2517 , mean =  3783.737 , max =  17316.85  ##   -> residual function :  difference between y and yhat (  default  )##   -> residuals         :  numerical, min =  -5942.083 , mean =  40.21553 , max =  8179.3  ##   A new explainer has been created!

SHAP诠释:

set.seed(3653)shap_svm <- predict_parts(explainer = explain_svm,                         new_observation = diamonds[1,1:4],                         type = "shap",                         B = 15                          )#shap_svm

然后就不错提供给shapviz用了:

shp_svm <- shapviz(shap_svm)

接下来就不错使用shapviz包中的多样函数绘制了,不作念只可使用其中一部分函数,尤其是需要多个不雅测SHAP的函数,这里是不可用的,因为predict_parts()只可接纳一个不雅测。

此时只消个别函数可用,比如:

sv_force(shp_svm)

图片

sv_importance(shp_svm)

图片

若是你非要使用多个不雅测已毕SHAP(也等于全局诠释的SHAP)在线av hsex,还有很多方法其他R包不错已毕哈,比如fastshap、kernelshap、treeshap等,渐渐先容。

​ 本站仅提供存储工作,扫数本色均由用户发布,如发现存害或侵权本色,请点击举报。

Powered by 轻熟女 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群系统 © 2013-2024