Cv.glmnet перезаписывает данные, используя полную лямбда-последовательность?

cv.glmnet был использован в большинстве научных работ и компаний. При создании аналогичной функции, какcv.glmnet заglmnet.cr (аналогичный пакет, который реализует лассо для порядковой регрессии коэффициента продолжения) Я сталкивался с этой проблемой вcv.glmnet.

`cv.glmnet` first fits the model:



glmnet.object = glmnet(x, y, weights = weights, offset = offset, 
                     lambda = lambda, ...)

Послеglmnet Объект создается с полными данными, следующий шаг выглядит следующим образом:lambda из полной комплектации извлекается модель

lambda = glmnet.object$lambda

Теперь они удостоверяются, что количество сгибов больше 3

if (nfolds < 3) 
stop("nfolds must be bigger than 3; nfolds=10 recommended")

Список создается для хранения результатов перекрестной проверки

outlist = as.list(seq(nfolds))

A for loop работает, чтобы соответствовать различным частям данных в соответствии с теорией перекрестной проверки

  for (i in seq(nfolds)) {
    which = foldid == i
    if (is.matrix(y)) 
      y_sub = y[!which, ]
    else y_sub = y[!which]
    if (is.offset) 
      offset_sub = as.matrix(offset)[!which, ]
    else offset_sub = NULL
#using the lambdas for the complete data 
    outlist[[i]] = glmnet(x[!which, , drop = FALSE], 
                          y_sub, lambda = lambda, offset = offset_sub, 
                          weights = weights[!which], ...)
  }
}

Итак, что происходит. После подгонки данных к полным данным выполняется перекрестная проверка с лямбдами из полных данных. Может кто-нибудь сказать мне, как это не может быть чрезмерным данных? Мы в перекрестной проверке хотим, чтобы модель не имела информации об оставленной части данных. Ноcv.glmnet читы об этом!

Ответы на вопрос(2)

Ваш ответ на вопрос