交叉验证:把数据轮着用
MLU-Explain · Cross-Validation · 亚马逊机器学习大学(MLU-Explain)
从「划一个验证集」的毛病讲到 K 折交叉验证与留一法:拖动 K 值,看每一折训练出的回归线和验证误差怎么变,以及 K 大 K 小各有什么代价。
交互实验(可直接投屏)
原作是一个完整的网页应用,下面直接嵌入;屏幕小或要投影时,点「全屏打开实验」更清楚。
动手三步
- 先读「我们此前的做法」:训练集、验证集、测试集各管什么
- 看 K 折轮换示意图,注意测试集自始至终不动
- 拖动 K 值滑块,看每一折的最佳拟合直线和各自的验证误差,以及最后估计出的测试误差
- 读「选 K 值时要注意什么」:为什么实践中常取 5 或 10
课堂怎么用
- 让学生把 K 拖到 2 和 10 各看一次,报出拟合直线的摆动幅度,直观理解「估计的方差」
- 提问「为什么不干脆每次只留一个样本」,引出训练很多次的算力代价
- 强调测试集只用一次这条纪律,联系课程实验里常见的「拿测试集调参」错误
思考题
- K 折和单划一个验证集相比,为什么估计的方差更小?
- K 增大时训练集变大、模型更接近最终模型,那为什么 K 不是越大越好?
- 为什么测试集在整个交叉验证过程中一次都不能碰?
已知限制
- 正文里指向本次未镜像主题的链接仍指向原作站点,课堂断网时点不开
- 演示用的是合成数据上的简单线性回归,误差数值只作示意
原作 MLU-Explain · Cross-Validation(Jared Wilber、Jasper Croome(亚马逊机器学习大学),亚马逊机器学习大学(MLU-Explain)),CC BY-SA 4.0 (文) + MIT-0 (码) 许可(原文),界面已中文化。中文译文与改编内容采用 CC BY-SA 4.0,保留原作署名并注明改动。