You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

随机生存森林(RSF)模型SHAP值绘图报错求助:预测值需为数值型

问题描述

使用随机生存森林(RSF)模型绘制SHAP值时,执行代码触发报错:

Fejl i align_pred(pred_fun(object, bg_X, ...)) : Predictions must be numeric!

用户已确认模型的predicted结果为数值型数组,但无法定位问题根源。相关代码及预测值示例如下:

运行代码

xvars <- c("RIDRETH1", "RXDLIPID", "DRXTKCAL", "DRXTPROT", "DRXTCARB", "DRXTCHOL", "DRXTFIBE", "DRXTVARA", "DRXTATOC", "DRXTSODI", "DRXTPOTA", "DRXTM161", "DRXTM181", "DRXTM201", "DRXTM221", "DRXTP182", "DRXTP183", "DRXTP184", "DRXTP204", "DRXTP205", "DRXTP225", "DRXTP226", "DRXTRET", "DRXT_G_TOTAL", "DRXT_V_STARCHY_TOTAL", "DRXTS160", "DRXTS180", "DRXTsumSFA", "INDFMPIR", "LBXCOT", "GENDERRC")

X <- Data[sample(nrow(Data), 1000), xvars]

bg_X <- Data[sample(nrow(Data), 200), ]


system.time(
  ks <- kernelshap(rf_mort_nutrients_withoutage_1018_all, X, bg_X = bg_X, type = 'prob')
)
ks

ks <- shapviz(ks)
sv_importance(ks, kind = "bee", )

模型预测值示例

rf_mort_nutrients_withoutage_1018_all$predicted
   [1]  81.31376  75.82491  99.35944  58.63055  67.65847  98.32906  75.33934 107.81604  62.22175  75.69875  69.99881  83.67161  81.39735  65.59381
问题分析与解决方法
  • 特征列不匹配:X仅包含xvars指定的特征,但bg_X取了全数据集的行,包含额外列。模型预测时输入特征不一致,可能导致输出格式异常。
    解决:修改bg_X定义,仅保留xvars列:

    bg_X <- Data[sample(nrow(Data), 200), xvars]
    
  • type='prob'参数不适用:随机生存森林的预测目标通常是风险值或生存时间,并非分类任务的概率。kernelshap的type='prob'会触发分类模型的预测逻辑,导致输出不符合要求。
    解决:移除type='prob'参数,或根据RSF模型输出类型指定正确参数(如type='response')。

  • 预测函数输出格式异常:默认预测函数可能返回带额外属性的对象(如矩阵、列表),而非纯数值向量——即使model$predicted是数值型也可能出现此问题。
    解决:自定义预测函数,强制返回数值向量:

    pred_fun <- function(model, newdata) {
      as.numeric(predict(model, newdata = newdata))
    }
    

    然后在kernelshap中指定该函数:

    ks <- kernelshap(rf_mort_nutrients_withoutage_1018_all, X, bg_X = bg_X, pred_fun = pred_fun)
    
  • 背景数据集类型不匹配:检查bg_X与X的特征数据类型是否完全一致(如因子列的水平、数值列的类型),类型不匹配可能导致预测输出异常。
    解决:用str(X)和str(bg_X)对比特征类型,对不一致的列进行转换统一。

内容的提问来源于stack exchange,提问作者mtvpr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:22:46