【问题标题】:Using cross-validation to determine weights of machine learning algorithms (GridSearchCv,RidgeCV,StackingClassifier)使用交叉验证来确定机器学习算法的权重(GridSearchCv、RidgeCV、StackingClassifier)
【发布时间】:2020-11-05 09:54:15
【问题描述】:

我的问题与 GridSearchCV、RidgeCV 和 StackingClassifier/Regressor 有关。

  1. 堆叠分类器/回归器-AFAIK,它首先为每个基本估计器单独训练整个训练集。然后,它使用交叉验证方案,使用每个基本估计器的预测作为新特征来训练新的最终估计器。来自文档:“为了概括和避免过度拟合,final_estimator 在内部使用 sklearn.model_selection.cross_val_predict 对样本外进行训练。”

我的问题是,这到底是什么意思?是否将训练数据分成 k 折,然后对于每折,在折的训练部分训练最终估计器,在折的测试部分对其进行测试,然后从折中获取最终估计器的权重最好成绩?还是什么?

  1. 我想我可以将 GridSearchCV 和 RidgeCV 归​​为同一个问题,因为它们非常相似。 (尽管 ridgeCV 默认使用一个与所有 CV)

-为了找到最好的超参数,他们是否在所有折叠上做一个 CV,对于每个超参数,找到平均得分最高的超参数,然后在找到最好的超参数之后,用最好的超参数训练模型,使用整个训练集?还是我看错了?

如果有人能对此有所了解,那就太好了。谢谢!

【问题讨论】:

    标签: python scikit-learn cross-validation gridsearchcv


    【解决方案1】:

    你完全正确。流程如下:

    1. 选择第一组超参数
    2. 将数据分成 k 折
    3. 在每个折叠处运行模型
    4. 获取平均分数(损失、r2 或任何指定标准)
    5. 对所有其他超参数集重复步骤 2-4
    6. 选择得分最高的超参数集
    7. 使用最佳超参数在整个数据集(而不是单次折叠)上重新训练模型

    【讨论】:

    • 谢谢,我对 StackingClassifier 的总结也正确吗?
    • 交换步骤 1 和 2:每个超参数点使用相同的折叠。
    猜你喜欢
    • 2021-01-07
    • 2021-10-11
    • 2019-12-02
    • 2015-08-06
    • 2016-06-06
    • 1970-01-01
    • 2019-04-28
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多