我正在使用scikit learn的逻辑回归函数(http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html)进行文本分类。我正在使用网格搜索来选择C参数的值。我是否需要对max_iter参数执行相同的操作?为什么呢?
C和max_iter参数在Sklearn中都有默认值,这意味着它们需要进行调整。但是,据我所知,早期停止和l1 / l2正则化是避免过度拟合的两种绝望方法,并且执行其中一种就足够了。假设调整max_iter的值等于提前停止,我是不正确的?
总结一下,这是我的主要问题:
1- max_iter需要调整吗?为什么? (文档说它只对某些求解器有用)
2-调整max_iter等效于提前停止吗?
3-我们应该同时进行早期停止和L1 / L2正规化吗?
答案 0 :(得分:1)
以下是对您编号问题的一些简单回答,并且大致简化:
max_iter
。为什么?见下文。max_iter
是逻辑回归分类器的解算器在被停止之前允许逐步执行的迭代次数。目标是达到一个稳定的"逻辑回归模型参数的解决方案,即优化问题。如果max_iter
太低,您可能无法达到最佳解决方案而且您的模型不合适。如果你的价值太高,你基本上可以永远等待一个解决方案,准确性几乎没有增加。如果max_iter
太低,您可能也会陷入局部最佳状态。是或否。
一个。 L1 / L2正规化基本上是#34;平滑"您的复杂模型,以便它不会过度匹配训练数据。如果参数变得太大,则会在成本中受到惩罚。
湾提前停止是指在您认为可接受的某个阶段(max_iter
之前)停止优化模型(例如,通过渐变下降)。例如,RMSE等指标可用于定义何时停止,或比较测试/培训数据中的指标。
℃。什么时候使用它们?这取决于您的问题。如果您有一个简单的线性问题,功能有限,则不需要正规化或提前停止。如果您有数千个功能和经验过度拟合,那么应用正则化作为一个解决方案。如果您不想等待优化在您使用参数时运行到最后,因为您只关心一定程度的准确性,您可以应用提前停止。
< / LI> 醇>最后,如何正确调整max_iter
?这取决于您手头的问题。如果您发现您的分类指标显示您的模型表现不佳,则可能是您的求解程序没有采取足够的步骤来达到最低限度。我建议您手动执行此操作并查看费用与max_iter
相比,以确定其是否正确达到最低限度而非自动化。