根据sklearn的RandomizedSearchCV和GridSearchCV模块的文档,它们仅支持传递给他们的分类器的fit
方法,不支持可用于分类器的partial_fit
方法逐步进行培训。当前,我正在尝试使用SGDClassifier
,该partial_fit
可以使用RandomizedSearchCV
方法在增量数据上进行训练,并且还可以找到相同的最佳超参数集。我只是想知道为什么GridSearchCV
或partial_fit
不支持。我看不到任何无法解决此问题的技术原因(如果我在这里错了,请纠正我)。任何线索将不胜感激。
最佳答案
是的,从技术上讲,您也可以为partial_fit
编写GridSerachCV,但是当您考虑
您正在寻找什么?
您正在优化什么?
它与我们使用.fit()
方法所做的完全不同。这是我在partial_fit
/ GridsearchCV
中没有RandomSearchCV
的原因列表。
您正在寻找什么?
当我们针对一批数据优化模型的超级参数时,对于最终模型(使用多个partial_fit
在完整数据上进行训练)而言,它可能不是最优的。现在,问题就变成了找到超参数的最佳时间表,即在每个批次/时间步的超参数的最佳值是多少。一个示例是神经网络中递减的学习率,其中我们使用多个partial_fit
训练模型,并且超参数-学习率值不是单个值,而是每次都需要使用的一系列值步骤/批次。
同样,您需要多次遍历整个数据集(多个时期)以了解超参数的最佳调度。这需要对GridSearchCV进行基本的API更改。
您正在优化什么?
现在需要更改模型的评估指标。该指标可能会在所有partial_fit
结束时达到最佳性能,或以常规指标(precision
,recall
,f1-score
等)快速达到最佳点(以较少的批次),并结合使用一和二。因此,这也需要更改API以计算单个值以汇总模型的性能,该更改使用多个partial_fit
进行了训练。
关于python - sklearn中带有partial_fit的GridSearchCV/RandomizedSearchCV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57109473/