本文是自己学习周志华西瓜书第二章的笔记,看的是b站up致敬大神的一起啃书,我是按照书本的结构来学习的,但是up主是按照自己的理解来教的,教的还可以就是需要事先熟悉书本的知识多看几遍有不同的收获
模型评估与选择
经验误差与过拟合
- 错误率:分类错误的样本数占样本总数的比例
- 精度= 1 - 错误率
- 误差:学习器的预测输出与样本的真实输出之间的差异
- 训练误差/经验误差:学习器在训练集上的误差
- 泛化误差:学习器在新样本上的误差
拟合
-
过拟合:最常见的情况是由于学习能力过于强大(是由学习算法和数据内涵共同决定的),可能已经把训练样本自身的特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化能力下降
- 过拟合无法彻底避免,我么所能做的就是减少其风险
-
欠拟合:这是对训练样本的一半性质尚未学好
评估方法(泛化能力)
测试样本需要从样本真实分布中独立同分布采样,训练集和测试集尽可能互斥,即样本尽量不在训练集中出现,未在训练过程中使用过
需要一个测试集来测试学习器对新样本的判别能力,以测试集上的“测试误差”作为泛化误差的近似值
评估方法
-
留出法
-
原理
- 直接将数据集 划分为两个互斥的集合其中一个集合作为训练集S,另一个作为测试集T ,D=S U T ,S∩T=空集,在S上训练出模型后,用 T来评估其测试误差,作为对泛化误差的估计
-
分层采样
-
多次随机划分取均值(2/3~4/5用于训练,其余用于测试)
-
优点
- 最简单也是最直接的验证方法,它就是将数据集随机划分为两个互斥的集合,即训练集和测试集
-
缺点
- 留出法在划分两个集合后,训练模型仅使用了原始数据集的一部分,这会降低评估结果的保真性
- 多种划分方式,比如排序后划分、随机划分等等,在验证集或者测试集上的评估结果和划分方式有关系,需要多次实验,取平均值;
-
-
交叉验证法
-
原理
-
交叉验证的结果的稳定性和保真性在很大程度上取决于k的取值
k值常用10,p次k折验证进行了p×k次训练/测试 -
特例:当k=m时,即留一法,训练集与原始数据集相比至少了一个样本,评估结果往往被认为比较准确,当数据集较大时,训练m个模型计算开销很大,而且留一法结果未必永远比其他评估方法准确
-
优点
- 这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布
-
缺点
- 训练复杂度增加了,因为模型的数量与原始数据样本数量相同,一般在数据缺乏时使用
-
-
自助法
-
原理
-
优点
- 在数据集较小,难以有效划分为训练/测试集时很有用
- 可以从原始数据集中产生多个不同的训练集,对集成学习·有很大好处
-
缺点
- 自助法产生的数据集改变了初始数据集的分布,会引入估计偏差
-
初始数据足够时,留出法和交叉验证法更为常用
-
-
调参与最终模型
- 调整参数难度较大,假设算法有3个参数,每个参数有5个候选值,,这样每一组训/测试集就有5^3=125个模型需考察
- 为了调参会加入一个验证集,训练集训练后产生一个模型,在验证集上验证,调整参数 ,再验证最后在测试集上看结果
性度能量
性度能量:衡量模型泛化能力的评价标准
(模型的好坏取决于数据和算法还取决于任务需求)
一种训练集和一种算法
-
任务描述
-
mean squared error(均方误差)回归任务中最常用性度能量,(均方误差反映的是估计量与被估计量之间的差异程度的一种度量)
-
错误率和精度
-
查准率和查全率
-
混淆矩阵
-
P-R曲线
-
一个二分类问题
-
查准率
-
查全率
-
最优阈值选取
-
平衡点(BEP)查全率=查准率
-
F1度量:是基于P和R的调和平均数
F1=1/2(1/P+1/R) -
Fβ(加权调和平均数):对查准率和查重率的侧重不同
- β=1,退化为F1
- β>1,查全率影响更大
- β<1,查准率影响更大
-
-
-
n个二分类问题
-
方法一:直接在各个混淆矩阵上分别计算出查准率和查全率,再求平均值
-
宏查全率
-
宏查准率
-
宏F1
-
-
方法二:先将各混淆矩阵的对应元素进行平均,得到TP,FP,TN,FN的平均值
-
宏查准率
-
宏查全率
-
宏F1
-
-
-
一种训练集多种算法
-
PR曲线比较模型好坏
- 比较曲线下方的面积大小适合一个曲线完全包裹住另一个曲线
- 平衡点(BEP)查全率=查准率
- F1越大越稳定
- Fβ,增加了对查准率和查全率的权重
-
ROC和AUC
-
因为排序本身的质量好坏·,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏
-
ROC
-
纵轴TPR(真正例率)
-
横轴FPR(假正例率)
-
ROC示例图
- 我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图’就得到了 "ROC 曲线
在这里插入图片描述
- 我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图’就得到了 "ROC 曲线
-
-
AUC
- ROC曲线下的面积,若一个学习器的AUC具有更大的面积则模型具有更好的性能
- ROC曲线下的面积,若一个学习器的AUC具有更大的面积则模型具有更好的性能
-
多种训练集一种算法
-
代价敏感错误率
-
为权衡不同类型错误所导致的不同损失,可为错误赋予“非均等代价”
-
代价敏感错误率
-
-
代价曲线
-
横轴
-
纵轴
- AOC上的每一个点(TPR,FPR)对应代价曲线上的一条直线(0,FPR)和(1,FNR)
-
期望总体代价即为代价曲线所有线段的下界围成的面积
-
-
偏差与方差
- 同一算法不同训练,衡量泛化能力
比较检验(测试集在性能上能保持多大程度上保持真实的性能)
问题
- 通过实验评估我们得到的是测试集上的性能,与真正的泛化性能未必相同
- 测试集·不同可能反应醋出来的性能也不同
- 机器学习算法本身具有一定的随机性,同一个测试集多次运行可能会有不同结果
一个测试集一种算法
-
0-1分布
-
二项分布
-
正态分布
多个测试集一种算法
-
t检验
多个测试集两种算法
-
交叉验证t检验
-
使用k次交叉验证等实验估计方法时,不同轮次会有一定重叠,导致错误率实际上并不独立,会过高估计假设成立概率
-
缓解不同伦次的重叠时采用“5×2交叉验证”
-
一个测试集两个算法
-
McNemar检验
多个测试集和多个算法
-
FriedMan检验(基于排序算法)和Nemenyi后续检验
-
先根据公式算出Tf
-
根据表查到F检验的临界值
- 若Tf值大于F检验临界值则拒绝,“所有性能相同假设”
- 若所有算法性能相同的假设被拒绝,则说明算法性能显著不同,则需要后续检验算法
-
根据Nemenyi后续检验在表中查到qα计算出临界值域CD
- 如果算法之间未超过临界值域,则认为算法之间没有显著差别
- 超过临界值域则说明算法性能有显著差别
-