在 sklearn 模型中,作为停止标准的 tol(公差)到底是什么?

机器算法验证 机器学习 scikit-学习 超参数
2022-03-25 17:34:14

scikit-learn 中的 tol(停止标准的容差)到底是什么?用 tol 检查结束训练的数量是多少

2个回答

正如您所指出的,tol是停止标准的容差。这告诉scikit一旦达到一些容差,即停止搜索最小值(或最大值),即一旦你足够接近。tol将根据被最小化的目标函数和他们用来找到最小值的算法而改变,因此将取决于您正在拟合的模型。没有普遍的容忍度scikit

例如,在计算逻辑回归的系数时:

tol : float
     Stopping criterion. For the newton-cg and lbfgs solvers, the iteration
     will stop when ``max{|g_i | i = 1, ..., n} <= tol``
     where ``g_i`` is the i-th component of the gradient.

对于多层感知器模型:

tol : float, optional, default 1e-4
     Tolerance for the optimization. When the loss or score is not improving
     by at least tol for two consecutive iterations, unless `learning_rate`
     is set to 'adaptive', convergence is considered to be reached and
     training stops.

我认为这个问题不够具体,无法回答。

Scikit-learn 是一个用 python 进行机器学习的大库,不同的算法有不同的优化问题。在大多数问题中,tol 被用作优化的停止标准。但是在不同的模型/算法中,tol 可能会有所不同。

例如,在Lasso中,文档说

优化的容差:如果更新小于 tol,则优化代码检查对偶间隙的最优性并继续直到它小于 tol。

这个 tol 只能在 Lasso 中使用,因为它检查“双间隙”,如果您正在训练神经网络,则“双间隙”定义不存在。


在非常高的层面上,很多机器学习任务可以被表述为一个“迭代过程”来获取模型中的所有参数,但是我们应该什么时候停止迭代呢?有不同的方法来停止。

  • 限制迭代次数
  • 检查参数是否收敛(不要在迭代中改变)
  • 检查其他一些指标(例如梯度、原始和对偶之间的差距)
  • 还有很多

当我们做检查时,可以使用 tol 。