如何使用弹性网?

时间:2012-09-05 13:59:33

标签: python statistics machine-learning regression scikit-learn

这是关于回归正则化的初学者问题。关于弹性网和套索回归的大多数信息在线复制来自维基百科的信息或Zou和Hastie的原始2005年论文(通过弹性网进行正则化和变量选择)。

简单理论的资源? 是否有一个简单易懂的解释,关于它的作用,何时以及为什么需要进行调整,以及如何使用它 - 对于那些谁没有统计学倾向?我理解原始论文是理想的来源,如果你能理解它,但是在某个地方更简单的问题和解决方案吗?

如何在sklearn中使用? 是否有一步一步的示例显示为什么选择弹性网(过岭,套索,或只是简单的OLS)以及如何参数计算?许多examples on sklearn只是将alpha和rho参数直接包含在预测模型中,用于example

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)

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

3 个答案:

答案 0 :(得分:24)

缺乏文档。我创建了一个新的issue来改进它。正如安德烈亚斯所说,最好的资源可能是ESL II在线免费提供PDF格式。

为了自动调整alpha的值,确实可以使用ElasticNetCV,这将使冗余计算更加适合使用ElasticNet类中的GridSearchCV进行调优alpha 。作为补充,您可以使用常规GridSearchCV来查找rho的最佳值。有关详细信息,请参阅ElasticNetCV的文档字符串。

对于Lasso vs ElasticNet,ElasticNet将倾向于选择更多变量,从而导致更大的模型(训练也更昂贵),但一般来说也更准确。特别是Lasso对特征之间的相关性非常敏感,并且可能随机选择2个非常相关的信息特征中的一个,而ElasticNet更可能选择两个应该导致更稳定的模型(就广义能力而言如此新的样本)。

答案 1 :(得分:3)

答案 2 :(得分:0)

我会尝试帮助您解决“什么是ElasticNet?”

Elastic-Net是一种正规化的回归方法,它线性地结合了Lasso和Ridge回归方法的L1和L2两种惩罚。 有多个相关功能时,此功能很有用。 Lass和Elastic-Net之间的区别在于,Lasso可能会随机选择这些功能之一,而Elastic-net可能会一次选择两者。

下面列出的两个链接对ElasticNet进行了精彩的解释。

  1. ElasticNet- TutorialsPoint
  2. Lasso, Ridge and Elastic Net Regularization