Sklearn SGDClassifier小批量学习和学习费率表

时间:2013-09-20 12:28:27

标签: scikit-learn gradient-descent

当我使用partial_fit方法训练它时,我正在尝试拼凑SGDClassifier如何选择学习率。

即,我的主要学习循环如下所示:

from sklearn.linear_model import SGDClassifier
m = SGDClassifier(n_iter=1, alpha=0.01)
n_iter = 40
t0 = time.time()
for i in range(n_iter):
    for fname in files:
        X, y = load_next_batch(fname)
        m.partial_fit(X, y, classes = [0, 1])
    print "%d:  valid-error: %f  (time: %fs)" % (i, 1.0-m.score(Xvalid, yvalid), time.time() - t0)

现在,因为我在整个训练集中进行了40次传球,所以我希望随着时间的推移退出我的学习率。如果我使用fit而不是部分拟合,我的理解是这会自动发生(除非我修改learning_rate参数)。

但是,我不清楚使用局部拟合时会发生这种情况。略读代码也无济于事。任何人都可以澄清我如何达到退火学习率 在我的环境中?

1 个答案:

答案 0 :(得分:2)

fit在内部使用partial_fit,因此learning rate configuration parameters适用于fitpartial_fit。默认退火计划为eta0 / sqrt(t)eta0 = 0.01

修改:这是不正确的,如评论中所示,SGDClassifier的实际默认时间表是:

1.0 / (t + t0)其中t0启发式设置,t是过去看到的样本数。