4

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

2 回答 2

2

通过 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 非常相似的结果)。

希望这可以帮到你。

于 2013-03-27T01:26:14.693 回答
-1

这在数学上可能并不完全准确,但我只是做了 pnorm(预测值),你得到的值是从 0 到 1,因为 adaboost 预测值似乎是在 Normal(0,1) 上缩放的。

于 2012-09-23T21:23:12.630 回答