2015-04-05 10 views
9

Cevabım kategorik bir değişkendir (bazı alfabeler), bu yüzden modeli yaparken dağılım = 'çok eşli' kullandım ve şimdi olasılıkları matrisler yerine yanıtı tahmin etmek ve bu alfabeler açısından çıktı elde etmek istiyorum. Bununla birlikte, predict(model, newdata, type='response')'da type='link' sonucuyla aynı olasılıkları verir.gbm multinomial dist içinde, kategorik çıktı almak için tahmin nasıl kullanılır?

Kategorik çıktı elde etmenin bir yolu var mı? predict.gbm belgelerinde

BST = gbm(V1~.,data=training,distribution='multinomial',n.trees=2000,interaction.depth=4,cv.folds=5,shrinkage=0.005) 

predBST = predict(BST,newdata=test,type='response') 
+0

nasıl yüksek olasılığa sahip tepkisini çekme hakkında? –

cevap

21

, bu söz edilir:

tipi = "yanıt" sonra GBM geri aynı ölçekte sonuç olarak dönüştürür edin. Şu andaki tek etki, bernoulli için olasılıklarını ve poisson için beklenen sayıları döndürmektir. için diğer dağıtımlar "yanıt" ve "link" aynı geri döner. Dominic anlaşılacağı gibi yapmanız gerekenler

, öngörüden vektör çıkışına apply(.., 1, which.max) yaparak, ortaya çıkan predBST matristen olasılığı en yüksek tepkiyi seçmek. İşte iris veri kümesi ile bir kod örneği:

library(gbm) 

data(iris) 

df <- iris[,-c(1)] # remove index 

df <- df[sample(nrow(df)),] # shuffle 

df.train <- df[1:100,] 
df.test <- df[101:150,] 

BST = gbm(Species~.,data=df.train, 
     distribution='multinomial', 
     n.trees=200, 
     interaction.depth=4, 
     #cv.folds=5, 
     shrinkage=0.005) 

predBST = predict(BST,n.trees=200, newdata=df.test,type='response') 

p.predBST <- apply(predBST, 1, which.max) 

> predBST[1:6,,] 
    setosa versicolor virginica 
[1,] 0.89010862 0.05501921 0.05487217 
[2,] 0.09370400 0.45616148 0.45013452 
[3,] 0.05476228 0.05968445 0.88555327 
[4,] 0.05452803 0.06006513 0.88540684 
[5,] 0.05393377 0.06735331 0.87871292 
[6,] 0.05416855 0.06548646 0.88034499 

> head(p.predBST) 
[1] 1 2 3 3 3 3 
+0

Bu gerçekten yararlı, çok teşekkürler! – shavendy

+0

Yanıtı kabul etme ve/veya yükseltme hakkında ne düşünüyorsunuz? :-) – desertnaut

+0

sry saygınlık çok düşük, zaten teşekkürler :) – shavendy

İlgili konular