带套索惩罚的线性回归需要增加迭代次数,Scikitlearn

2024-04-19 05:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用线性回归与套索实现在Scikit学习包。

linear_regress = linear_model.Lasso(alpha = 2)
linear_regress.fit(X, Y)

对于X,有7827个示例和758个特性。 但是我得到一个警告:

Objective did not converge for target 0, you might want to increase the number of iterations ' to increase the number of iterations')

同时,交叉验证的MAE为0.00304247702091

然后,我按照它的建议增加迭代次数。(我认为我做得对):

linear_regress = linear_model.Lasso(alpha = 2, max_iter = 100000, tol = 1e-20)

但是警告仍然存在,MAE增加到0.0191056040626,这更糟。

有人知道怎么解决这个问题吗?

顺便说一下,对于交叉验证的结果,训练数据的MAE远小于测试数据的MAE,例如(alpha=2):

The MAE on the TRAINING data is 6.3462754706e-14
The MAE on the TEST data is 0.238521024414

我以为是过度装修。但是增加alpha并没有多大帮助,例如(alpha=5)

The MAE on the TRAINING data is 1.29613883816e-13
The MAE on the TEST data is 0.0677816327262

增加α也会使平均MAE增加。

提前谢谢!


Tags: thetoalpha警告numberdatamodelis
2条回答

我想关于'not converge'的警告可能是由于不合适,但是您需要验证(可能不需要将tol值设置得太小)。我建议你在拟合中迭代alpha2^(-5)2^3,绘制学习曲线,观察训练和测试数据的性能(交叉验证),并选择最佳正则化参数,以最好地避免欠拟合和过拟合。

您可以在Scikit Learn中检查GridSearchCV,它正在为您调整参数。使用此函数可以找到模型的最佳参数,使用这些参数可以增加模型的分数。

Click查看scikit learn上的GridSearchCV页面。

相关问题 更多 >