上海大学 机器学习 · 研究生 第 3 讲 模型评估与选择 https://kaizhao.net/teaching/shu-ml-grad
第 3 讲

模型评估与选择

评价指标、验证与交叉验证
训练确定参数 · 验证选择模型 · 测试评价定型结果

训练优化与泛化评价

房价模型:历史成交记录 → 新房屋预测

训练误差
已用样本上的平均损失
$$\widehat R_{S_{\rm train}}(h)$$
期望风险
目标分布上的平均损失
$$R(h)=\mathbb E[\ell(h(x),y)]$$

回归指标:预测值与真实值的距离

房屋 1房屋 2房屋 3 总价(万元) 100 → 110120 → 110130 → 160
● 真实值◆ 模型预测

平均绝对误差 Mean Absolute Error, MAE

$$\operatorname{MAE}=\frac1m\sum_{i=1}^m|h(x_i)-y_i|=\frac{10+10+30}{3}\approx16.7$$

均方误差 Mean Squared Error, MSE

$$\operatorname{MSE}=\frac1m\sum_{i=1}^m(h(x_i)-y_i)^2=\frac{100+100+900}{3}\approx366.7$$
平方误差对较大的预测偏差给予更高权重。

人工构造预测;MAE 单位为万元,MSE 单位为万元²。$m$ 是当前评估集的样本数。

分类指标:混淆矩阵

垃圾邮件为正类,正常邮件为负类。

真实类别 ↓ / 预测 →垃圾正常
垃圾正确拦截 8
真阳性 · true positive · TP
漏拦 2
假阴性 · false negative · FN
正常误拦 4
假阳性 · false positive · FP
正确放行 86
真阴性 · true negative · TN

准确率 accuracy

$$\frac{\mathrm{TP}+\mathrm{TN}}{m}=\frac{8+86}{100}=94\%$$

全部样本中,预测正确的比例。

召回率 recall

$$\frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}=\frac{8}{8+2}=80\%$$

实际正类中,被正确找出的比例。

$\displaystyle F_1=\frac{2\,\mathrm{Precision}\cdot\mathrm{Recall}}{\mathrm{Precision}+\mathrm{Recall}} =\frac{2\mathrm{TP}}{2\mathrm{TP}+\mathrm{FP}+\mathrm{FN}} =\frac{16}{22}\approx72.7\%$
Recall Precision

Optimizing the F-Measure for Threshold-Free Salient Object Detection
Kai Zhao et al. · ICCV 2019

查准率与召回率

查准率 precision

拦下来的邮件中,多少真是垃圾?

$$P=\frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FP}}=\frac8{8+4}=66.7\%$$
分母:全部预测为垃圾的邮件

召回率 recall · 亦称查全率

真正的垃圾邮件中,拦住了多少?

$$R=\frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}=\frac8{8+2}=80\%$$
分母:全部真实垃圾邮件
$$F_1=\frac{2PR}{P+R}=\frac{2\mathrm{TP}}{2\mathrm{TP}+\mathrm{FP}+\mathrm{FN}}=\frac{16}{22}\approx72.7\%$$

分类阈值与两种错误

邮件内容 $x$
模型得分 $s(x)$
$s(x)\ge\tau$ 时拦截

阈值降低

拦下更多邮件
漏拦不增,误拦不减

阈值提高

放行更多邮件
误拦不增,漏拦不减
按任务代价选择指标与阈值,再用独立测试集评价。

参考:scikit-learn:分类与回归指标。固定数据与模型,仅改变阈值。

欠拟合与过拟合

状态训练表现新样本表现
欠拟合
underfitting
主要关系仍未学好误差较大
过拟合
overfitting
适应了样本偶然性误差可能增大

参数与超参数

$$h_d(x)=w_0+w_1x+\cdots+w_dx^d$$
对象含义确定依据
参数 $w_0,\ldots,w_d$具体曲线训练样本
超参数 $d$次数上限验证表现

超参数:hyperparameter。固定 $d$ 后,再从训练样本学习系数。

三种数据职责

训练集training set拟合参数
验证集validation set选择模型
测试集test set评价定型结果
模型定型之前,测试集保持独立。

留出法

独立同分布样本:随机划分,固定职责。

训练 60%
验证 20%
测试 20%
所有候选模型使用同一划分

留出法:hold-out。比例为示例,具体取决于样本量与评估精度。

验证集上的模型选择

给定候选次数$d=0,1,\ldots,8$
分别训练$\hat h_0,\ldots,\hat h_8$
比较验证误差选择 $d^*$
$$d^*=\arg\min_d\;\frac1{n_{\rm val}}\sum_{(x_i,y_i)\in S_{\rm val}}\big(\hat h_d(x_i)-y_i\big)^2$$

均方误差(Mean Squared Error, MSE);$n_{\rm val}$ 为验证样本数。

多项式次数与验证误差

训练 验证 当前模型 生成函数
训练误差验证误差

合成数据:$x\sim U(0,1)$,$y=\sin(2\pi x)+\varepsilon$,$\varepsilon\sim\mathcal N(0,\sigma^2)$;测试集不参与选择。

$k$ 折交叉验证

开发数据等分为 $k$ 份,轮流验证。

三折第 1 份第 2 份第 3 份
第 1 轮验证训练训练
第 2 轮训练验证训练
第 3 轮训练训练验证
$$\text{等大各折:}\quad\bar E_d=\frac1k\sum_{j=1}^{k}E_{d,j}$$

cross-validation;每轮重新拟合,测试集另留。

折分配与各折误差

本轮训练本轮验证本轮模型
各折验证误差平均

60 个合成样本;同一候选比较使用相同折分配,每折独立拟合。

每一折中的预处理

$$\tilde x=\frac{x-\mu_j}{s_j}\qquad \mu_j,s_j\text{ 仅由第 }j\text{ 轮训练部分估计}$$
先划分本轮训练 / 验证
训练部分估计均值、尺度、模型
验证部分应用变换与预测

数据泄漏 data leakage

进入建模的信息对应约束
全体样本的预处理统计量每折内部估计
成交后才知道的属性预测时已经可得
反复查看的测试结果模型定型后评价

面向未来预测的时间划分

房价预测:用已知成交记录预测未来成交。

较早时期训练
较晚时期验证
最近留出时期最终测试
每次预测只使用当时已知的信息。

面向新对象的分组划分

同一房屋的多次记录 → 同一组

按记录随机分
同一房屋可能跨集合
评价可能偏乐观
按房屋整体分
验证房屋未参与训练
评价新房屋预测

上海训练、东京测试的评估边界

测试来源评价范围
上海房屋上海目标分布
东京房屋东京目标分布
分布偏移:特征分布与定价关系都可能变化。

distribution shift;先统一特征、单位与价格口径。

模型定型与最终测试

确定完整方案特征、预处理、超参数
开发数据重训训练集 + 验证集
独立测试按预定指标报告
测试反馈一旦用于改模型,便成为开发信息。

学习曲线 learning curve

训练误差验证误差
观察检查方向
两者均高表达能力、优化
差距较大样本量、复杂度

合成数据;固定次数,改变训练量。各训练量重复 6 次,取均值。

评估流程小结

  1. 训练拟合,验证选择,测试评价
  2. 预处理纳入每折训练
  3. 数据划分对应应用对象与时间

阅读材料

周志华《机器学习》
第 2 章 §2.1–2.3:过拟合、评估方法、性能度量
Stanford CS229 · Andrew Ng
Regularization and model selection,§1