【问题标题】:Sklearn Implementation for batch gradient descend批量梯度下降的 Sklearn 实现
【发布时间】:2019-08-28 08:18:37
【问题描述】:

使用sklearn进行分类的Batch梯度下降的实现方式是什么? 我们有 SGDClassifier 用于 Stochastic GD,它一次采用单个实例,Linear/Logistic Regression 使用正常等式。

【问题讨论】:

  • 检查stackoverflow.com/questions/15036630/…(尽管可能不完全是您的要求)
  • 否定答案(即表明您实际上可以不做某事),如下所示,确实是一个有效的答案。我建议你接受它。

标签: machine-learning scikit-learn gradient-descent


【解决方案1】:

other similar question 以及 sklearn docs 中指出的问题的可能答案:

SGD 允许小批量(在线/核外)学习,请参阅 partial_fit 方法。

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

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

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

所以批量大小为 1 的 Batch GD == SGD。

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

partial_fit 的文档字符串说

对给定样本执行一个时期的随机梯度下降。

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

partial_fit 用max_iter==1 调用_partial_fit。 Reference link

fit 方法调用 _fit 调用 _partial_fit 并将 max_iter 设置为指定\默认的最大迭代次数。 Reference link

结论:

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

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

【讨论】:

  • 这也是我的结论——因此我的评论以及链接的问题; +1 总结一下...
猜你喜欢
  • 2017-03-15
  • 1970-01-01
  • 2013-02-08
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2020-12-20
  • 1970-01-01
相关资源
最近更新 更多