Я хотів би використовувати GLM та Elastic Net для вибору відповідних функцій + побудувати лінійну регресійну модель (тобто як прогнозування, так і розуміння, тому краще було б залишитись із відносно малою кількістю параметрів). Вихід безперервний. Це генів на 50 випадків. Я читав про пакет, але не впевнений на 100% в наступних кроках:glmnet
Виконайте резюме, щоб вибрати лямбда:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1) з урахуванням вхідних даних, ви вибрали б інше значення альфа?
(Q2) чи потрібно ще щось робити, перш ніж будувати модель?Підходить для моделі:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3) нічого кращого, ніж "коваріація"?
(Q4) Якщо лямбда була обрана резюме, для чого потрібен цей крокnlambda=
?
(Q5) краще використовуватиlambda.min
абоlambda.1se
?Отримайте коефіцієнти, щоб побачити, які параметри випали ("."):
predict(model, type="coefficients")
На сторінці довідок є багато
predict
методів (наприклад,predict.fishnet
,predict.glmnet
,predict.lognet
і т.д.). Але будь-який "звичайний" передбачення, як я бачив на прикладі.
(Q6) Чи варто використовуватиpredict
чиpredict.glmnet
чи інше?
Незважаючи на те, що я читав про методи регуляризації, я досить новий в R та в цих статистичних пакетах, тому важко бути впевненим, адаптую чи проблему до коду. Будь-які пропозиції будуть вітатися.
ОНОВЛЕННЯ
На основі "Як раніше зазначалося, об'єкт поїзду класу містить елемент finalModel
, який називається , що є пристосованою моделлю зі значеннями параметрів настройки, вибраними шляхом перекомпонування. Цей об'єкт може використовуватися традиційним способом для генерування прогнозів для нових зразків, використовуючи це функція прогнозування моделі ".
Використання caret
для налаштування як альфа, так і лямбда:
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
Чи fitM
замінює попередній крок 2? Якщо так, то як зараз вказати параметри glmnet ( type.gaussian="naive",lambda=cv$lambda.min/1se
)?
І наступний predict
крок, чи можу я замінити model
його fitM
?
Якщо я це роблю
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
predict(fitM$finalModel, type="coefficients")
це має сенс взагалі чи я неправильно змішую обидва словникові пакети?