如何调整最大熵模型的参数?

我正在使用scikit-learn的逻辑回归函数进行文本分类(http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html)。我使用网格搜索来选择C参数的值。我是否也需要对max_iter参数进行同样的调整?为什么?

在Sklearn中,C和max_iter参数都有默认值,这意味着它们需要调整。但据我所知,提前停止和L1/L2正则化是两种不同的避免过拟合的方法,执行其中一种就足够了。我假设调整max_iter的值等同于提前停止,这种假设是否正确?

总结一下,以下是我的主要问题:

1- max_iter是否需要调整?为什么?(文档中说这只对某些求解器有用)

2- 调整max_iter是否等同于提前停止?

3- 我们是否应该同时进行提前停止和L1/L2正则化?


回答:

以下是对你编号问题的简单回答,简化处理:

  1. 是的,有时你需要调整max_iter。为什么?见下一条。
  2. 不是。max_iter是逻辑回归分类器的求解器允许进行的迭代次数,在达到这个次数之前会被停止。目的是达到逻辑回归模型参数的“稳定”解决方案,即这是一个优化问题。如果你的max_iter设置得太低,你可能无法达到最优解,你的模型就会欠拟合。如果值设置得太高,你可能会一直等待解决方案,而准确性提升甚微。如果max_iter太低,你也可能陷入局部最优解。
  3. 是或不是。

    a. L1/L2正则化本质上是对你的复杂模型进行“平滑”,以防止它对训练数据过拟合。如果参数变得过大,它们会在成本中受到惩罚。

    b. 提前停止是指在你认为可以接受的某个阶段停止优化你的模型(例如,通过梯度下降)。例如,可以使用RMSE等指标来定义何时停止,或者比较测试/训练数据的指标。

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

最后,如何正确调整max_iter?这取决于你手头的问题。如果你发现你的分类指标显示模型表现不佳,可能是因为你的求解器没有进行足够的步骤来达到最小值。我建议你手动进行调整,并查看成本与max_iter的关系,看看它是否正确达到最小值,而不是自动化处理。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注