用于在线学习的 SGDClassifier partial_fit() - 一步梯度下降就够了吗?

数据挖掘 scikit-学习 逻辑回归 梯度下降 在线学习
2022-02-18 19:27:07

我对使用SGDClassifier. 基本上随着更多标记数据的出现而更新模型。我知道我可以使用partial_fit()它。以下似乎是StackOverflow 上的一个常见示例:

clf = linear_model.SGDClassifier()
x1 = some_new_data
y1 = the_labels
clf.partial_fit(x1,y1)
x2 = some_newer_data
y2 = the_labels
clf.partial_fit(x2,y2)

问题是,只partial_fit()执行梯度下降的一步

在内部,此方法使用max_iter = 1. 因此,不能保证在调用一次后达到成本函数的最小值。客观收敛、提前停止等事项应由用户自行处理。

一步就够了吗?我怎么知道我是否不需要为每个新标记的数据点/小批量执行更多的步骤?

1个回答

监控您尝试优化的指标,并在每个 epoch 之后计算这些指标的变化。一旦这些指标根据某些标准停止改进,那么您就可以停止梯度下降。有关跟踪指标改进的方法,请参阅本文。