机器学习模型SHAP解释——R语言

这篇具有很好参考价值的文章主要介绍了机器学习模型SHAP解释——R语言。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SHAP(SHapley Additive exPlanations)作为一种解释机器学习模型输出的方法,基于Shapley值理论,通过将模型预测结果分解为每个特征的贡献,为模型提供全局和局部的可解释性。

r语言shap,机器学习,机器学习,人工智能,r语言

SHAP作为机器学习模型的解释工具,已经是一项重大突破。

在处理医学问题时,我们往往通过构建模型,来寻找病因。此处,会有歧义,谈谈个人见解,此种解释并非因果关系,与Logistic回归的OR值有区别,此种解释不是因果解释,我们不能因为预测变量shap值贡献大,而认为这个变量是结局变量的危险因素。这种关系,只能说明由于变量的贡献,能在多大程度上增加预测模型的准确率。

当前阶段,SHAP实现方法,大多数是基于Python,随着算法的流行,R语言也有了相关的SHAP解释。但是R的SHAP解释,目前应用的包是shapviz,这个包仅能对Xgboost、LightGBM以及H2O模型进行解释,其余的机器学习模型并不适用。

r语言shap,机器学习,机器学习,人工智能,r语言

这里通过举例,来展示shap模型的R实现:

通过Xgboost模型来预测结直肠癌肝转移。最后一列是Liver,0代表未转移,1代表肝转移

1.加载相关的包,读入数据

#install.packages("shapviz")
library(shapviz)
#install.packages("xgboost")
library(xgboost)
library(caret)
library(pROC)
library(tibble)
library(ROCit)
data =read.csv("data.csv",header = T,check.names = F)

2.通过caret包划分训练集和测试集数据

# 划分训练集和测试集
set.seed(123)#设置随机数
inTrain<-createDataPartition(y=data[,"Liver"], p=0.7, list=F)#划分训练集,设置训练集的比例为0.7
traindata<-data[inTrain,]#提取训练集数据
testdata<-data[-inTrain,]#提取验证集数据

3.构建Xgboost模型

model_xgboost = xgboost(
  data = as.matrix(traindata[,c(1:(ncol(traindata)-1))]),#训练集的自变量矩阵
                   label = traindata$Liver,
                   max_depth = 3, 
                   eta = 1, 
                   nthread = 2, 
                   nrounds = 10,
                   objective = "binary:logistic")

4.模型的预测结果

#生成预测值
traindata$pred <- predict(model_xgboost, as.matrix(traindata[,c(1:(ncol(traindata)-1))]))
#计算AUC
ROC_train <- round(auc(response=traindata$Liver,predictor=traindata$pred),4)
ROC_train
#计算置信区间
CI_train=ci(response=traindata$Liver,predictor=traindata$pred)
CI_train
#通过那个paste0连接
AUC_CI_train=paste0("AUC=",round(CI_train[2],3),",95%CI (",round(CI_train[1],3)," - ",round(CI_train[3],3),")")
AUC_CI_train

5.绘制ROC曲线

这里美化图片的原因是,中华系列杂志需要这样去绘图。

#整理数据,美化图片
ROC_data <- rocit(score=traindata$pred,class=traindata$Liver)
m1=tibble(
  name="Model",
  TPR=ROC_data$TPR,
  FPR=ROC_data$FPR,
  AUC=AUC_CI_test
)
pdf("ROC_train.pdf",5,5,family = "serif")
ggplot(m1,aes(x = FPR, y = TPR)) +
  geom_path() +
  labs(title= " ", 
       x = "False Positive Rate (1-Specificity)", 
       y = "True Positive Rate (Sensitivity)")+
  geom_abline(lty = 3) +
  theme_classic()+
  annotate("text", x = 0.6 , y = 0.2,label = AUC_CI_test,colour="black")+
  scale_y_continuous(expand=c(0,0))+
  scale_x_continuous(expand=c(0,0))+
  theme(
    axis.ticks.length=unit(-0.1, "cm"),
    legend.position = c(0.7, 0.2),
    legend.title = element_blank(),
    strip.background = element_blank(),
    text = element_text(size = 15,color="black")#face="bold"
  )

6.计算shap值并绘图

r语言shap,机器学习,机器学习,人工智能,r语言


#单个样本力图
sv_force(shap_xgboost,row_id = 2)

r语言shap,机器学习,机器学习,人工智能,r语言


#去掉图片灰色背景
sv_importance(shap_xgboost,kind = "beeswarm")+theme_bw()

这里图片的背景是灰色的,这里的函数均是基于ggplot2绘制的,因此我们可以通过添加theme主题函数,来修改图片的背景r语言shap,机器学习,机器学习,人工智能,r语言

#变量重要性柱状图sv_importance(shap_xgboost)+theme_bw()

r语言shap,机器学习,机器学习,人工智能,r语言

sv_dependence(shap_xgboost, "T",               alpha = 0.5,              size = 1.5,              color_var = NULL)+theme_bw()

r语言shap,机器学习,机器学习,人工智能,r语言

#多个变量偏相关依赖图
sv_dependence(shap_xgboost, 
              v = c("Sex",
                    "Grade",
                    "Histologic",
                    "Surg"))+theme_bw()

r语言shap,机器学习,机器学习,人工智能,r语言

以上就是R的Xgboost模型的SHAP解释。【公众号:小庞统计】文章来源地址https://www.toymoban.com/news/detail-860045.html

到了这里,关于机器学习模型SHAP解释——R语言的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习模型的可解释性:增加对人工智能系统的信任和理解

            为了以道德和值得信赖的方式使用人工智能,研究人员必须继续创建平衡模型复杂性和易于解释的方法。         机器学习模型在各个领域的使用都取得了重大进展,包括自然语言处理、生成式人工智能和自主系统等。另一方面,随着模型复杂性和规模的增加

    2024年02月13日
    浏览(44)
  • 真假阳性问题:可解释性机器学习与人工智能

    在过去的几年里,人工智能(AI)和机器学习(ML)技术已经取得了显著的进展,这些技术在各个领域得到了广泛的应用。然而,随着这些技术的发展,一个重要的问题也逐渐凸显:真假阳性问题。真假阳性问题是指在预测或分类任务中,模型预测为正例(阳性)的样本实际上是否确实

    2024年04月28日
    浏览(38)
  • Shap-E:3D资产的生成式AI大模型

    OpenAI 刚刚发布了 Shap-E,这是一种基于文本提示和图像创建 3D 资产的生成模型,能够生成带纹理的网格和神经辐射场 ,从而实现各种 3D 输出。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 在本教程中,我们将引导你在 Google Colab(免费)上设置 Shap-E,运行代码以根据文本提

    2024年02月05日
    浏览(48)
  • 数据分析 | 特征重要性分析 | 树模型、SHAP值法

            在分析特征重要性的时候,相关性分析和主成分分析往往是比较简单的方法,相关性分析是通过计算特征与目标变量之间的相关系数来评估特征的重要性。它可以告诉我们特征和目标变量之间的线性关系程度,但对于非线性关系就无能为力了;主成分分析是一种降

    2024年02月10日
    浏览(46)
  • 【shap】使用shap画图时colorbar颜色条不能正常显示

      下面,我的shap值全是蓝色的,没有红色 (注:蓝色是负贡献,红色是正贡献)  参考上面的帖子,是matplotlib版本问题,我原来的版本是3.5.0,降级回3.4.3就正常了。   

    2024年02月22日
    浏览(43)
  • ST股票预测模型(机器学习_人工智能)

    知己知彼,百战不殆;不知彼而知己,一胜一负;不知彼,不知己,每战必贻。--《孙子兵法》谋攻篇 ST股票 ST股票是指因连续两年净利润为负而被暂停上市的股票,其风险较高,投资者需要谨慎对待。这些公司可能面临着特殊的财务困难或其他问题,因此被市场视为风险较

    2024年01月18日
    浏览(52)
  • 数据预处理与模型评估【机器学习、人工智能、实际事例】

    在机器学习领域,数据预处理和模型评估是两个至关重要的步骤。它们确保我们构建的机器学习模型能够从数据中有效地学习并做出准确的预测。本文将详细介绍数据预处理和模型评估的概念,并通过现实中的例子来阐述它们之间的密切关系。 什么是数据预处理? 数据预处

    2024年02月07日
    浏览(67)
  • 模型训练:优化人工智能和机器学习,完善DevOps工具的使用

    作者:JFrog大中华区总经理董任远 据说法餐的秘诀在于黄油、黄油、更多的黄油。同样,对于DevOps而言,成功的三大秘诀是自动化、自动化、更高程度的自动化,而这一切归根结底都在于构建能够更快速地不断发布新版软件的流程。 尽管人们认为在人工智能(AI)和机器学习

    2024年02月10日
    浏览(42)
  • 探索人工智能 | 模型训练 使用算法和数据对机器学习模型进行参数调整和优化

    模型训练是指 使用算法和数据对机器学习模型进行参数调整和优化 的过程。模型训练一般包含以下步骤:数据收集、数据预处理、模型选择、模型训练、模型评估、超参数调优、模型部署、持续优化。 数据收集是指为机器学习或数据分析任务收集和获取用于训练或分析的数

    2024年02月12日
    浏览(59)
  • 第九课:机器学习与人工智能、计算机视觉、自然语言处理 NLP及机器人

    各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料! 以区分飞蛾为例: 标记数据如下。 虚线为决策边界如下。 右下角表为混淆矩阵。 本质上是用任意线段来切分决策空间,不一定是直线。 不用统计学的算法。模拟人类学习的过程,将数据进行加权求

    2024年02月03日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包