2012-05-16 85 views
4

外目前我正在試圖以適合使用gbm.fit模型中的R的Adaboost算法模型。我嘗試了所有可能的方式,但最終我的模型一直給我預測值在[0,1]之外。我明白type =「response」僅適用於bernoulli,但我一直在0,1之外獲得值。有什麼想法嗎?謝謝!GBM中的R爲Adaboost算法〜地預測()值位於的[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") 
+0

什麼是y的範圍是多少?向我們展示'summary(training.responses)' – smci

回答

2

它是正確的,以獲得Y範圍外[0,1]通過GBM包選擇「AdaBoost的」作爲損失函數。 訓練結束後,通過AdaBoost算法輸出的符號預測類別。

例如,對於二元類問題y {-1,1},類標籤將被標記爲輸出y的符號。所以如果你有y = 0.9或y = 1.9會給你同樣的結果 - 觀察屬於y = 1類。然而,y = 1.9只是表示比y = 0.9更確信的結論。 (如果你想知道爲什麼,我建議你讀的adaboost的基於保證金的解釋,你會發現與SVM非常相似的結果)。

希望這可以幫助你。

-1

這可能不完全準確的數學,但我只是做了pnorm(預測值),你會得到從0到1的值,因爲adaboost的預測值出現在正常的情況下縮放(0,1) 。

+0

我不認爲這是正確的...讓我試着確認一下。 –