为什么“SGDClassifier”中的“partial_fit”会逐渐降低模型精度

佩德罗

我正在使用in训练一个在线学习的SVM 分类器我了解到可以使用.SGDClassifiersklearnpartial_fit

我的模型定义是:

model = SGDClassifier(loss="hinge", penalty="l2", alpha=0.0001, max_iter=3000, tol=1e-3, shuffle=True, verbose=0, learning_rate='invscaling', eta0=0.01, early_stopping=False)

它仅在第一次创建。

为了测试它,我首先使用整个数据训练了我的分类器模型 1,fit并获得了 87% 的模型准确度(使用model.score(X_test, y_test))。然后,为了演示在线训练,我将相同的数据分成 4 组,然后使用partial_fit. 这是模型 2。

但在这种情况下,我的准确率下降为:87.9 -> 98.89 -> 47.7 -> 29.4。

这可能是什么原因?

佩德罗

这就是我克服它的方式。

通常,partial_fit已经看到准确度容易降低波动在某种程度上,这可以通过改组和仅提供整个数据集的一小部分来稍微缓解但是,对于较大的数据,使用 SGDClassifier/SVM 分类器,在线训练似乎只会降低准确性。

我试着用它做实验,发现使用低学习率有时可以帮助我们。粗略的类比是,在大数据上重复训练相同的模型,导致模型忘记从之前的数据中学到的东西。因此,使用很小的学习率会减慢学习和遗忘的速度!

我们可以使用adaptive提供的学习率功能,而不是手动提供速率sklearn

model = SGDClassifier(loss="hinge", penalty="l2", alpha=0.0001, max_iter=3000, tol=None, shuffle=True, verbose=0, learning_rate='adaptive', eta0=0.01, early_stopping=False)

这在 [scikit docs] 中描述为:

'adaptive':eta = eta0,只要训练不断减少。每次 n_iter_no_change 连续 epochs 未能将训练损失减少 tol 或如果 early_stopping 为 True 则无法将验证分数增加 tol 时,当前学习率除以 5。

最初,对于每一轮新数据,我们会得到准确度的下降:

7.9 -> 98.89 -> 47.7 -> 29.4

现在,我们以 100% 的准确率获得了更好的结果,尽管由于增加的 epochs 存在很大的过度拟合范围。我试图证明这个 kaggle notebook 中的观察结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在张量流中编写回归,但是为什么MSE不会逐渐降低?

更新并发症会逐渐降低watchOS3中Apple Watch应用的性能

在 Unity 中通过动画逐渐降低对象的速度

为什么sklearn LatentDirichletAllocation的fit和partial_fit返回不同的结果?

fit / partial_fit之后如何操纵skflow模型的权重?

MLPRegressor与partial_fit()

sklearn中带有partial_fit的GridSearchCV / RandomizedSearchCV

partial_fit Sklearn的MLPClassifier

scitkit SGDClassifier partial_fit不会逐步学习。返回“类应包含所有有效标签”

为什么在Delphi中嵌套子例程会降低性能?

为什么激活函数会降低 CNN 模型的时间性能?

在监督分类中,使用 partial_fit() 的 MLP 比使用 fit() 表现更差

-Xrs为什么会降低性能

为什么添加索引会降低性能?

为什么此循环会逐渐变慢?

SkLearn SGDRegressor中partial_fit中的批次大小和纪元数

scikit-learn中的哪些估算器支持`partial_fit` API?

在Keras fit_generator中将shuffle设置为True时,精度会降低

为什么即使我设置了 fit_intercept= False,我的回归模型也会返回截距?

为什么在压缩过程中7zip的写入速度会不断降低?

为什么在此方法中添加If语句会如此大幅度地降低它的速度?

为什么每个插槽中的RAM数量不相等会降低性能?

为什么keras模型可以编译,但是fit_generator命令会抛出“模型未编译的运行时错误”?

AttributeError:“管道”对象没有属性“ partial_fit”

为什么加速会随着管线级数的增加而降低?

为什么对对象的[[prototype]]进行突变会降低性能?

为什么ConvertTo-Json会降低值

为什么 PhpUnit dataProviders 会降低覆盖率?

为什么逻辑读取会降低性能 - SQL Server?