27

这是关于回归正则化的初学者问题。大多数关于 Elastic Net 和 Lasso Regression 的在线信息都复制了 Wikipedia 中的信息或 Zou 和 Hastie 的 2005 年原始论文(Regularization and variable selection via the elastic net)。

简单理论的资源?对于那些没有统计倾向的人来说,是否有一个简单易懂的解释来说明它的作用、何时以及为什么需要再瓜化,以及如何使用它?我知道如果您能理解原始论文是理想的来源,但是否有更简单的问题和解决方案?

如何在sklearn中使用?有没有一步一步的例子说明为什么选择弹性网(在山脊、套索或简单的 OLS 上)以及如何计算参数?sklearn 上的许多只是将 alpha 和 rho 参数直接包含在预测模型中,例如

from sklearn.linear_model import ElasticNet
alpha = 0.1
enet = ElasticNet(alpha=alpha, rho=0.7)
y_pred_enet = enet.fit(X_train, y_train).predict(X_test)

但是,他们没有解释这些是如何计算的。你如何计算套索或网络的参数?

4

3 回答 3

27

缺乏文档。我创建了一个新问题来改进它。正如 Andreas 所说,最好的资源可能是以 PDF 格式免费在线获得的ESL II 。

要自动调整 alpha 的值,确实可以使用ElasticNetCV,这将节省冗余计算,就像在类中使用GridSearchCVElasticNet进行调整 一样alpha。作为补充,您可以使用正则GridSearchCV来找到 的最佳值rho。有关详细信息,请参阅ElasticNetCV的文档字符串。

至于 Lasso 与 ElasticNet,ElasticNet 将倾向于选择更多变量,从而导致更大的模型(训练成本也更高),但总体上也更准确。特别是 Lasso 对特征之间的相关性非常敏感,可能会从 2 个非常相关的信息特征中随机选择一个,而 ElasticNet 更有可能同时选择这两个特征,这将导致模型更稳定(就泛化能力而言,新样本)。

于 2012-09-06T07:13:37.857 回答
4

我会把你指向这篇博文:http ://www.datarobot.com/blog/regularized-linear-regression-with-scikit-learn/ 。

于 2014-04-03T20:59:59.187 回答
0

我将尝试帮助您解决“什么是 ElasticNet?”这个问题。

Elastic-Net 是一种正则化回归方法,它线性地结合了 Lasso 和 Ridge 回归方法的惩罚(即)L1 和 L2。当有多个相关特征时,它很有用。Lass 和 Elastic-Net 之间的区别在于 Lasso 可能会随机选择其中一个特征,而 elastic-net 可能会同时选择这两个特征。

下面列出的两个链接对 ElasticNet 有很好的解释。

  1. ElasticNet- TutorialsPoint
  2. Lasso、Ridge 和弹性网络正则化
于 2020-08-26T09:30:11.027 回答