scikit-learn 中的 tol(停止标准的容差)到底是什么?用 tol 检查结束训练的数量是多少?
在 sklearn 模型中,作为停止标准的 tol(公差)到底是什么?
机器算法验证
机器学习
scikit-学习
超参数
2022-03-25 17:34:14
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 。
其它你可能感兴趣的问题