Почему alphas = alphas в RidgeCV в этом примере? - PullRequest
1 голос
/ 15 марта 2019

Мне нужно реализовать регрессию Лассо и Риджа и вычислить гиперпараметры с помощью перекрестной проверки.Я нашел код, который делает это, но я не могу понять это.

lassocv = LassoCV(alphas=None, cv=15, max_iter=100000, normalize=True)
lassocv.fit(X_train, y_train)
lasso = Lasso(alpha=lassocv.alpha_, normalize=True)
lasso.fit(X_train, y_train)
rmse = np.sqrt(mean_squared_error(y_val, lasso.predict(X_val)))

ridgecv = RidgeCV(alphas=alphas, normalize=True)
ridgecv.fit(X_train, y_train)
ridge = Ridge(alpha=ridgecv.alpha_, normalize=True)
ridge.fit(X_train, y_train)
rmse = np.sqrt(mean_squared_error(y_val, ridge.predict(X_val)))

Итак, почему alphas = alphas в RidgeCV?Если я пишу alphas = None, возникает ошибка.Почему нет необходимости писать cv для ridgecv?

1 Ответ

0 голосов
/ 17 марта 2019

Я думаю, что ответ связан с тем, как сила регуляризации была установлена ​​на разных моделях.

В RidgeCV вам необходимо явно объявить alpha s, потому что настройка параметров не выполняется на основе ошибки, рассчитанной из перекрестной проверки.

Однако в LassoCV есть способ автоматически вычислять alpha s из ошибки CV. Однако, если вы хотите установить их явно, вы можете сделать это, изменив необязательные параметры: n_alpha и alphas

См .: https://web.stanford.edu/~hastie/Papers/ESLII.pdf Глава 7 раздел 4 для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...