Оценка ROC в пакете gbm

У меня проблемы с вычислением оценки ROC (AUC) с использованием пакета gbm. Я работаю с деревьями регрессии с усилением. Я запускаю сценарий:

testing.tc5.lr005 <- gbm.step(data=ModelData, 
gbm.x = 3:4,
gbm.y = 2,
family = "gaussian",
tree.complexity = 5,
learning.rate = 0.005,
bag.fraction = 0.5)

Он должен выдавать «оценку ROC данных обучения» и «оценку ROC перекрестной проверки» вместе с другими параметрами корреляции. Я не получаю оценки ROC. Я позвонил names(testing.tc5.lr005). В нем перечислены cv.roc.matrix, но если я вызываю testing.tc5.lr005$cv.roc.matrix, выдает следующее:

[1] 0 0 0 0 0 0 0 0 0 0

Я попытался вычислить ROC AUC по roc(TestData$TN,predTN) (TestData ~ данные, используемые для прогнозирования, т.е. наблюдаемые значения; predTN ~ прогнозируемые значения). Это приводит к [1]NA. Я понятия не имею, что я делаю не так, хотя остальная часть модели, похоже, работает хорошо с разумным тестированием, корреляцией CV и значениями SE. Любые указатели на то, где я ошибаюсь, или на альтернативу, были бы очень признательны! Спасибо


person Learner    schedule 13.03.2014    source источник
comment
Я подозреваю, что вы используете пакет dismo? Вы получаете какой-нибудь результат?   -  person Calimo    schedule 14.03.2014
comment
Я использую gbm. Я получаю все остальные результаты в порядке (например, отклонения, корреляцию данных обучения, корреляцию CV, CV SE и т. Д.). Это просто ОКР я не понимаю.   -  person Learner    schedule 15.03.2014
comment
В gbm нет функции с именем gbm.step, поэтому единственный результат, который вы, вероятно, можете получить, - это Error: could not find function "gbm.step". Пожалуйста, опубликуйте полученный результат.   -  person Calimo    schedule 15.03.2014
comment
Я запустил: testing.tc5.lr01 <- gbm.step(data=TNTPSumAbundVis1, + gbm.x = 3:4, + gbm.y = 2, + family = "gaussian", + tree.complexity = 5, + learning.rate = 0.01, + bag.fraction = 0.5), и это результат: GBM STEP - версия 2.9, среднее общее отклонение = 0,815, среднее остаточное отклонение = 0,499, оценочное отклонение CV = 0,637; se = 0,093 корреляция обучающих данных = 0,641 cv корреляция = 0,46; se = 0,085 прошедшее время - 0,05 минуты   -  person Learner    schedule 16.03.2014
comment
Прошу прощения за такое форматирование комментария. Для записи я использую этот документ [onlinelibrary.wiley.com/doi/10.1111/j.1365-2656.2008.01390.x/ в качестве справки.   -  person Learner    schedule 16.03.2014


Ответы (2)


Прежде всего, я думаю, что вы используете пакет gbm вместе с пакетом dismo. Как сказал Калимо, gbm.step не существует вне dismo.

Я не могу ответить на ваш вопрос, КАК рассчитать ROC (я не эксперт - у меня был тот же вопрос, и вот как я сюда попал), но я могу вам сказать, что dismo не рассчитывает его. Я взглянул на код в пакете dismo, и оказалось, что они не позволяют вычислять ROC для гауссова семейства.

person TRT08    schedule 24.03.2014
comment
Так должно быть, семья Гаусса. Потому что в статье, за которой я следую, был тип распределения Бернулли. Во-вторых, я не знал, что gbm построен вместе с dismo, поскольку я никогда не использовал dismo как таковой. Я работаю над этим и отправлю ответ, если смогу с этим разобраться. - person Learner; 26.03.2014

Я нашел ответ, навсегда погрузившись в код и проследив за темами:

Данные обучения AUC = self.roc = $ training.stats $ дискриминация = $ self.statistics $ дискриминация

Cv Оценка AUC = cv.roc = cv.stats $ дискриминация.mean = $ cv.statistics $ дискриминация.mean

Se = cv.roc.se = cv.stats $ дискриминации.se = $ cv.statistics $ дискриминации.se

Использование: имя объекта модели + последний бит кода, например.

myobject$self.statistics$discrimination

Изменить: gbm.step уже вычисляет нужные вам значения и показывает их, но они похоронены в списках объектов модели.

person dez93_2000    schedule 18.10.2015