machine-learning - 如何从 k 折交叉验证中的每个折中学习?
问题描述
在执行 k 折交叉验证时,对于每个折,我们都有不同的验证集和稍微改变的学习集。假设您从第一折前进到第二折。你是如何从第二次迭代中继承的第一次折叠中学到的?目前,您似乎只计算准确性,而学习的模型被丢弃并且永远不会保留。
我错过了什么?如果保留这样的模型?它是如何保留的,DQN 与 KNN 的方法有什么不同?
解决方案
K 折交叉验证不会在每次迭代中重新训练模型。相反,它训练和评估具有不同数据集折叠但具有相同超参数的K 个不同的独立(可以并行化)模型。这不是为了得到更准确的模型,而是通过计算聚合验证分数(即:您可以估计模型准确度的均值和标准差)来获得更准确(从统计上讲)的验证。
然后,您可以只保留其中一个模型并对其指标使用聚合估计(而不是使用在该模型的特定折叠中计算的那个),或者使用完整的数据集训练(从头开始)一个新模型。在最后一种情况下,您对模型指标的最佳估计仍然是以前的聚合指标,但可以使用新的未使用测试集来估计新指标。那么,你为什么要这样做?嗯,那是因为你通常使用交叉验证和超参数调优。因此,每次调整超参数时,只需使用交叉验证检查聚合度量估计。但是,当您完成模型调整后,您将使用看不见的测试集计算最终指标。
推荐阅读
- node.js - 为什么nestjs socket.io extraHeaders 值未定义?
- reactjs - Spring React 不起作用 - 动画在 react js 中不起作用
- javascript - React JS - 本地存储、.map() 和 textarea 值的问题
- javascript - 获取数据 React js 时我需要切换按钮吗?
- amazon-web-services - 如何在 AWS 中正确重定向 URL?
- sql - 如何使查询忽略、省略或排除 sql 中日期时间范围内的数据?
- powershell - 使用 Powershell 从 AD 获取 AllowLogon 并不总是显示正确的信息
- angular - 运行 ng build --prod 时找不到模块“angularfire2/firestore”
- docker - dotnet core microservices 实际开发过程,给新手一个说明
- java - 如何在四人连线游戏中表达棋盘上的玩家