Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GBM multinomial distribution, how to use predict() to get predicted class?

I am using the multinomial distribution from the gbm package in R. When I use the predict function, I get a series of values:

5.086328 -4.738346 -8.492738 -5.980720 -4.351102 -4.738044 -3.220387 -4.732654

but I want to get the probability of each class occurring. How do I recover the probabilities? Thank You.

like image 640
Jim Johnson Avatar asked Aug 15 '13 16:08

Jim Johnson


2 Answers

predict.gbm(..., type='response') is not implemented for multinomial, or indeed any distribution other than bernoulli or poisson.

So you have to find the most likely class (apply(.., 1, which.max) on the vector output from prediction), as desertnaut wrote:

preds = predict(your_model, n.trees, newdata=...,type='response')

pred_class <- apply(preds, 1, which.max)

Just write a wrapper which accepts type='response' and returns this when it's a multinomial model.

like image 152
smci Avatar answered Nov 04 '22 14:11

smci


Take a look at ?predict.gbm, you'll see that there is a "type" parameter to the function. Try out predict(<gbm object>, <new data>, type="response").

like image 1
David Avatar answered Nov 04 '22 14:11

David