一、交叉验证(Cross-Validation)详解
备忘
核心概念
交叉验证是一种统计学方法,它的核心思想是重复使用有限的数据集,通过多次不同的数据划分来获得更可靠的模型评估结果。
最常见的交叉验证类型
1. k折交叉验证(k-Fold Cross-Validation)
这是最常用的交叉验证方法,流程如下:
特点:
- 通常k=5或10
- 每个样本都会恰好有一次在测试集中
- 提供模型性能的稳定估计
2. 分层k折交叉验证(Stratified k-Fold)
在k折基础上,保持每个折中类别比例与原始数据集一致,特别适合不平衡数据集。
3. 留一法交叉验证(Leave-One-Out, LOO)
极端情况下的k折交叉验证,其中k等于样本数量:
- 每次用一个样本作为测试集
- 其余所有样本作为训练集
- 计算量大但偏差小
4. 留P法交叉验证(Leave-P-Out)
每次留下P个样本作为测试集,适合小数据集。
适用场景
适合使用交叉验证:
- ✅ 数据集较小时(<10,000样本)
- ✅ 需要可靠评估模型性能时
- ✅ 比较不同模型的性能时
- ✅ 超参数调优时
可能不需要交叉验证:
- ❌ 极大数据集时(训练一次就很耗时)
- ❌ 在线学习场景
- ❌ 计算资源有限时
二、简单分割(Simple Split)
核心概念
简单分割是最基础的数据划分方法,也称为留出法(Hold-Out Method)。它将数据集一次性随机分割为两个互斥的子集:
工作原理
原始数据集 (100%)
├── 训练集 (70-80%) - 用于模型训练
└── 测试集 (20-30%) - 用于模型评估
优点
- 简单快速:只需一次分割
- 计算高效:只需训练一次模型
- 易于实现:代码简单明了
缺点
- 评估方差大:单次分割结果可能不具有代表性
- 数据浪费:测试集数据不用于训练
- 可能产生偏差:特别是小数据集时
三、项目折叠验证(Project Fold Validation)
核心概念
项目折叠验证是一种特殊的交叉验证方法,基于项目ID进行数据划分,确保同一个项目的所有样本要么全在训练集,要么全在测试集。
工作原理
假设有4个项目:P1, P2, P3, P4
迭代1: 训练集 = [P2, P3, P4], 测试集 = [P1]
迭代2: 训练集 = [P1, P3, P4], 测试集 = [P2]
迭代3: 训练集 = [P1, P2, P4], 测试集 = [P3]
迭代4: 训练集 = [P1, P2, P3], 测试集 = [P4]
优点
- 现实性:模拟真实部署场景(在新项目上的表现)
- 避免数据泄露:同一项目的样本不会同时出现在训练和测试集
- 评估泛化能力:真正测试模型对未知项目的适应性
缺点
- 计算成本高:需要训练多个模型
- 可能不平衡:某些项目样本数可能很少
6474

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



