批量梯度下降的Sklearn实现

时间:2019-04-06 18:22:05

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

使用sklearn进行分类实现批量梯度下降的方法是什么? 我们为随机GD提供了 SGDClassifier ,它一次将具有一个实例,而 线性/逻辑回归 则使用正常等式。

1 个答案:

答案 0 :(得分:1)

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

  

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

但是partial_fit真的是一个不错的批处理梯度吗?

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

批次/最小批次SGD:使用梯度适当的步骤 每批次一次 ,计算成本函数的梯度并更新权重。

所以批SGD的批量大小为1 == SGD

现在我们对定义已经很清楚了,可以研究sklearn SGDClassifier

的代码。

partial_fit的文档字符串说

  

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

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

partial_fit_partial_fit Reference link呼叫max_iter==1

fit方法调用_fit,该方法调用_partial_fit设置为已分配的\默认最大迭代次数的max_iterReference link

结论:

partial_fit确实不是真正做到批次SGD,即不是计算梯度并更新每批次的重量,而是对每个样品进行此操作。

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

相关问题