【问题标题】:Gridsearchcv: internal logic [closed]Gridsearchcv:内部逻辑
【发布时间】:2021-03-09 19:10:05
【问题描述】:

我试图了解 Gridsearchcv 的逻辑是如何工作的。看了here,官方的documentation,还有源码,但是没搞明白:

Gridsearchcv 背后的一般逻辑是什么?

澄清

  1. 如果我使用默认的 cv = 5,输入数据的分割百分比是多少 进入:训练、验证和测试?
  2. Gridsearchcv 多久执行一次这样的拆分,它如何决定哪个观察属于训练/验证/测试?
  3. 既然已经完成了交叉验证,那么对于超参数调整,平均在哪里发挥作用?即,最优超参数值是否可以优化某种平均值?

这个问题here 与我有同感,但我不知道这些信息是最新的,我不确定我是否了解那里的所有信息。例如,根据OP,我的理解是:

  • 测试集占输入数据集的 25%,创建一次
  • 训练集和验证集的联合对应创建一次,这个联合是原始数据的75%。
  • 然后,该过程创建 5 个(因为 cv = 5)进一步将这 75% 拆分为 60% 训练和 15% 验证
  • 优化的超参数值是优化这 5 次拆分中某些指标的平均值的值。

这种理解是否正确并且现在仍然适用?以及程序如何将原来的25%-75%拆分?

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:
    1. 首先将数据拆分为训练和测试。测试集被省略用于模型的后期训练和优化。 gridsearchcv 获取 75% 的数据并将它们分成 5 个切片。首先,它训练 4 个切片并在 1 个上进行验证,然后采用 4 个切片引入先前遗漏的集合进行验证并在新集合上进行测试等...... 5 次。

    然后可以查看每次运行的性能 + 它们的平均值,以了解您的模型的整体行为方式。

    1. 由于您正在执行gridsearch,因此best_params 将在建模结束时保存以预测您的测试集。
    2. 总而言之,在整个训练之后,将为您的模型选择并使用最佳参数,因此,您可以轻松地将它们用于predict(X_test)

    Read more here.

    1. 通常如果您不执行 CV,模型会尝试使用预设参数优化其权重,而遗漏的测试集将有助于评估模型性能。但是,对于真正的模型训练,将训练数据重新拆分为训练和验证非常重要,您可以在其中使用验证来超调模型的参数(手动)。但是,过度调优模型以在验证集上获得最佳性能是作弊。

    理论 K 折叠

    更多详情

    【讨论】:

    • 看来我对stackoverflow.com/q/48852524/6046501的理解是正确的。请跟进一些问题:25%-(5 乘以 60%+15%)是随机决定的吗?该程序何时使用 25% 的测试数据?
    • 25% 的测试数据没有被使用,也没有提供给模型,因此您可以随时在其上测试您的模型……您可以在今天、明天或明年进行。关于 60%-15% 的拆分,理论上,您以某种方式(假设随机)将数据分成 5 个拆分(仅一次),然后通过在 4 上进行训练并在 1 上进行验证来开始迭代......
    • 我明白了,所以我的理解有误。我认为 Gridsearchcv 输入了我的全部数据,然后将其自己的分区划分为训练+验证+测试。你是说我只是想把用户 I 决定训练+验证的内容提供给它。相应地,相对于输入数据,拆分实际上是 80% 训练 + 20% 验证。这是正确的吗?
    • @yurnero 1) train, test = train_test_split(blabla) ,将火车送入 5cv 并让它发挥作用。关于你的问题,因为你给了 5cvs 然后是 80%20%
    猜你喜欢
    • 2017-09-01
    • 2022-01-12
    • 2020-09-30
    • 2013-06-01
    • 1970-01-01
    • 2022-01-15
    • 2019-01-25
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多