GridSearchCV/RandomizedSearchCV 与 partial_fit 在 sklearn 中
GridSearchCV/RandomizedSearchCV with partial_fit in sklearn
根据 sklearn RandomizedSearchCV and GridSearchCV 模块的文档,它们仅支持传递给它们的分类器的 fit
方法,不支持 partial_fit
方法可用于增量训练的分类器。目前,我正在尝试使用 SGDClassifier
,它可以使用 partial_fit
方法对增量数据进行训练,并且还可以找到最佳的超参数集。我只是想知道为什么 RandomizedSearchCV
或 GridSearchCV
不支持 partial_fit
。我没有看到任何关于为什么不能这样做的技术原因(如果我在这里错了,请纠正我)。任何线索将不胜感激。
是的,从技术上讲,您也可以为 partial_fit
编写 GridSerachCV,但是当您考虑
- 您在搜索什么?
- 您要优化的是什么?
它与我们使用 .fit()
方法所做的完全不同。这是我在 GridsearchCV
/RandomSearchCV
.
中没有 partial_fit
的原因列表
what is that you are searching for?
当我们为一批数据优化模型的超参数时,最终模型可能是 sub-optimal(使用多个 partial_fit
s)。现在问题变成了寻找超参数的最佳时间表,即每个 batch/time 步骤的超参数的最佳值是多少。这方面的一个例子是神经网络中的衰减学习率,我们使用多个 partial_fit
s 和超参数训练模型 - 学习率值不会是单个值,而是需要用于每次 step/batch.
此外,您还需要多次(多个时期)遍历整个数据集,以了解超参数的最佳调度。这需要对 GridSearchCV 进行基本的 API 更改。
what is that your are optimizing for?
- 现在需要更改模型的评估指标。对于通常的指标(
precision
、recall
、f1-score
, 等等), 一些一和二的组合。因此,这也需要 API 更改来计算单个值以总结模型的性能,该模型是使用多个 partial_fit
s 训练的。
我认为这可以用不同的方式解决。我遇到了只有 partial_fit
有效的问题(数据太大无法通过 fit
进行全批学习),所以我认为 scikit-learn 应该在某处支持 partial_fit
。
您可以编写一个简单的包装器(类似于 pytorch DataLoader
)将 partial_fit
模型转换为 [=11],而不是在 GridSearchCV
中使用 partial_fit
=] 模型,并在包装器的 fit
内进行批量拆分和随机播放。然后你可以使 GridSearchCV
工作,使用包装器提供的额外参数进行微调(batch_size
和 is_shuffle
)
根据 sklearn RandomizedSearchCV and GridSearchCV 模块的文档,它们仅支持传递给它们的分类器的 fit
方法,不支持 partial_fit
方法可用于增量训练的分类器。目前,我正在尝试使用 SGDClassifier
,它可以使用 partial_fit
方法对增量数据进行训练,并且还可以找到最佳的超参数集。我只是想知道为什么 RandomizedSearchCV
或 GridSearchCV
不支持 partial_fit
。我没有看到任何关于为什么不能这样做的技术原因(如果我在这里错了,请纠正我)。任何线索将不胜感激。
是的,从技术上讲,您也可以为 partial_fit
编写 GridSerachCV,但是当您考虑
- 您在搜索什么?
- 您要优化的是什么?
它与我们使用 .fit()
方法所做的完全不同。这是我在 GridsearchCV
/RandomSearchCV
.
partial_fit
的原因列表
what is that you are searching for?
当我们为一批数据优化模型的超参数时,最终模型可能是 sub-optimal(使用多个
partial_fit
s)。现在问题变成了寻找超参数的最佳时间表,即每个 batch/time 步骤的超参数的最佳值是多少。这方面的一个例子是神经网络中的衰减学习率,我们使用多个partial_fit
s 和超参数训练模型 - 学习率值不会是单个值,而是需要用于每次 step/batch.此外,您还需要多次(多个时期)遍历整个数据集,以了解超参数的最佳调度。这需要对 GridSearchCV 进行基本的 API 更改。
what is that your are optimizing for?
- 现在需要更改模型的评估指标。对于通常的指标(
precision
、recall
、f1-score
, 等等), 一些一和二的组合。因此,这也需要 API 更改来计算单个值以总结模型的性能,该模型是使用多个partial_fit
s 训练的。
我认为这可以用不同的方式解决。我遇到了只有 partial_fit
有效的问题(数据太大无法通过 fit
进行全批学习),所以我认为 scikit-learn 应该在某处支持 partial_fit
。
您可以编写一个简单的包装器(类似于 pytorch DataLoader
)将 partial_fit
模型转换为 [=11],而不是在 GridSearchCV
中使用 partial_fit
=] 模型,并在包装器的 fit
内进行批量拆分和随机播放。然后你可以使 GridSearchCV
工作,使用包装器提供的额外参数进行微调(batch_size
和 is_shuffle
)