我使用线性回归与套索实现在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增加。
提前谢谢!
我想关于
'not converge'
的警告可能是由于不合适,但是您需要验证(可能不需要将tol
值设置得太小)。我建议你在拟合中迭代alpha
到2^(-5)
到2^3
,绘制学习曲线,观察训练和测试数据的性能(交叉验证),并选择最佳正则化参数,以最好地避免欠拟合和过拟合。您可以在Scikit Learn中检查
GridSearchCV
,它正在为您调整参数。使用此函数可以找到模型的最佳参数,使用这些参数可以增加模型的分数。Click查看scikit learn上的GridSearchCV页面。
相关问题 更多 >
编程相关推荐