发布日期:2024-09-08 17:06 点击次数:89
SHAP(SHapley Additive exPlanations)看成一种诠释注解机器学习模子输出的才能,基于Shapley值表面,通过将模子臆测成果领悟为每个特征的孝顺高中 自拍偷拍,为模子提供全局和局部的可诠释注解性。
图片
SHAP看成机器学习模子的诠释注解用具,依然是一项要害冲破。
在处罚医知识题时,咱们时时通过构建模子,来寻找病因。此处,会有歧义,谈谈个东谈见地解,此种诠释注解并非因果联系,与Logistic转头的OR值有区别,此种诠释注解不是因果诠释注解,咱们不可因为臆测变量shap值孝顺大,而以为这个变量是结局变量的危急成分。这种联系,只可诠释由于变量的孝顺,能在多猛进度上加多臆测模子的准确率。
现时阶段,SHAP收尾才能,大大宗是基于Python,跟着算法的流行,R说话也有了有关的SHAP诠释注解。然而R的SHAP诠释注解,现在专揽的包是shapviz,这个包仅能对Xgboost、LightGBM以及H2O模子进行诠释注解,其余的机器学习模子并不适用。
图片
这里通过例如,来展示shap模子的R收尾:
动漫av通过Xgboost模子来臆测结直肠癌肝滚动。临了一列是Liver,0代表未滚动,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.7traindata<-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))]))#计较AUCROC_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值并画图
#计较shap值shap_xgboost = shapviz(model_xgboost, X_pred = as.matrix(traindata[,c(1:(ncol(traindata)-2))]))#绘制单个样本瀑布图sv_waterfall(shap_xgboost,row_id = 10)#row_id指定样本
图片
#单个样本力争sv_force(shap_xgboost,row_id = 2)图片
#绘制变量热切性蜂群图sv_importance(shap_xgboost,kind = 'beeswarm')
图片
这里图片的配景是灰色的,这里的函数均是基于ggplot2绘制的,因此咱们不错通过添加theme主题函数,来修改图片的配景
#去掉图片灰色配景sv_importance(shap_xgboost,kind = 'beeswarm') theme_bw()图片
#变量热切性柱状图sv_importance(shap_xgboost) theme_bw()
图片
#单个变量依赖图sv_dependence(shap_xgboost, 'T', alpha = 0.5, size = 1.5, color_var = NULL) theme_bw()图片
#多个变量偏有关依赖图sv_dependence(shap_xgboost, v = c('Sex', 'Grade', 'Histologic', 'Surg')) theme_bw()
图片
以上即是基于R说话收尾了Xgboost模子的诠释注解。
有需要R说话陶冶高中 自拍偷拍,机器学习模子构建,生物信息学分析的伙伴,不错后台私信!
本站仅提供存储做事,总共执行均由用户发布,如发现存害或侵权执行,请点击举报。