本篇文章用于梳理“西瓜书”——第2章 模型评估和选择(上)的要点内容,主要是自己的主观想法和理解。文章记录目的主要用于后续的复习和回顾,如有错误,请君不吝告知,不胜感激。
开始整活,加油ヾ(◍°∇°◍)ノ゙
误差
"学习器"目的: 通过不断的学习,从训练样本中尽可能学出适用于All潜在样本的"普遍规律", 进而实现对新样本具有更好的泛化能力
拟合
学习算法在数据集 D D D上进行学习的过程中,学习器对数据特征的适应性称为“拟合”程度,但存在两种极端情况,有:过拟合、欠拟合
过拟合: 学得模型把训练集自身的一些特性当作为All潜在样本都会具有的一般性质
欠拟合: 学习器尚未学好训练集中能表示All潜在样本的一般性质
main原因: 学习器的学习能力低下而造成的
解决方式: 具体学习算法具体分析
① 决策树学习算法中可以扩展分支进行解决
② 神经网络学习中通过增加学习的epoches
模型选择
虽然在模型选择过程中无法直接获得"泛化误差",但我们可以从数据集中划分一部分样本作为测试集,然后使用测试集上的“测试误差"来间接近似"泛化误差”
注意:
① 测试集中测试样本same服从"独立同分布"
② 测试集尽可能与训练集互斥,保证学得模型具有很好的泛化能力,即"泛化误差"Very Small❗️
"留出法"解释: 直接将**数据集 D D D**划分为互斥的两个集合,其中训练集为 S S S,测试集为 T T T
注意:
① 训练/测试集的划分要尽可能保证数据分布的一致性
⚠️目的: 避免因“数据划分而引入的额外误差”对最终结果产生影响,即影响模型评估的性能
② 采用"随机划分、重复实验取平均"策略
⚠️原因: 使用单次留出法进行样本划分 ,仍然存在多种采样方式,导致评估结果不稳定、不可靠
⚠️"策略"解释: 对数据集 D D D进行若干次随机采样(均满足"分层采样"),重复实验,然后实验结果进行"平均",得出"留出法"结果
补充知识点:
Q: 希望评估数据集 D D D训练出的模型(即,目的模型),采用"留出法"划分,有:
A: 没有完美解决方法,常见做法是训练/测试划分比例为2:1或者4:1
"交叉验证法"解释: 将数据集 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折交叉验证
留一法: k k k折交叉验证的特例,划分的子集数 k = k= k= 数据集 D D D的Size
Q: 能否找寻到一种方法可以:减少训练样本规模不同造成的影响以及能较高的进行实验估计呢❓
“自助法"解释: 本质就是"自助采样”
自助采样: 随机从数据集 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′中
使用:
使用场景: 数据集较小、难以有效划分训练/测试集这种场景;而数据量充足时,仍然使用"留用法"和"交叉验证法"比较好
缺点: "自助法"划分数据过程中,改变初始数据集中类别的分布,产生模型估计偏差,影响模型的选择
衔接"绪论部分"中利用学习过程获得模型,引出误差和拟合的概念
提出使用“测试误差”来近似“泛化误差”,然后考虑不同的训练/测试划分方式,包括:留出法、交叉验证法、自助法等
模型选择完成后,对选择的模型进行调参获取最优模型,特别注意两点:
① 提交的模型的是全量训练后的模型
② 模型评估和选择(包括:模型确定、调参)中,用于评估测试的数据集常称为"验证集",而实际使用中的"测试集"用来估计模型的泛化能力
㊗️君看后有所收获!欢迎您不吝赐教!
继续加油,冲!