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)。
1643

被折叠的 条评论
为什么被折叠?



