Мне интересно, как правильно подойти к обучению и тестированию модели LASSO с использованием glmnet в R?
- В частности, мне интересно, как это сделать, если отсутствие внешнего набора тестовых данных требует использования перекрестной проверки (или другого аналогичного подхода) для тестирования моей модели LASSO.
Позвольте мне разбить мой сценарий:
У меня есть только один набор данных для информирования и обучения моей модели glmnet. В результате мне придется использовать перекрестную проверку для разделения моих данных, чтобы также создать способ тестирования моей модели.
Я уже использую cv.glmnet
, который в соответствии с деталями пакета :
Выполняет перекрестную проверку в k-кратном порядке для glmnet, создает график и возвращает значение для лямбды.
Проводится ли перекрестная проверка
cv.glmnet
просто для того, чтобы выбрать лучшую лямбду, или она также служит более общей процедурой перекрестной проверки?- Другими словами, мне все еще нужно сделать еще один шаг перекрестной проверки, чтобы "проверить" мою модель?
Я работаю с предположением, что «да, я делаю».
В таком случае, как мне подойти к перекрестной проверке моей cv.glmnet
модели?
Нужно ли делать это вручную, или эта
caret
функция полезна для моделей glmnet?Использую ли я две концентрические "петли" перекрестной проверки? ... Использую ли я "внутреннюю петлю" CV через,
cv.glmnet
чтобы определить наилучшее значение лямбда в каждой из k сгибов "внешней петли" обработки перекрестной проверки k-кратных ?Если я делаю перекрестную проверку моей уже перекрестной проверки
cv.glmnet
модели, как мне отделить «лучшую» модель (от «лучшего» значения лямбда) от каждойcv.glmnet
модели в каждом сгибе моего «внешнего цикла» перекрестной проверки?- Примечание. Я определяю «лучшую» модель как модель, связанную с лямбдой, которая производит MSE в пределах 1 SE от минимума ... это
$lambda.1se
вcv.glmnet
модели.
- Примечание. Я определяю «лучшую» модель как модель, связанную с лямбдой, которая производит MSE в пределах 1 SE от минимума ... это
Контекст:
Я пытаюсь предсказать возраст дерева («возраст») на основе диаметра дерева («D»), D ^ 2 и вида («фактор (SPEC)»). [полученное уравнение: Age ~ D + factor(SPEC) + D^2
]. У меня есть ~ 50K строк данных, но данные являются продольными (отслеживает особи во времени) и состоят из ~ 65 видов.
источник
Ответы:
Проводится ли перекрестная проверка в cv.glmnet просто для выбора наилучшей лямбды или она также служит более общей процедурой перекрестной проверки?
Это делает почти все необходимое в перекрестной проверке. Например, он
lambda
подбирает возможные значения данных, выбирает лучшую модель и, наконец, обучает модель соответствующим параметрам.Например, в возвращаемом объекте ::
cvm
средняя перекрестная ошибка.cvsd
расчетное стандартное отклонение.Как и другие возвращаемые значения, они рассчитываются на тестовом наборе. Наконец,
glmnet.fit
дает модель, обученную по всем данным (обучение + тест) с лучшими параметрами.Нужно ли делать это вручную или, возможно, функция каретки полезна для моделей glmnet?
Вам не нужно делать это вручную. «Caret» был бы очень полезен и является одним из моих любимых пакетов, потому что он работает для всех других моделей с таким же синтаксисом. Я сам часто использую,
caret
а неcv.glmnet
. Тем не менее, в вашем сценарии это по сути то же самое.Использую ли я две концентрические «петли» перекрестной проверки? ... Использую ли я «внутреннюю петлю» CV через cv.glmnet, чтобы определить наилучшее значение лямбды в каждой из k складок «внешней петли» из k-fold обработка перекрестной проверки?
Вы можете сделать это, и эта концепция очень похожа на идею Вложенной перекрестной проверки Вложенная перекрестная проверка для выбора модели .
Если я делаю перекрестную проверку моей уже перекрестной проверки модели cv.glmnet, как мне отделить «лучшую» модель (от «лучшего» лямбда-значения) от каждой модели cv.glmnet в каждом сгибе внешнего цикла? «перекрестной проверки?
Просто запустите цикл, в котором вы генерируете обучающие данные и тестируете данные, запускаемые
cv.glmnet
на обучающих данных, и используете модельglmnet.fit
для прогнозирования по тестовым данным.источник
cv.glmnet
функции сR
открытым исходным кодом. Просто введитеcv.glmnet
в консоли.