批量梯度下降的 Sklearn 实现

Sklearn Implementation for batch gradient descend

用sklearn实现Batch gradient descent分类的方法是什么? 对于 Stochastic GD,我们有 SGDClassifier,它一次只接受一个实例,Linear/Logistic使用正规方程的回归

other similar question as well from sklearn docs中指出的问题的可能答案:

SGD allows minibatch (online/out-of-core) learning, see the partial_fit method.

但是 partial_fit 真的是批量梯度吗?

SGD:计算成本函数的梯度,并使用梯度下降步骤对每个样本更新权重。

Batch/Mini Batch GD:计算成本函数的梯度并使用梯度下降步骤更新权重每批一次.

因此批量大小为 1 的批量 GD == SGD。

现在我们清楚了定义,让我们研究一下 sklearn 的代码 SGDClassifier

partial_fit 的文档字符串说

Perform one epoch of stochastic gradient descent on given samples.

但这不是批处理 GD,但它看起来更像是 运行 fit 方法和 max_iter=1 的辅助函数(事实上在文档字符串中的注释相同)。

partial_fitmax_iter==1 调用 _partial_fitReference link

fit 方法调用 _fit,后者调用 _partial_fitmax_iter 设置为 assigned\default 最大迭代次数。 Reference link

结论:

partial_fit 不是 真的做批量 GD,即它不是计算梯度和更新每批次的权重,而是对每个样本这样做。

sklearn 中似乎没有进行批量梯度下降的机制。