1 HoldOut交叉验证
训练集拆分成训练集和验证集
训练集训练模型,验证集选择模型(选择好的模型可以用训练集+验证集再训练一次)
不能再用测试集返回来训练模型!(这样可能导致模型过拟合,反而不准)
2.1 优缺点
2.1.1 优点
- 快速执行
- 因为我们必须将数据集拆分为训练集和验证集一次,并且模型将在训练集上仅构建一次,因此可以快速执行
2.1.2 缺点
- 不适合不平衡数据集
- 假设我们有一个不平衡数据集,它具有“0”类和“1”类。假设 80% 的数据属于“0”类,其余 20% 的数据属于“1”类。
- 在训练集大小为 80%,测试数据大小为数据集的 20% 的情况下进行训练-测试分割。可能会发生“0”类的所有 80% 数据都在训练集中,而“1”类的所有数据都在测试集中。
- 所以我们的模型不能很好地概括我们的测试数据,因为它之前没有看到过“1”类的数据;
2 n折交叉验证
将数据集拆成n份,一份验证集,n-1份训练集 选择平均误差最小的
2.1 优缺点
2.1.1 优点
整个数据集既用作训练集又用作验证集。
2.1.2 缺点
- 不用于不平衡的数据集:
- 和前面HoldOut一样,在 K-Fold 验证的情况下也可能发生训练集的所有样本都没有样本形式类“1”,并且只有 类“0”
- 不适合时间序列数据:
- 对于时间序列数据,样本的顺序很重要。但是在 K 折交叉验证中,样本是按随机顺序选择的。
3 分层 K 折交叉验证
- K-Fold 交叉验证的增强版本,主要用于不平衡的数据集
- 每个折叠将具有与整个数据集中相同的目标变量实例比率
3.1 优缺点
3.1.1 优点
- 对于不平衡数据非常有效:
- 分层交叉验证中的每个折叠都会以与整个数据集中相同的比率表示所有类别的数据。
3.1.2 缺点
- 不适合时间序列数据:
- 对于时间序列数据,样本的顺序很重要。但是在分层交叉验证中,样本是按随机顺序选择的。
4 Leave P Out 交叉验证
- Leave P Out 交叉验证是一种详尽的交叉验证技术,其中 p 样本用作验证集,剩余的 n-p 样本用作训练集。
- 重复这个过程,直到所有样本都被用作验证集过
4.1 优缺点
4.1.1 优点
-
所有数据样本都用作训练和验证样本。
4.1.2 缺点
- 计算时间长:
- 由于上述技术会不断重复,直到所有样本都用作验证集,因此计算时间会更长;
- 不适合不平衡数据集:
- 与 K 折交叉验证相同。‘
5 留一交叉验证
- 1 个样本点用作验证集,其余 n-1 个样本用作训练集
- 与使用 p=1 的 LeavePOut 交叉验证相同
6 蒙特卡洛交叉验证(Shuffle Split交叉验证)
- 数据集被随机划分为训练集和验证集,重复指定的次数n
7 时间序列交叉验证
- 在时间序列数据的情况下,我们不能选择随机样本并将它们分配给训练集或验证集,因为使用未来数据中的值来预测过去数据的值是没有意义的。
- 由于数据的顺序对于时间序列相关问题非常重要,所以我们根据时间将数据拆分为训练集和验证集,也称为“前向链”方法或滚动交叉验证。
-
从一小部分数据作为训练集开始。基于该集合,我们预测稍后的数据点,然后检查准确性。
-
然后将预测样本作为下一个训练数据集的一部分包括在内,并对后续样本进行预测