批量梯度下降的 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_fit
用 max_iter==1
调用 _partial_fit
。 Reference link
fit
方法调用 _fit
,后者调用 _partial_fit
,max_iter
设置为 assigned\default 最大迭代次数。 Reference link
结论:
partial_fit
不是 真的做批量 GD,即它不是计算梯度和更新每批次的权重,而是对每个样本这样做。
sklearn 中似乎没有进行批量梯度下降的机制。
用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_fit
用 max_iter==1
调用 _partial_fit
。 Reference link
fit
方法调用 _fit
,后者调用 _partial_fit
,max_iter
设置为 assigned\default 最大迭代次数。 Reference link
结论:
partial_fit
不是 真的做批量 GD,即它不是计算梯度和更新每批次的权重,而是对每个样本这样做。
sklearn 中似乎没有进行批量梯度下降的机制。