PS:由于能力有限,本篇阅读笔记可能会有许多理解不够深入的地方,如有错误,还望指正!
所以我们做的一切都是希望得到泛化误差小的学习器
两种极端情况
评估方法的目的:怎样从一堆数据中拿出测试集才公平合理
评估方法的注意点:测试集尽可能与训练集互斥
几种具体方法
留出法
1、直接将数据D划分为两个互斥的集合,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计
2、注意点:训练/测试集的划分要尽可能保持数据分布的一致性(PS:试卷和平常作业中的知识点要一样)所以在切分数据之前,先把数据打乱!
3、例子:在分类任务中至少要保持样本的类别比例相似(PS:至少保证训练集中好瓜 : 坏瓜=1:2,那么测试集中也要1:2)
4、最后:单次使用留出法得到结果不够稳定可靠,一般采用若干次随机划分、重复进行实验评估后取平均值作为评估结果
5、关于测试集和训练集的数量关系问题,书上写最常见做法大约2/3~4/5的样本用于训练,剩余样本用于测试
6、总结:留出法关键在于1、分布一致 2、多次划分
交叉验证法
1、将数据集D划分为k个大小相似的互斥子集,每个子集Di都尽可能保持数据分布一致性,然后每次用k-1个子集作为训练集,余下的那个子集作为测试集,这样就会获得k组训练/测试集(PS:每个数据都有机会作为测试集)
2、通常又称k折交叉验证,k最常用的取值是10(10折交叉验证)。当然,为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终结果为p次k折交叉验证结果的均值,例如10次10折交叉验证得进行100次训练/测试
3、特例:留一法(Leave-One-Out) :即当k=m,它不存在随机划分,因为k=m,m个样本只有唯一的方式划分为m个子集(一个样本一个子集)。但它有缺陷:m过大,计算量会很大(一百万个样本,需要训练一百万个模型)
自助法
1、每次随机从D中挑选一个样本,将其拷贝放入D‘,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍可能被采到。重复m次,得到包含m个样本的数据集D‘(D中一部分样本会在D’中多次出现,而另一部分样本不出现)。
2、样本在m次采样中始终不被采到的概率是(1-1/m)^m,去极限得到:
3、总结:自助法在数据集较小、难以有效划分训练/测试集时很有用(它也能从初始数据集中产生多个不同的训练集),但是自助法产生的数据集改变了初始数据集分布,会引入估计偏差。所以初始数据量足够时,留出法和交叉验证更常用。
引入了验证集的概念,以下深度之眼官方的一幅图,很好理解验证集的作用
所以验证集的作用就是进行模型选择和调参(PS:改善模型,查漏补缺)
性能度量(performance measure):衡量模型泛化能力的评价标准。
1、性能度量反映了任务需求,对比不同模型的能力时,使用不同的性能度量往往导致不同的评判结果,所以模型的好坏是相对的,什么样的模型是好的,不仅取决于算法、数据。还决定于任务需求。
以上是具体的实现,而下面是抽象的实现
对于二分类问题会引入一个分类结果的混淆矩阵【根据真实类别与学习器预测类别的组合划分】,如下图
查准率和查全率是一对矛盾的度量,但我们希望两个都越高越好,所以会出现一个平衡点,所以出现了PR曲线
先引入一个“截断点”的思想:分类过程中截断点将样本分为两部分,前一部分判做正例,后一部分则作反例(前提可以是将样本进行排序,“最可能”在前面,“最不可能”在后面)
而ROC曲线就是从这个角度出发来研究学习器的泛化性能的有力工具
ROC曲线的纵轴是“真正例率”(True Positive Rate,TPR),横轴是“假正例率”(False Positive Rate,FPR),定义如下
TPR往上走–》好瓜
FPR往右走–》坏瓜
比较两个学习器的性能,就需要引入AUC,即ROC曲线下面的面积,面积AUC越大越好!
假设ROC曲线是由坐标为{(x1,y1),(x2,y2)…(xm,ym)}点连接形成,则AUC可估算如下
(PS:其实就是面积公式,可以直接用几何法,x,y是坐标点)
因为ROC是从排序角度出发,所以AUC考虑的是样本预测的排序质量,所以就存在排序误差,排序“损失”定义如下:
因此AUC=1- ζ \zeta ζrank
比较检验目的:先使用某种实验评估方法测得学习器的某个性能度量结果,然后对这些结果进行比较,而这个比较就是比较检验的目的
PS:关于这一节所有的方法主要都是围绕一个思想:构造一个随机变量,看某次实验结果会不会落在假设的小概率区间内
机器学习性能比较的几个重要因素
1、“假设”:是对学习器泛化错误率分布的某种判断或猜想(PS:因为现实中我们不知道泛化错误率,只能获取测试错误率,但两者接近的可能性大,所以可以根据测试错误率估推出泛化错误率)
2、泛化错误率为 ϵ \epsilon ϵ的学习器被测得测试错误率为 ϵ ^ \widehat{\epsilon} ϵ 的概率如下
对k折交叉验证产生的k对测试错误率:
2、引入卡方分布(McNemar检验考虑的变量),公式如下
(PS:其实就是通过反对角线上的数值差的大小来判断)
3、关于McNemar检验思想总结
PS:讨论什么样原因造成泛化误差
以回归任务为例(实数域上连续的值),学习算法的期望预测(也可以简单理解成多次训练结果的平均值):
使用样本数相同的不同训练集产生的方差如下:
所以决定泛化性能由如下三点:
即好的泛化性能,需要使偏差较小(能够充分拟合数据),方差较小(能够使得数据扰动产生的影响小),如下图
《机器学习》周志华著