《机器学习》周志华学习笔记——第二章模型评估与选择
·
第二章 模型评估与选择
错误率:把分类错误的样本数占样本总数的比例
-
错误率=分类错误的样本数/样本总数
-
精度=1-错误率
“误差”:预测输出与样本的真实输出之间的差异
- 训练误差:在训练集上的误差
- 泛化误差:在新样本(测试集)上的误差
拟合:表示模型在训练集和测试集上表现情况
欠拟合:模型在训练集,测试集表现都不好
- 产生原因:模型过于简单
过拟合:在训练集上表示好,测试集表现很差
- 产生原因:模型过于复杂,数据不纯,训练数据太少
模型选择的三个关键问题:
- 如何获得测试结果?→ 评估方法
- 如何评估性能的优劣?→ 性能度量
- 如何判断实质差别?→ 比较检验
评估方式
留出法
核心思想(“一锤子买卖”):将数据集一次性划分为互斥的两部分(或三部分),分别用于训练和评估。
数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S U T,S n T=∅
- 一般2/3到4/5的样本用作训练
- 训练/测试集的划分要尽可能保持数据分布的一致性(采用:分层采样),以避免由于分布的差异引入额外的偏差。
- 一般要采用若干次随机划分,重复实验取平均值的做法。
交叉验证法
核心思想(“轮流坐庄”):将数据分成K份,每份轮流做验证,其余做训练,K次评估取平均。
将数据集D划分为k个大小相同的互斥子集,满足D=D1UD2U…UDk,Di n Dj=∅ (i≠j)
- 每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集
- 这样就有K种训练集/测试集划分的情况,从而可进行k次训练和测试,最终返回k次测试结果的均值。
- 同样地尽可能保持数据分布的一致性,即采用分层抽样的方法获得这些子集。
- 交叉验证法也称“k折交叉验证”,k最常用的取值是10
- 划分为K个子集的过程具有随机性,所以k折交叉验证通常也要重复p次,称为p次k折交叉验证
- 10次10折交叉验证=进行了100次训练/测试
- 特殊地当划分的k个子集的每个子集中只有一个样本时,称为“留一法”,显然,留一法的评估结果比较准确,但对计算机的消耗也是巨大的。
自助法
核心思想(“有放回抽样”):从原始数据集中有放回地随机抽取N个样本组成训练集,未被抽到的样本作为测试集。
- 在初始数据集足够事,留出法和交叉验证法更加常用
- 训练集D’:约63.2%的样本(有重复)
- 测试集(Out-of-Bag, OOB):约36.8%的样本(无重复,从未被抽中)
- 放回:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到
三种方式对比
| 留出法 | 交叉验证法 | 自助法 | |
|---|---|---|---|
| 划分方式 | 一次性随机划分 | 无放回K轮划分 | 有放回随机抽样 |
| 训练集大小 | 通常60%-80% | (K-1)/K · N(约80%当K=5) | N(有重复样本) |
| 测试集大小 | 20%-40% | 1/K · N(约20%当K=5) | ~36.8%(OOB) |
| 训练次数 | 1次 | K次 | B次(通常100+) |
| 数据利用率 | 低(部分数据仅测试) | 高(每个样本都训练K-1次) | 高(训练集仍为N) |
| 评估稳定性 | 低(依赖划分) | 高(多次平均) | 中(依赖抽样随机性) |
| 计算成本 | 低 | 中(K次训练) | 高(B次训练) |
| 适用数据量 | 大数据(十万+) | 中数据(千~万) | 小数据(百级) |
| 典型应用 | 工业部署、深度学习 | 中小模型调参 | 随机森林、Bagging、置信区间 |
调参
算法的参数:一般由人工设定,亦称“超参数”
模型的参数:一般由学习确定
调参过程相似:先产生若干模型,然后基于某种评估方法进行选择参数调得好不好对性能往往对最终性能有关键影响
性能度量
性能度量:衡量模型泛化能力的评价标准
回归任务常采用均方误差
错误率与精度主要用于分类任务
- 错误率:分类错误的样本数占样本总数的比例
- 精度:分类正确的样本数占样本总数的比例
查准率(“准确率”):预测为正的样本中,实际为正的比例
查全率(“召回率”):实际为正的样本中,被预测为正的比例。
F1:查准率和查全率的调和平均数。
ROC曲线:描述的是在不同分类阈值下,TPR和FPR的权衡关系
- 横轴:实际为负的样本中,被错判为正的比例
- 纵轴:实际为正的样本中,被正确找出的比例
AUC
- 随机抽取一个正样本和一个负样本,分类器给正样本打分高于负样本的概率。
- 正样本排在负样本前面的概率(排序能力)。
| 对比维度 | ROC曲线 | PR曲线 |
|---|---|---|
| 横轴 | FPR(假正例率) | Recall(查全率) |
| 纵轴 | TPR(真正例率) | Precision(查准率) |
| 对不平衡的敏感度 | 不敏感(FPR分母含大量负例,变化小) | 敏感(Precision直接受FP影响) |
| 适用场景 | 类别相对平衡,关注整体排序 | 类别极度不平衡,关注正例识别 |
| 优秀模型位置 | 左上角 | 右上角 |
比较检验
假设检验:先假设没差别,再看证据是否足够反驳
交叉验证t检验:减少训练集重叠,同时利用多次重复降低方差。
McNemar检验:只需一次训练! 基于错分样本的列联表,计算成本极低。
| 数据需求 | 训练次数 | 统计量基础 | 核心假设 | |
|---|---|---|---|---|
| 假设检验(通用) | 样本统计量 | - | 分布理论 | 统计量服从特定分布 |
| 交叉验证t检验 | K折性能得分 | K次或10次 | 差值均值/方差 | 差值近似正态 |
| McNemar检验 | 错分样本列联表 | 1次 | 不一致错误计数 | 错分独立,二项分布 |
| 场景 | 推荐方法 | 原因 |
|---|---|---|
| 深度学习模型(训练贵) | McNemar | 只需一次训练 |
| 小数据集(<1000) | 5×2 CV t检验 | 减少训练集重叠,方差估计更稳 |
| 大数据集(>10000) | 校正k折t检验 | 计算效率高,校正后仍保守 |
| 需要效应量 + 显著性 | 交叉验证t检验 | 可得置信区间和Cohen’s d |
更多推荐
所有评论(0)