0
$\begingroup$

I built a gbm model (using caret package) in order to predict the probability of someone buy or not a car. However as this kind of model act as a black box my issue is to replicate the "profile" of the group who has higher probability to buy. There is any way to discover the values of the predictors that generate high prob?

$\endgroup$
  • $\begingroup$ You may be using sledgehammer where a normal hammer may do better for your problem domain. Is extreme predictive accuracy actually important for your application, or just good enough accuracy? You may want to consider using a good decision tree algorithm alone, as it is easy to derive the kind of information you are after from a tree. $\endgroup$ – Matthew Drury Jul 13 '16 at 16:27
  • $\begingroup$ Actually, based on my data this is a kind of a "hard" problem to solve with the "regulars" algorithms, this kind of algortihms(trees,logreg...) didn't give me a "good" accuracy and because of this I perfomed the gbm, and I can't figure out a simple way to discover this profiles $\endgroup$ – Michael Elma Jul 13 '16 at 16:34
  • $\begingroup$ That's kind of the fundamental trade off. If you want to get better accuracy, you have to use a model that can assume a more complex shape so it can fit the data. But by assuming a more complex shape, it becomes drastically more difficult to meaningfully derive simple information from it. Also, if you need a complex algorithm to get good predictive power, that goes some way to saying that there may be no simple profile that is meaningful at all. $\endgroup$ – Matthew Drury Jul 13 '16 at 16:35
1
$\begingroup$

I'd suggest starting with "partial dependence" plots which essentially show the effect of each feature (or set of features) with all other effects averaged out. A gbm can capture complex multivariate feature interactions so this won't tell the whole story but it is a good place to start.

Assuming you used the gbm package via carret the gbm.plot function can be used to make such plots.

$\endgroup$
  • $\begingroup$ I thought about it, however I don't know how to acces this plot on the caret object (gbm_fit) $\endgroup$ – Michael Elma Jul 13 '16 at 20:06
  • $\begingroup$ I found how to access the gbm object: plot(GBM_FIT_FINA$finalModel, i.var = 1) $\endgroup$ – Michael Elma Jul 13 '16 at 21:27
0
$\begingroup$

Assuming you're using R, the function is relative.influence(..). But you don't need it because summary(mod) would give you the same thing.

$\endgroup$
  • $\begingroup$ It is unclear to me how this answers the poster's question. $\endgroup$ – Matthew Drury Jul 13 '16 at 23:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.