Я хотел бы использовать GLM и Elastic Net, чтобы выбрать эти релевантные функции + построить модель линейной регрессии (т. Е. Как прогнозирование, так и понимание, поэтому было бы лучше оставить с относительно небольшим количеством параметров). Выход непрерывный. Это генов на случаев. Я читал об этом пакете, но я не уверен на 100%, что делать:glmnet
Выполните CV, чтобы выбрать лямбду:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1), учитывая входные данные, вы бы выбрали другое альфа-значение?
(Q2) мне нужно сделать что-то еще, прежде чем строить модель?Подходит модель:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3) что-нибудь лучше, чем "ковариация"?
(Q4) Если лямбда была выбрана CV, зачем нужен этот шагnlambda=
?
(Q5) лучше использоватьlambda.min
илиlambda.1se
?Получите коэффициенты, чтобы увидеть, какие параметры выпали («.»):
predict(model, type="coefficients")
На странице справок есть много
predict
методов (например,predict.fishnet
,predict.glmnet
,predict.lognet
и т.д.). Но любой «простой» прогноз, как я видел на примере.
(Q6) я должен использоватьpredict
илиpredict.glmnet
или другое?
Несмотря на то, что я читал о методах регуляризации, я довольно новичок в R и в этих статистических пакетах, поэтому трудно быть уверенным, адаптирую ли я свою проблему к коду. Любые предложения будут приветствоваться.
ОБНОВЛЕНИЕ,
основанное на «Как уже отмечалось, объект класса train содержит элемент с именем 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")
это имеет смысл вообще, или я неправильно смешиваю оба словаря пакета?
caret
это пакет-обертка R, который оборачивает функциональные интерфейсы из более чем 100 ML-пакетов для большей согласованности и добавляет CV, gridsearch, изменяет безумные параметры по умолчанию и т. Д. Он не лишен своих причуд, но довольно хорош и широко используется.cva.glmnet(..)
вместо простоcv.glmnet(...)
и настраивать альфа и лямбда одновременно. Затем вы можете запустить,minlossplot(cva.fit)
чтобы увидеть, какая альфа дает лучший результат. Это обе части glmnetUtils