如何使用弹性网?

Zac*_*ach 27 python statistics regression machine-learning scikit-learn

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

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

如何在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)
Run Code Online (Sandbox Code Playgroud)

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

ogr*_*sel 25

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

为了自动调整alpha的值,确实可以使用ElasticNetCV,这将使冗余计算与在类中使用GridSearchCVElasticNet进行调整相关 alpha.作为补充,您可以使用常规GridSearchCV来查找最佳值rho.有关详细信息,请参阅ElasticNetCV的docstring .

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