Я использую lme4
для создания совместного фильтра и сталкиваюсь с проблемами конвергенции. Пытаюсь решить через следующие ресурсы и получаю новую ошибку:
Ошибка в ans.ret[meth, ] ‹- c(ans$par, ans$value, ans$fevals, ans$gevals, :
количество заменяемых элементов не кратно длине замены
Это после того, как модель шла к конвергенции в течение ~ 48 часов.
- https://rstudio-pubs-static.s3.amazonaws.com/33653_57fc7b8e5d484c909b615d8633c01d51.html
https://stats.stackexchange.com/questions/242109/model-failed-to-converge-warning-in-lmer
примечание: optimx nlmimb кажется лучшим, чем L-BFGS-B
У меня есть модель, которая структурирована следующим образом:
library(lme4); library(optimx)
library(stringi)
library(data.table)
set.seed(1423L)
# highly imbalanced outcome variable
y <- sample.int(2L, size= 910000, replace=T, prob= c(0.98, 0.02)) - 1L
# product biases
prod <- sample(letters, size= 910000, replace=T)
# user biases
my_grps <- stringi::stri_rand_strings(n= 35000, length= 10)
grps <- rep(my_grps, each= 26)
x1 <- sample.int(2L, size= 910000, replace=T, prob= c(0.9, 0.1)) - 1L
x2 <- sample.int(2L, size= 910000, replace=T, prob= c(0.9, 0.1)) - 1L
x3 <- sample.int(2L, size= 910000, replace=T, prob= c(0.9, 0.1)) - 1L
x4 <- sample(LETTERS[1:5], size= 91000, replace=T)
dt <- data.table(y= y,
prod= prod, grps= grps,
x1= x1, x2= x2, x3= x3, x4= x4)
lmer1 <- glmer(y ~ -1 + prod + x1 + x2 + x3 + x4 + (1|grps),
data= dt, family= binomial(link= "logit"),
control = glmerControl(optimizer ='optimx', optCtrl=list(method='nlminb')))
Я не гарантировал, что приведенные выше данные воспроизводят ошибку; но это настройка модели. Я вообще не понимаю сообщение об ошибке. Любая помощь будет оценена
Сообщается как lmer
проблема № 425
ПРИМЕЧАНИЕ. в моем истинном сценарии использования у меня около 15,5 млн наблюдений и 30–50 продуктов, каждый из которых имеет разную среднюю скорость отклика (y
).
Я также переключился с подхода kNN (типичный совместный фильтр) на HLM, потому что R ужасно оптимизирован для kNN в масштабе — следует использовать что-то вроде раздражает, который мне еще предстоит опробовать.
sample.int
включают аргументprobs
, но аргумент в базовой версииsample.int
равенprob
(т.е. нетs
) - person Douglas Bates   schedule 23.06.2017MixedModels
для Юлии не вызывает проблем. - person Douglas Bates   schedule 23.06.2017ans.ret
вообще не появляется в нашей кодовой базе, насколько я могу судить... - person Ben Bolker   schedule 26.06.2017optimx
библиотеке. Но в конечном итоге мне, вероятно, придется переключиться либо на Джулию (ниже), либо на другой метод; в моих реальных условиях я не могу легко ждать 48-72+ часов, пока модель (может быть / может быть) не сойдется .... Мне сказали, что у нас есть внутренний инструмент для моделей типа CF. Радости хороших команд инфраструктуры данных, где вы работаете :) - person Alex W   schedule 26.06.2017optimx:::optimx.run
- person Ben Bolker   schedule 26.06.2017