Я пытаюсь подгонять машину повышения градиента (GBM) к страховым претензиям. Наблюдения имеют неодинаковое воздействие, поэтому я пытаюсь использовать смещение, равное журналу экспозиции. Я пробовал два разных способа:Как я могу компенсировать экспозиции в модели gbm в R?
Положить в формулу смещение. Это привело к
nan
для поезда и валидации для каждой итерации.Используйте параметр
offset
в функцииgbm
. Этот параметр указан нижеgbm.more
. В результате появляется сообщение об ошибке, что есть неиспользуемый параметр.
Я не могу предоставить данные моей компании, но я воспроизвел проблему, используя таблицу данных страхования в пакете MASS. См. Код и вывод ниже.
library(MASS)
library(gbm)
data(Insurance)
# Try using offset in the formula.
fm1 = formula(Claims ~ District + Group + Age + offset(log(Holders)))
fitgbm1 = gbm(fm1, distribution = "poisson",
data = Insurance,
n.trees = 10,
shrinkage = 0.1,
verbose = TRUE)
# Try using offset in the gbm statement.
fm2 = formula(Claims ~ District + Group + Age)
offset2 = log(Insurance$Holders)
fitgbm2 = gbm(fm2, distribution = "poisson",
data = Insurance,
n.trees = 10,
shrinkage = 0.1,
offset = offset2,
verbose = TRUE)
Это затем выводит:
> source('D:/Rprojects/auto_tutorial/rcode/example_gbm.R')
Iter TrainDeviance ValidDeviance StepSize Improve
1 -347.8959 nan 0.1000 0.0904
2 -348.2181 nan 0.1000 0.0814
3 -348.3845 nan 0.1000 0.0616
4 -348.5424 nan 0.1000 0.0333
5 -348.6732 nan 0.1000 0.0850
6 -348.7744 nan 0.1000 0.0610
7 -348.8795 nan 0.1000 0.0633
8 -348.9132 nan 0.1000 -0.0109
9 -348.9200 nan 0.1000 -0.0212
10 -349.0271 nan 0.1000 0.0267
Error in gbm(fm2, distribution = "poisson", data = Insurance, n.trees = 10, :
unused argument (offset = offset2)
Мой вопрос, что я делаю неправильно? Кроме того, есть ли другой способ? Я заметил параметр весов в функции gbm
. Должен ли я использовать это?
Добро пожаловать на сайт. Вопросы, касающиеся исключительно программирования/отладки программы, - это [вне темы] (http://stats.stackexchange.com/help/on-topic) для этого сайта и могут быть закрыты. Если у вас есть статистический вопрос, отредактируйте свой пост, чтобы подчеркнуть его. Вы также можете просмотреть список [интернет-статистических ресурсов] (http://meta.stats.stackexchange.com/questions/793/internet-support-for -statistics-software), которые мы поддерживаем для помощи по программному обеспечению –
Почему бы и нет просто поместите 'log (Holders)' с правой стороны и не ограничивайте его коэффициент в любом случае. –
Даже без смещения я получаю nan для столбца ValidDeviance для этого примера, я не знаю, что это за колонна. –