问题描述
在训练数据集上交叉验证超参数网格后,SparkML 的 CrossValidator
是否重新适合整个训练数据集?如果不是,它从交叉验证的哪个部分选择用于推理的 bestModel
?
拟合的 CrossValidator
使 .transform()
方法可用。为此,CrossValidator
是否使用最佳超参数在整个训练/交叉验证数据集上重新训练并使用重新拟合的模型进行推理?
或者是用于从所有交叉验证折叠中推断最佳性能模型的 bestModel
(即,来自性能最佳超参数组合的最佳折叠的模型,仅针对该折叠的数据进行训练)?
我之所以这么问是因为 SparkML CrossValidator
和 scikit-learn
的 gridsearchcv
表面上有相似之处。如果您将参数 refit=True
传递给 gridsearchcv
,它将使用参数网格中的最佳超参数重新拟合整个训练数据集。然后使用在整个训练集上训练的重新拟合模型通过 .predict()
方法进行公开。
我已通读the Python docs、the Scala docs 和the examples showing hyperparameter tuning and cross-validation。我找不到对此的任何具体参考。
在示例中,有这样的评论:# Make predictions on test documents. cvModel uses the best model found (lrModel).
但是从那以后,它是否是最佳超参数组合中的最佳折叠尚不清楚,或者如果它重新适合,则是 la scikit-learn。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)