这是一个关于回归正则化的初学者问题。网上关于Elastic Net和Lasso回归的大多数信息都是从维基百科或Zou和Hastie在2005年发表的原始论文(通过弹性网进行正则化和变量选择)中复制的。
简单理论的资源? 是否有某个地方提供关于Elastic Net的简单易懂的解释,说明它做了什么,什么时候以及为什么需要正则化,以及如何使用它——特别是对于那些统计学基础薄弱的人来说?我理解如果能理解的话,原始论文是最理想的来源,但有没有地方能更简单地解释问题和解决方案?
如何在sklearn中使用? 是否有逐步示例展示为什么选择Elastic Net(而不是Ridge、Lasso或简单的OLS)以及如何计算参数?许多sklearn的示例只是直接将alpha和rho参数包含在预测模型中,例如这个:
from sklearn.linear_model import ElasticNetalpha = 0.1enet = ElasticNet(alpha=alpha, rho=0.7)y_pred_enet = enet.fit(X_train, y_train).predict(X_test)
然而,它们并没有解释这些参数是如何计算的。你如何计算Lasso或Elastic Net的参数?
回答:
文档缺乏相关内容。我创建了一个新的问题来改进它。正如Andreas所说,最好的资源可能是作为PDF文件免费在线提供的ESL II。
为了自动调整alpha的值,确实可以使用ElasticNetCV,它可以避免使用ElasticNet
类中的GridSearchCV来调整alpha
时进行冗余计算。补充的是,你可以使用常规的GridSearchCV
来寻找rho
的最佳值。有关更多详细信息,请参阅ElasticNetCV的文档字符串。
至于Lasso与ElasticNet的比较,ElasticNet倾向于选择更多的变量,因此会导致模型更大(训练成本也更高),但通常会更准确。特别是,Lasso对特征之间的相关性非常敏感,可能会随机选择两个高度相关的有信息特征中的一个,而ElasticNet更有可能选择两者,这应该会导致模型在泛化能力方面(即对新样本的处理)更加稳定。