欢迎来到留一法交叉验证 (Leave-One-Out Cross-Validation, LOOCV)!

你好!如果你正在为 SRM 考试努力,你一定已经知道,我们不能只看模型在训练数据上的表现。我们需要知道它在未见过的数据上的表现如何。在上一节中,我们介绍了“验证集法”(Validation Set Approach)。今天,我们要来认识它更精密、更成熟的“兄弟”:留一法交叉验证 (LOOCV)

如果这听起来有点数学味,别担心!读完这些笔记后,你会发现 LOOCV 其实是一种非常公平、彻底的“测试”模型的方法。让我们开始吧!

什么是 LOOCV?

想象一下你有一个 20 人的班级,你想看看老师预测学生分数的能力。在 LOOCV 中,你会:
1. 让一位学生先离开教室。
2. 让老师根据剩下的 19 位学生进行“学习”。
3. 请老师预测刚刚离开的那位学生的分数。
4. 重复这个过程 20 次,每次都挑选一位不同的学生离开。
5. 将老师在 20 次预测中的误差进行平均。

用统计学的术语来说,如果我们总共有 \( n \) 个观测值,我们使用 \( n-1 \) 个观测值来训练模型,并用 1 个观测值来验证(测试)它。我们将这个过程重复 \( n \) 次。

分步过程

1. 我们将第一个观测值 \( (x_1, y_1) \) 作为验证集。
2. 使用剩下的 \( n-1 \) 个观测值来拟合模型。
3. 预测 \( x_1 \) 的值并计算误差: \( MSE_1 = (y_1 - \hat{y}_1)^2 \)。
4. 对第二个、第三个,一直到第 \( n \) 个观测值重复上述步骤。
5. 最后,将所有这些个别的误差平均起来,得到我们的 LOOCV 估计值:

\( CV_{(n)} = \frac{1}{n} \sum_{i=1}^{n} MSE_i \)

快速回顾:
- 训练集大小: \( n-1 \)
- 验证集大小: 1
- 迭代次数: \( n \)

为什么 LOOCV 比验证集法更好?

你可能还记得,验证集法(将数据 50/50 分割)有两个大缺点,而 LOOCV 正好解决了这两点!

1. 没有随机性: 在验证集法中,结果会根据哪些数据进入训练集或测试集而改变。但在 LOOCV 中,没有随机性。如果你对同一组数据运行两次 LOOCV,你会得到完全相同的答案,因为每一个观测值都恰好有一次机会成为验证点。

2. 偏差较小 (Less Bias): 在验证集法中,我们只用了一半的数据来训练模型。模型通常在数据较少时表现较差,这意味着验证集法倾向于高估测试误差率(这显得比较“悲观”)。由于 LOOCV 使用了几乎所有的数据(\( n-1 \) 个点)来训练,它提供的误差估计会更准确(偏差更小)。

线性模型的“魔法”捷径

你可能会想:“等等,如果我有 10,000 个观测值,难道我真的要拟合模型 10,000 次吗?那岂不是要花掉一辈子!”

你说得对!对于大多数模型来说,LOOCV 的运算成本非常高。然而,对于最小平方法线性回归或多项式回归,有一个“魔法”公式,让你只需拟合一次模型,就能计算出 LOOCV 误差!

\( CV_{(n)} = \frac{1}{n} \sum_{i=1}^{n} \left( \frac{y_i - \hat{y}_i}{1 - h_i} \right)^2 \)

在这个公式中, \( \hat{y}_i \) 是由原始模型(利用*所有*数据拟合)得出的预测值,而 \( h_i \) 是杠杆率 (leverage) 统计量。杠杆率 \( h_i \) 告诉我们一个观测值对其自身的拟合有多大的影响。杠杆率高的观测值会将拟合线“拉向”自己。

重点提示: 这个捷径让线性回归中的 LOOCV 变得跟拟合单一模型一样快!

LOOCV 的优点与缺点

统计学中的每种方法都有权衡。以下是 LOOCV 的“好”与“坏”:

优点:
- 低偏差: 由于我们使用几乎整个数据集进行训练,模型不会因为数据不足而表现失准。
- 稳定性: 无论你运行多少次,结果都相同(没有随机分割的运气成份)。

缺点:
- 高运算成本: 除非你使用线性回归的捷径,否则拟合 \( n \) 次模型是非常慢的。
- 高变异数 (High Variance): 这点比较复杂!因为我们训练的 \( n \) 个模型几乎完全相同(它们共享 \( n-2 \) 个观测值),所以它们的输出是高度相关 (correlated) 的。当我们对高度相关的数值进行平均时,其结果的变异数比平均那些相关性较低的数值要来得。(我们将在下一章将此与 K-fold 交叉验证进行比较)。

你知道吗? 在此背景下,高变异数意味着如果我们使用稍微不同的起始数据集,我们的 LOOCV 误差估计可能会比 K-fold 估计产生更显著的变动。

避免常见错误

错误 1:忘记捷径仅适用于线性模型。 如果你使用的是复杂的方法,例如决策树或支持向量机,你不能使用 \( h_i \) 公式。你必须实实在在地运行模型 \( n \) 次。

错误 2:认为 LOOCV 永远是“最好”的方法。 虽然它偏差较小,但高变异数和高运算成本使得 10-fold 交叉验证在实际应用中通常是更好的选择。把 LOOCV 留在你的工具箱里,专门用在小数据集上吧!

LOOCV 总结

1. 定义: K-fold 交叉验证的特殊情况,其中 \( K = n \)。
2. 程序: 用 \( n-1 \) 个点训练,用 1 个点测试,重复 \( n \) 次,然后取平均值。
3. 优点 1: 相比验证集法,偏差更低。
4. 优点 2: 确定性(分割过程中没有随机运气)。
5. 缺点: 计算可能很慢,且相较于 K-fold CV 具有更高的变异数。
6. 特殊公式: 对于线性回归,利用杠杆率 (\( h_i \)) 捷径可以节省时间。

做得好!你已经掌握了留一法交叉验证的概念。接下来,我们将看看如何透过 K-fold 交叉验证,在验证集法与 LOOCV 之间找到一个平衡点。继续加油,你做得非常棒!