根据sklearn的RandomizedSearchCVGridSearchCV模块的文档,它们仅支持传递给他们的分类器的fit方法,不支持可用于分类器的partial_fit方法逐步进行培训。当前,我正在尝试使用SGDClassifier,该partial_fit可以使用RandomizedSearchCV方法在增量数据上进行训练,并且还可以找到相同的最佳超参数集。我只是想知道为什么GridSearchCVpartial_fit不支持。我看不到任何无法解决此问题的技术原因(如果我在这里错了,请纠正我)。任何线索将不胜感激。

最佳答案

是的,从技术上讲,您也可以为partial_fit编写GridSerachCV,但是当您考虑


您正在寻找什么?
您正在优化什么?


它与我们使用.fit()方法所做的完全不同。这是我在partial_fit / GridsearchCV中没有RandomSearchCV的原因列表。


  您正在寻找什么?



当我们针对一批数据优化模型的超级参数时,对于最终模型(使用多个partial_fit在完整数据上进行训练)而言,它可能不是最优的。现在,问题就变成了找到超参数的最佳时间表,即在每个批次/时间步的超参数的最佳值是多少。一个示例是神经网络中递减的学习率,其中我们使用多个partial_fit训练模型,并且超参数-学习率值不是单个值,而是每次都需要使用的一系列值步骤/批次。
同样,您需要多次遍历整个数据集(多个时期)以了解超参数的最佳调度。这需要对GridSearchCV进行基本的API更改。



  您正在优化什么?



现在需要更改模型的评估指标。该指标可能会在所有partial_fit结束时达到最佳性能,或以常规指标(precisionrecallf1-score等)快速达到最佳点(以较少的批次),并结合使用一和二。因此,这也需要更改API以计算单个值以汇总模型的性能,该更改使用多个partial_fit进行了训练。

关于python - sklearn中带有partial_fit的GridSearchCV/RandomizedSearchCV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57109473/

10-12 21:54