2015-02-27 2 views
1

быстрый вопрос относительно прогнозирование.R прогноз в течение интервала

Значение Я пытаюсь предсказать, либо 0 или 1 (устанавливается как числовые, а не как фактор), так что, когда я бегу мой случайный лес:

fit <- randomForest(PredictValue ~ <variables>, data=trainData, ntree=50) 

и предсказать:

pred<-predict(fit, testData) 

все мои прогнозы между 0 и 1 - чего я ожидал, и - я себе - можно интерпретировать как вероятность того, чтобы быть 1.

Теперь, если я иду через тот же процесс, используя GBM ALGor ithm:

fitgbm <- gbm(PredictValue~ <variables>, data=trainData, distribution = "bernoulli", n.trees = 500, bag.fraction = 0.75, cv.folds = 5, interaction.depth = 3) 
predgbm <- predict(fitgbm, testData) 

эти значения от -0,5 до 0,5

Я также попытался GLM и диапазон был худшим, от около -3 до 3.

Итак, мой вопрос: не является ли это можно задать алгоритмы для прогнозирования между 0 и 1?

Благодаря

ответ

1

Вы должны указать type='response' для того чтобы это произошло:

Проверьте этот пример:

y <- rep(c(0,1),c(100,100)) 
x <- runif(200) 
df <- data.frame(y,x) 


fitgbm <- gbm(y ~ x, data=df, 
       distribution = "bernoulli", n.trees = 100) 

predgbm <- predict(fitgbm, df, n.trees=100, type='response') 

Слишком упрощенно, но смотреть на резюме predgbm:

> summary(predgbm) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
0.4936 0.4943 0.5013 0.5000 0.5052 0.5073 

И как документация упоминает, что это вероятность того, что y будет 1:

Если type = "response", то gbm преобразуется обратно в тот же масштаб, что и результат. В настоящее время единственным следствием этого является возвращение вероятностей для бернулли и ожидаемых значений для пуассонов.

+0

Это замечательно, спасибо большое, но у меня есть другой вопрос, если вы не возражаете. Если я поместил лес на ваш пример: fitforest <- randomForest (y ~ x, data = df, ntree = 100); predforest <- pred (fitforest, df) и сравнить min и max обоих: min (predgbm): 0.4892006; max (predgbm): 0,5070799 И мин (предварительный лес): 0 max (predForest): 1 Почему диапазон gbm настолько меньше, чем лес? еще раз спасибо – Diego

+1

Sure np! Это потому, что они принципиально разные алгоритмы. Случайный лес принимает участие в голосовании среди деревьев для определения класса наблюдения, тогда как gbm пытается предсказать класс с первым деревом, а затем другие деревья предсказывают ошибки, сделанные первым в соответствии с функцией потерь (во многих случаях просто остатки). Затем он классифицируется в соответствии с знаком добавления деревьев. Надеюсь, это немного яснее. – LyzandeR

+1

Я думаю, что это также сделает его более ясным. Это довольно простой пример, и будут случаи, когда все деревья будут прогнозировать 1 или 0 для конкретного случая, и поэтому вы получите вероятность 0 или 1 в случайном лесу. В случае gbm, кроме первого дерева (которое, как я думаю, прогнозирует с -1 или 1), все остальное будет предсказывать ошибки и, следовательно, числовые числа, которые будут добавлены на 1 с или -1 с, а знак общего итога в конце будет определять класс. Нет голоса большинства на gbm. – LyzandeR