我目前正在尝试使用 gbm.fit 模型在 R 中拟合 adaBoost 模型。我已经尽我所能,但最后我的模型不断给我 [0,1] 之外的预测值。我知道 type = "response"仅适用于伯努利,但我一直在获得 0,1 之外的值。有什么想法吗?谢谢!
GBMODEL <- gbm.fit(
x=training.set,
y=training.responses,
distribution="adaboost",
n.trees=5000,
interaction.depth=1,
shrinkage=0.005,
train.fraction=1,
)
predictionvalues = predict(GBMODEL,
newdata=test.predictors,
n.trees=5000,
type="response")
最佳答案
通过 gbm 包选择“adaboost”作为损失函数来获得 [0,1] 之外的 y 范围是正确的。
训练后,adaboost 根据输出的符号预测类别。
例如,对于二元类问题,y{-1,1},类标签将被签名为输出 y 的符号。所以如果你得到 y=0.9 或 y=1.9 会给你相同的结果——观察属于 y=1 类。然而,y=1.9 只是表明一个比 y=0.9 更有把握的结论。 (如果你想知道为什么,我建议你阅读 adaboost 基于边距的解释,你会发现与 SVM 的结果非常相似)。
希望这可以帮到你。
关于r - adaBoost 中 R 中的 GBM ~ predict() 值位于 [0,1] 之外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10615279/