如何解决mlr3:从surv.gbm获得响应预测的生存时间
mlr3框架中的surv.gbm输出线性预测变量,但是我真正感兴趣的是每个案例的预测生存时间,我想将其与实际生存时间进行比较。有没有一种方法可以获取实际的生存时间?
在mlr3书中,有一个线性预测变量与分布之间的转换示例。
pod = po("distrcompose",param_vals = list(form = "ph",overwrite = FALSE))
prediction = pod$predict(list(base = prediction_distr,pred = prediction_lp))$output
是否可以更改此管道,以便将“ lp”转换为“ response”?
将寻求任何帮助。
解决方法
是的,这完全有可能,只需要进行另一种转换即可。第一步是从线性预测变量组成分布是正确的;当您使用surv.gbm
时,只能使用Cox PH作为基础模型,因此distrcompose
的默认设置适用于此。
现在,您需要使用crankcompose
来根据分布创建生存时间预测,您可以使用分布的均值,中位数或众数,人们通常会选择均值或中位数,但这是您的选择!只要确保包含response = TRUE,overwrite = FALSE
。下面的示例代码包括使用RMSE创建预测和评分(出人意料的非常好!)。我认为这本书可能需要更新...
谢谢, 拉斐尔
library(mlr3extralearners)
library(mlr3proba)
library(mlr3pipelines)
library(mlr3)
learn = ppl("crankcompositor",ppl("distrcompositor",lrn("surv.gbm")),response = TRUE,overwrite = FALSE,method = "mean",graph_learner = TRUE)
set.seed(1)
task = tgen("simsurv")$generate(50)
learn$train(task)
p = learn$predict(task)
p$score(msr("surv.rmse"))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。