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

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

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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