如何为R中的每个预测计算回归的置信度得分(使用随机森林/ XGBoost)?


11

使用随机森林或极端梯度增强(XGBoost)之类的算法时,是否可以获取每个预测值的置信度得分(也可以称为置信度值或似然度)?假设此置信度得分介于0到1之间,表示我对特定预测的信心如何

根据我在互联网上发现的有关信心的信息,通常用间隔来衡量。这是一个使用库中confpred函数计算的置信区间的示例lava

library(lava)
set.seed(123)
n     <- 200
x     <- seq(0,6,length.out=n)
delta <- 3
ss    <- exp(-1+1.5*cos((x-delta)))
ee    <- rnorm(n,sd=ss)
y     <- (x-delta)+3*cos(x+4.5-delta)+ee
d     <- data.frame(y=y,x=x)
newd  <- data.frame(x=seq(0,6,length.out=50))
cc    <- confpred(lm(y~poly(x,3),d),data=d,newdata=newd)
if (interactive()) { ##'
  plot(y~x,pch=16,col=lava::Col("black"), ylim=c(-10,15),xlab="X",ylab="Y")
  with(cc, lava::confband(newd$x, lwr, upr, fit,  lwd=3, polygon=T, 
                          col=Col("blue"), border=F))
}

代码输出仅给出置信区间:

该图显示了点,预测和置信区间

还有一个库conformal,但我也将其用于回归的置信区间:“共形允许在共形预测框架中计算预测误差:(i)用于分类的p。值,以及(ii)回归的置信区间。 ”

有没有办法:

  1. 要获得任何回归问题中每个预测的置信度值?

  2. 如果没有办法,那么将每个观察结果用作置信度分数是否有意义:

    置信区间上下边界之间的距离(如上述示例输出中所示)。因此,在这种情况下,置信区间越宽,不确定性就越大(但这没有考虑区间中的实际值)


1
查看randomForestCIStephan Wager 的包装,以及Susan Athey的相关论文。请注意,它仅提供配置项”,但您可以通过计算残差方差从中得出一个预测间隔。
–generic_user

Answers:


4

您所谓的置信度得分可以从各个预测的不确定性中获得(例如,取其反函数)。

套袋总是可以对这种不确定性进行量化,并且在随机森林中相对简单明了-但这些估计数是有偏差的。Wager等。(2014年)描述了两种程序来更有效地解决这些不确定性,并减少偏差。这是基于“自举后折刀”和无穷小“折刀”的偏差校正版本。您可以在R软件包ranger和中找到实现grf

最近,使用条件推理树构建的随机森林对此进行了改进。基于仿真研究(Brokamp等人,2018),当使用条件推理树构建随机森林时,无穷小折刀估计器似乎可以更准确地估计预测中的误差。这是在包中实现的RFinfer


Wager,S.,Hastie,T.,&Efron,B.(2014年)。随机森林的置信区间:折刀和无限小折刀。机器学习研究杂志,15(1),1625-1651。

Brokamp,C.,Rao,MB,Ryan,P.,&Jandarov,R.(2017年)。随机森林中使用无限小折刀估计渐近方差的重采样和递归分区方法的比较。Stat,6(1),360-372。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.