关于预测的快速提问。
我想要预测的值是0或1(它被设置为数字,而不是因子)所以当我运行我的随机森林时:
fit <- randomForest(PredictValue ~ <variables>, data=trainData, ntree=50)
并预测:
pred<-predict(fit, testData)
我所有的预测都在0到1之间 - 这是我所期待的 - 我想象 - 可以被解释为成为1的概率。
现在,如果我使用gbm算法完成相同的过程:
fitgbm <- gbm(PredictValue~ <variables>, data=trainData, distribution = "bernoulli", n.trees = 500, bag.fraction = 0.75, cv.folds = 5, interaction.depth = 3)
predgbm <- predict(fitgbm, testData)
值为-0.5到0.5
我也试过glm,范围最差,从-3到3左右。
所以,我的问题是:是否可以将算法设置为在0和1之间进行预测?
由于
答案 0 :(得分:1)
您需要指定type='response'
才能实现此目的:
检查此示例:
y <- rep(c(0,1),c(100,100))
x <- runif(200)
df <- data.frame(y,x)
fitgbm <- gbm(y ~ x, data=df,
distribution = "bernoulli", n.trees = 100)
predgbm <- predict(fitgbm, df, n.trees=100, type='response')
过于简单,但请查看predgbm
的摘要:
> summary(predgbm)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.4936 0.4943 0.5013 0.5000 0.5052 0.5073
正如文档中提到的那样,y是1的概率:
如果type =“response”,那么gbm将转换回与结果相同的比例。目前唯一的影响是返回bernoulli的概率和泊松的预期计数。