关于预测的快速问题。
我试图预测的值要么是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之间的预测?
谢谢
发布于 2015-02-27 12:25:04
要做到这一点,您需要指定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=“响应”,那么gbm将转换回与结果相同的比例。目前唯一的效果,这将是返回伯努利的概率和预期数的泊松。
https://stackoverflow.com/questions/28764742
复制相似问题