我正在使用Scikit-learn包中实现的Lasso进行线性回归。
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
增加alpha也会使平均MAE增加。
提前致谢!
答案 0 :(得分:3)
我想'not converge'
上的警告可能是由于不合适,但您需要验证(可能不需要将tol
值设置得太小)。我建议您在拟合中迭代alpha
到2^(-5)
到2^3
,并绘制学习曲线以观察训练和测试数据的性能(交叉验证),并选择最佳正则化参数,以最好地避免欠拟合和过拟合。
答案 1 :(得分:0)
您可以在Scikit-Learn中查看GridSearchCV
哪个正在为您调整参数。使用此功能,您可以找到模型的最佳参数,使用这些参数可以提高模型的分数。
Click查看scikit-learn上的GridSearchCV页面。