我对scikit-learnn_iter的函数参数有疑问。SGDClassifier以下是定义:
n_iter : 整数,可选
训练数据的传递次数(又名 epochs)。使用 partial_fit 将迭代次数设置为 1。默认为 5。
对于大小为的数据集,我可以对上面的文字有两种解释:
- 解释1:该算法只随机选取
n_iter数据点并计算这些点的梯度,因此梯度的评估总数为n_iter(所以默认情况下只有5个?!)。 - 解释2:算法遍历整个数据集时间,为每个循环
n_iter挑选个点(基本上没有替换的随机抽样),因此梯度的评估总数为。n_itern_iter
鉴于 scikit-learn 的建议是选择n_iter等于,如果上面的解释 1 是正确的np.ceil(10**6/n),我很难理解对于,算法如何在 1 次计算后收敛......
根据经验,我们发现 SGD 在观察到大约 1 次后收敛。10^6 个训练样本。因此,对迭代次数的第一个合理猜测是
n_iter = np.ceil(10**6 / n),其中n是训练集的大小。
有人可以对此有所了解吗?