0

我正在使用 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 正则化?

4

1 回答 1

1

以下是对您编号的问题的一些简单回复,并大大简化:

  1. 是的,有时您需要调整max_iter. 为什么?见下。
  2. No.max_iter是逻辑回归分类器的求解器在停止之前允许通过的迭代次数。目的是为逻辑回归模型的参数达到一个“稳定”的解决方案,即,它是一个优化问题。如果您的max_iter值太低,您可能无法达到最佳解决方案并且您的模型欠拟合。如果您的值太高,您基本上可以永远等待获得解决方案,而准确性几乎没有提高。max_iter如果太低,您也可能会陷入局部最优。
  3. 是还是不是。

    一个。L1/L2 正则化本质上是对复杂模型的“平滑”,使其不会过度拟合训练数据。如果参数变得太大,它们会在成本上受到惩罚。

    湾。提前停止是指在您认为可以接受的某个阶段(之前)停止优化模型(例如,通过梯度下降max_iter)。例如,诸如 RMSE 之类的指标可用于定义何时停止,或比较测试/训练数据中的指标。

    C。什么时候使用它们?这取决于你的问题。如果你有一个简单的线性问题,特征有限,你不需要正则化或提前停止。如果您有数千个特征并且经历过拟合,那么将正则化作为一种​​解决方案。如果您不想在使用参数时等待优化运行到最后,因为您只关心一定程度的准确性,您可以应用 early stopping

最后,如何max_iter正确调音?这取决于您手头的问题。如果您发现您的分类指标显示您的模型表现不佳,则可能是您的求解器没有采取足够的步骤来达到最小值。我建议您手动执行此操作,并查看成本与max_iter是否正确达到最小值而不是自动化它。

于 2017-11-24T08:43:30.260 回答