我目前正在尝试使用 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/

10-10 14:08