为什么在这个例子中,alphas = RidgeCV中的alphas?

问题描述 投票:1回答:1

我需要实现Lasso和Ridge回归并通过交叉验证来计算超参数。我找到了代码,但我无法理解它。

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 = RidgeCV中的alphas?如果我写alphas = None,则会发生错误。为什么没有必要为ridgecv写cv?

python pandas machine-learning scikit-learn regression
1个回答
0
投票

我认为答案与在不同模型上设定正规化强度的方式有关。

在RidgeCV中,您需要明确声明alphas,因为参数调整不是基于交叉验证计算的错误。

然而,在LassoCV中,他们有一种从CV误差中自动计算alphas的方法。但是,如果要明确设置它们,可以通过更改可选参数来实现:n_alphaalphas

有关详细信息,请参阅:https://web.stanford.edu/~hastie/Papers/ESLII.pdf第7章第4节。

© www.soinside.com 2019 - 2024. All rights reserved.