忽略 sklearn 中的 "ConvergenceWarning" 是否安全?
Is it safe to ignore the "ConvergenceWarning" in sklearn?
我在 sklearn
中使用 LassoCV
。总是有很多 ConvergenceWarnings。我检查了结果,它们看起来不错。所以我想知道忽略这些警告是否安全。我的一些想法是:
- 出现警告是因为我的响应幅度太大了吗?也会让损失更大
- 大多数情况下,增加迭代次数就可以解决了吗?我犹豫要不要这样做,因为有时 运行 需要更长的时间,但结果并没有改善。
tl;dr几乎总是很好,可以肯定的是观察学习曲线。
因此,LassoCV 实现了 Lasso 回归,其参数通过某种梯度下降(坐标下降更精确,这是一种更简单的方法)进行优化,并且作为所有梯度方法,该方法需要定义:
- 步长
- 停止条件
可能最流行的停止标准是:
a) 固定数量的步数(不错的选择 time-wise,因为 1000 步与 1 步相比正好需要 x1000 倍的时间,因此很容易管理训练所花费的时间)。
b) 在步骤 n
和 n-1
期间损失函数值之间的固定增量(差异)(可能更好 classification/regression 质量)
您观察到的警告是因为 LassoCV 使用第一个标准(固定步数),但也检查第二个(delta),一旦达到固定步数算法就会停止,delta 的默认值为对于大多数真实数据集来说太小了。
为了确保您训练模型的时间足够长,您可以绘制学习曲线:每训练 10-20-50 步后损失值,一旦达到稳定状态,您就可以停下来。
我在 sklearn
中使用 LassoCV
。总是有很多 ConvergenceWarnings。我检查了结果,它们看起来不错。所以我想知道忽略这些警告是否安全。我的一些想法是:
- 出现警告是因为我的响应幅度太大了吗?也会让损失更大
- 大多数情况下,增加迭代次数就可以解决了吗?我犹豫要不要这样做,因为有时 运行 需要更长的时间,但结果并没有改善。
tl;dr几乎总是很好,可以肯定的是观察学习曲线。
因此,LassoCV 实现了 Lasso 回归,其参数通过某种梯度下降(坐标下降更精确,这是一种更简单的方法)进行优化,并且作为所有梯度方法,该方法需要定义:
- 步长
- 停止条件
可能最流行的停止标准是:
a) 固定数量的步数(不错的选择 time-wise,因为 1000 步与 1 步相比正好需要 x1000 倍的时间,因此很容易管理训练所花费的时间)。
b) 在步骤 n
和 n-1
期间损失函数值之间的固定增量(差异)(可能更好 classification/regression 质量)
您观察到的警告是因为 LassoCV 使用第一个标准(固定步数),但也检查第二个(delta),一旦达到固定步数算法就会停止,delta 的默认值为对于大多数真实数据集来说太小了。
为了确保您训练模型的时间足够长,您可以绘制学习曲线:每训练 10-20-50 步后损失值,一旦达到稳定状态,您就可以停下来。