文章目录
🎄啃"瓜Two"——模型评估和选择(上)
🌟写在最开始
本篇文章用于梳理“西瓜书”——第2章 模型评估和选择(上)的要点内容,主要是自己的主观想法和理解。文章记录目的主要用于后续的复习和回顾,如有错误,请君不吝告知,不胜感激。
💖开始整活,加油💪ヾ(◍°∇°◍)ノ゙
🎅2.1 经验误差和过拟合
💦误差
- "误差"解释: 学得模型(或称为"学习器")的实际预测输出和样本的真实输出间的差异⭐️
- 分类:
- 训练误差: 学习器在训练集上的误差😮
- 泛化误差: 学得模型在新样本上的误差,对于"新样本"理解,狭义上指在数据集 D D D上划分的测试集,广义上指模型当前环境中未采集的数据😮
- 注意: 实际应用场景中,"泛化误差"是无法直接获取,由于新样本的标记是无法事先预知
💘"学习器"目的: 通过不断的学习,从训练样本中尽可能学出适用于All潜在样本的"普遍规律", 进而实现对新样本具有更好的泛化能力
💦拟合
🚲学习算法在数据集 D D D上进行学习的过程中,学习器对数据特征的适应性称为“拟合”程度,但存在两种极端情况,有:过拟合、欠拟合
-
过拟合: 学得模型把训练集自身的一些特性当作为All潜在样本都会具有的一般性质
- main原因: 学习能力过于强大,学到训练样本中不太一般的特性
- 强调点: "过拟合"无法彻底避免,只能"缓解"或者"减弱"过拟合的风险
-
欠拟合: 学习器尚未学好训练集中能表示All潜在样本的一般性质
-
main原因: 学习器的学习能力低下而造成的
-
解决方式: 具体学习算法具体分析
🚩① 决策树学习算法中可以扩展分支进行解决
🚩② 神经网络学习中通过增加学习的epoches
-
-
过拟合、欠拟合的直观性类比:
💦模型选择
- 具体可包含:
- 😎面对于具体的应用场景(或,数据集),进行学习算法的选择
- 😎模型选择后,进行不同的模型参数的选择,进而确定最优模型
- Q: 对于"泛化误差"无法直接获取、"训练误差"过拟合现象,该如何进行模型评估和选择呢❓
🎅2.2 评估方法
- A: 通过实验测试来评估模型的泛化误差,进而选择模型⭐️
💘虽然在模型选择过程中无法直接获得"泛化误差",但我们可以从数据集中划分一部分样本作为测试集,然后使用测试集上的“测试误差"来间接近似"泛化误差”💘
-
注意:
① 测试集中测试样本same服从"独立同分布"🐸
② 测试集尽可能与训练集互斥,保证学得模型具有很好的泛化能力,即"泛化误差"Very Small❗️
- Q: 假设有一个数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) D={(\boldsymbol{x_1}, y_1), (\boldsymbol{x_2}, y_2), ..., (\boldsymbol{x_m}, y_m)} D=(x1,y1),(x2,y2),...,(xm,ym),该如何进行训练集 S S S和测试集 T T T的划分呢❓
🚀2.2.1 留出法🚀
-
"留出法"解释: 直接将**数据集 D D D**划分为互斥的两个集合,其中训练集为 S S S,测试集为 T T T🏃
-
注意:
-
① 训练/测试集的划分要尽可能保证数据分布的一致性
⚠️目的: 避免因“数据划分而引入的额外误差”对最终结果产生影响,即影响模型评估的性能
-
② 采用"随机划分、重复实验取平均"策略
⚠️原因: 使用单次留出法进行样本划分 ,仍然存在多种采样方式,导致评估结果不稳定、不可靠
⚠️"策略"解释: 对数据集 D D D进行若干次随机采样(均满足"分层采样"),重复实验,然后实验结果进行"平均",得出"留出法"结果
-
-
补充知识点:
- 🚩分层采样: 从采样角度看待数据集划分过程,保留类别比例的采样方式称为"分层采样"
-
Q: 希望评估数据集 D D D训练出的模型(即,目的模型),采用"留出法"划分,有:
- ① 训练集 S > S\gt S> 测试集 T T T, 此时学得模型接近于目的模型,但由于 T T T比较小导致评估结果不可靠(理解为,方差大)
- ② 训练集 S < S \lt S< 测试集 T T T, 此时学得模型与目的模型差别比较大(理解为,偏差大),进而降低评估结果的保真性
-
A: 没有完美解决方法,常见做法是训练/测试划分比例为2:1或者4:1🌈
🚀2.2.2交叉验证法🚀
-
"交叉验证法"解释: 将数据集 D D D划分为 k k k个大小相似的互斥子集 D i D_i Di,且子集均从数据集 D D D中采用分层抽样获得
-
进一步说明: 对于所获得子集,使用 k − 1 k-1 k−1个子集作为训练集 S S S,剩余子集作为测试集 T T T,然后进行 k k k次的交叉验证,最后对 k k k次交叉验证结果取平均作为评估结果🌈
-
发现: 交叉验证法得到评估结果的⭐️稳定性和保真性取决于 k k k的取值,因此"交叉验证法"也称为" k k k折交叉验证"
-
注意: 由于交叉验证法所得的 k k k个子集也存在多种划分方式,因此"随机划分、重复实验取平均"策略同样适用于 k k k折交叉验证
- 这点要具体情景具体分析,和硬件设备、数据集Size等因素相关
-
" k k k折交叉验证"的具体示意图:
-
留一法: k k k折交叉验证的特例,划分的子集数 k = k= k= 数据集 D D D的Size
- 优点:
- ① 不需要考虑子集存在多种划分的影响
- ② 学得模型与目的模型很相似
- 缺点:
- 数据集比较大时,算例开销和时间开销过大
- 优点:
-
Q: 能否找寻到一种方法可以:减少训练样本规模不同造成的影响以及能较高的进行实验估计呢❓
🚀2.2.3 自助法🚀
-
“自助法"解释: 本质就是"自助采样”
-
自助采样: 随机从数据集 D D D中挑选一个样本Copy到 D ′ D^{'} D′中,然后将样本放回初始数据集 D D D中,重复 m m m次(表示数据集 D D D的Size),获取 S i z e Size Size为 m m m的数据集 D ′ D^{'} D′,这个过程称为"自助采样",也可以称为"可重复采样"或"有放回采样"
-
数据集 D D D和数据集 D ′ D^{'} D′非重复性比例:
lim m → ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 \lim\limits_{m\rightarrow \infty}(1- \frac{1}{m})^m=\frac{1}{e}\approx0.368 m→∞lim(1−m1)m=e1≈0.368
其中 1 − 1 m 1- \frac{1}{m} 1−m1表示每次采样中样本不被采到的概率,因此初始数据集 D D D中有 36.8 % 36.8\% 36.8%的样本未出现在数据集 D ′ D^{\prime} D′中
-
使用:
- ① 使用数据集 D ′ D^{\prime} D′作为训练集,保证学得模型和目的模型的训练样本规模相同
- ② 使用 D \ D ′ D\backslash D^{\prime} D\D′(注,' \ \backslash \’表示集合减法)作为测试集,测试结果称为"外包估计"
-
使用场景: 数据集较小、难以有效划分训练/测试集这种场景;而数据量充足时,仍然使用"留用法"和"交叉验证法"比较好
-
缺点: "自助法"划分数据过程中,改变初始数据集中类别的分布,产生模型估计偏差,影响模型的选择
🚀2.2.4 调参和最终模型🚀
- 参数调节: 也称为"调参",通过对选择的模型进行参数设定,获取最优的模型,这称为"参数调节"
- 调参方式: 由于很多参数为实数,因此采用跳动策略进行参数调制(即,给参数选定一个范围和变化步长),在将获取的参数分别用于模型的训练,保存最优参数🏃,🐶可能最优参数不在这个跳动策略中,但这是计算策略和性能估计得折中🐶
- 补充说明: 模型评估和选择中,从数据集 D D D中划分"测试集"常称为"验证集"💖
💥写在最后面
-
衔接"绪论部分"中利用学习过程获得模型,引出误差和拟合的概念
-
提出使用“测试误差”来近似“泛化误差”,然后考虑不同的训练/测试划分方式,包括:留出法、交叉验证法、自助法等
-
模型选择完成后,对选择的模型进行调参获取最优模型,特别注意两点:
① 提交的模型的是全量训练后的模型
② 模型评估和选择(包括:模型确定、调参)中,用于评估测试的数据集常称为"验证集",而实际使用中的"测试集"用来估计模型的泛化能力
💝㊗️君看后有所收获!欢迎您不吝赐教!
🎓继续加油,冲!🎓