gpt4 book ai didi

scikit-learn - scikit-learn 中嵌套交叉验证的令人困惑的例子

转载 作者:行者123 更新时间:2023-12-04 04:17:47 26 4
gpt4 key购买 nike

我正在查看 scikit-learn 文档中的这个示例:http://scikit-learn.org/0.18/auto_examples/model_selection/plot_nested_cross_validation_iris.html

在我看来,交叉验证在这里没有以无偏见的方式进行。两者 GridSearchCV (据说是内部 CV 循环)和 cross_val_score (据说是外部 CV 循环)使用相同的数据和相同的折叠。因此,分类器训练和评估的数据之间存在重叠。我怎么了?

最佳答案

@Gael - 由于我无法添加评论,所以我将其发布在答案部分。我不确定盖尔所说的“第一次拆分在 cross_val_score 内完成,第二次拆分在 GridSearchCV(即 GridSearchCV 对象的整个点)内完成”是什么意思。您是否试图暗示 cross_val_score 函数将 (k-1)-fold 数据(用于外循环训练)传递给 clf 对象?情况似乎并非如此,因为我可以注释掉 cross_val_score 函数,只需将 nested_score[i] 设置为虚拟变量,并且仍然获得完全相同的 clf.best_score_。这意味着 GridSearchCV 是单独评估的,并且确实使用了 全部 可用数据,而不是训练数据的子集。

在嵌套 CV 中,据我所知,这个想法是内循环将对训练数据的较小子集进行超参数搜索,然后外循环将使用这些参数进行交叉验证。在内循环中使用较小的训练数据的原因之一是为了避免信息泄漏。看起来这不是这里发生的事情。内循环首先使用所有数据搜索超参数,然后用于外循环中的交叉验证。因此,内循环已经看到了所有数据,而在外循环中进行的任何测试都会受到信息泄漏的影响。如果我弄错了,能否请您指出您在答案中所指的代码部分?

关于scikit-learn - scikit-learn 中嵌套交叉验证的令人困惑的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com