K 折交叉验证详细介绍

K 折交叉验证介绍

K 折交叉验证就是把训练数据平均切成 K 份(folds):

每次取其中的一份做验证集(validation),剩下 K-1 份做训练集(train)。

对 K 次(fold)重复训练与验证,得到 K 组指标(比如 AUC、accuracy、RMSE、R²)。

最后对这些指标取平均值和标准差 —— 这样能更稳健地评估模型性能,减小单次划分或随机初始化带来的偶然性。

优点:比单次 train/val 划分更稳健;能发现模型对数据划分是否敏感(看 std)。
缺点:计算量大(要训练 K 次)。

什么时候选用/替换

分类且样本不平衡:用 StratifiedKFold(保持每个 fold 类别比例)。

时间序列数据:不要用普通 KFold,使用 TimeSeriesSplit(按时间切分,避免数据泄露)。

有分组(每用户多条记录):用 GroupKFold 或 StratifiedGroupKFold。

小样本极小:可以考虑 Leave-One-Out,但更慢且方差高。

超参搜索:用 nested CV(外层评估、内层调参)更稳健但更耗时。

典型的 K 值:K=5 或 K=10 是常用值。
如果计算资源紧张:K=5 足够;若要更稳健且资源许可用 K=10。

实验执行细节

保证无数据泄露:在 fold 内做所有数据预处理(标准化/归一化/特征选择)应只用训练子集的统计量,再应用到验证子集。

固定随机种子:每个 fold 内明确设置随机种子(或 seed+fold),确保可复现(尤其 DataLoader shuffle、weight init)。

使用 StratifiedKFold(分类任务)保持标签比例。

记录每个 fold 的模型(可选):方便后续 ensemble 或诊断。

评估指标:保存 mean ± std,必要时画箱线图或置信区间。

若你的数据有时序性:不要打乱顺序,使用时间窗口验证(TimeSeriesSplit)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值