Open junmeiW opened 5 years ago
XGBoost做生存预测,是基于Cox比例风险模型,所以建模的对象是log hazard ratio。但是,XGBoost库对预测结果作了一下exp转换,得到的就是hazard ratio,可以参考XGBoost关于survival这一块的源代码!
PS:一个经验,观察预测结果,如果全部是正数(exp转换了),一般模型的预测结果就是hazard ratio scale,否则就是log hazard ratio scale了!
非常感谢您的回复。能否提供下xgboost _关于survival实现的源代码链接呢,找了好久还没找到[\抱拳]感谢!!
1. 我看您在xgb_survival里面写:
h(t|x) = h0(t)*exp(f(x)) ,
且还定义有 - t时刻的风险函数 `h(t,x) = h0(t)*exp(β1x1+β2x2+β3x3...+βnxn)`
即f(x) = β1x1+β2x2+β3x3...+βnxn, 所以xgboost模型的预测值f(x) (hazard ratio scale)
是(β1x1+β2x2+β3x3...+βnxn)这个吗?
2. 另外你在xgb_survival中写到:
pred.test <- log(predict(model, dtest))
即此时的pred.train=log(f(x)) 是这个意思吗?
那么根据survival function计算公式:
surf.i <- exp(-exp(pred.test[1])*basehaz.cum)
在这里 括号里面-exp(pred.test[1])的结果 按照上面应该是-f(x)吧?
我想明白predict(model, dtest) 是exp(f(x))呢还是f(x)?
请您指教!
您好,在这里看到你写的关于xgboost做的survival analysis代码,正在学习,感觉很受启发,只是想问下训练的xgb model predict的结果(我看R xgboost package结果应该是 linear predictor)不明白为什么就是 f(x)(hazard ratio)? 这个是在哪里有说明呢?请您指教!!!