机器学习第二章模型评估与选择笔记(前篇)

  之前听吴恩达机器学习课程视频的时候,是先讲完一些常用的学习算法,然后再来谈及模型评估与选择这一部分,而西瓜书却刚好相反,一上来就先讲这一部分,周老师大概是觉得这一部分太重要了,上来就告诉你这部九阳神功最核心的心法。防止遗忘,于是还是记录与摘抄一下。

机器学习第二章模型评估与选择笔记(前篇)

知识点归纳
一、经验误差与过拟合

【分类】:对是离散值的结果进行预测。

【回归】:对是连续值的结果进行预测。

分类和回归属于监督学习。

【错误率】:分类错误的样本数占样本总数的比例。

eg:m个样本中有a个样本分类错误,则错误率 E=a/m

【精度】:分类正确的样本数占样本总数的比例。即:精度=1-错误率。

eg:m个样本中有m-a个样本分类正确,则精度 A=1-E

【误差】:学习器的实际预测输出与样本的真实输出之间的差异。

eg:1000个西瓜中,好瓜有400个,但学习器预测有500个,这之间的差异就是误差。

【训练误差、经验误差】:学习器在训练集上的误差。

值得一提的事,学习器就是在训练集上训练出来的,但实际上在回到训练集上对样本进行结果预测时,仍有误差。(即结果值和标记值不同)

https://www.quora.com/What-is-a-training-and-test-error

Training error is the error that you get when you run the trained model back on the training data. Remember that this data has already been used to train the model and this necessarily doesn’t mean that the model once trained will accurately perform when applied back on the training data itself.

eg:100000个用来得出学习器的西瓜在学习器中进行分类测试,发现有10000个西瓜分类错误。则分类错误率为10%,分类精度为90%

【泛化误差】:学习器在新样本上的误差。

eg:100个新西瓜,使用学习器分类,分类错误的有20个。则分类错误率为20%,精度为80%。

希望:得到泛化误差最小的学习器。

实际能做的:努力使经验误差最小化。

注意:努力使经验误差最小化≠让经验误差达到最小值即训练集的分类错误率为0%。

因为在训练集上表现很好的学习器,泛化能力却并不强。

【过拟合】:学习能力过于强大。学习器把训练样本学得太好,导致将训练样本中自身含有的特点当成所有潜在样本都会具有的一般性质,从而训练后使得泛化性能下降。

eg:100000个用来得出学习器的西瓜都是球形瓜,训练出的决策树判断只有瓜是球形才可能是好瓜,但实际上市场上培养的方形瓜也是好瓜,这就让训练出的决策树在面对方形瓜时的泛化能力变得很差。

【欠拟合】:学习能力底下。对训练样本的一般性质尚未学好。

eg:色泽是判断瓜是否是好瓜的重要标准,但经过训练得到的决策树却没有对色泽进行判断的步骤。


机器学习第二章模型评估与选择笔记(前篇)

所以实际能做的:努力使经验误差最小化,是指在“过拟合”与“欠拟合”之间寻找一种平衡,并尽可能的使学习器在不太过拟合的情况下使得训练集的分类更准确。

任何学习算法都有针对过拟合的措施,但过拟合是无法完全避免的。

【多项式时间(Polynomial time)】:在计算复杂度理论中,指的是一个问题的计算时间m(n)不大于问题大小n的多项式倍数。任何抽象机器都拥有一复杂度类,此类包括可于此机器以多项式时间求解的问题。

【P问题】:指的是能够在多项式的时间里得到解决的问题。

【NP问题】:指的是能够在多项式的时间里验证一个解是否正确的问题。

关于这个上一篇博客有详细的介绍

【证明过拟合无法避免】

1.机器学习面临的是一个NP或更难的问题,即∃NP;

2.有效的算法需在多项式时间内运行完成,即∃P;

3.当可彻底避免过拟合时,通过最小化经验误差就可获得最优解,即P=NP;

4.但实际上P≠NP;

5.过拟合无法避免。

二、评估方法

理想:通过评估学习器的泛化误差,选出泛化误差最小的学习器。

实际:泛化误差只能通过测试求得的测试误差来表现。

【测试误差】:学习器在测试集上的实际预测输出与测试样本的真实输出之间的差异。

【数据集】:一组记录的集合。D={x1,x2,x3…xm}

为了实现测试、表现出学习器的泛化误差从而进行评估,需要在数据集D中产生出训练集S与测试集T,其中测试集应尽可能与训练集互斥。

通过对数据集不同的处理方法,可以分出不同的训练集与测试集,常见的做法有如下三种。

1.留出法

【留出法】:直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S∪T,S∩T=∅。

如上图,不是西瓜,是两个同心圆。其中内圆红色部分为训练集,外环绿色部分为测试集,两部分是两个互斥的集合。

除此之外,留出法还要尽可能的保持数据分布的一致性,要保持样本类别比例相似,从采样的角度看待数据采集的划分过程,保留类别比例的采样方式通常称为“分层采样”。就好比它真是一个西瓜,按甜度将其分为七块,采样时每一块都要按照相同的所占比例去采。这七类数据集的测试集与训练集的比值应是相等的。

机器学习第二章模型评估与选择笔记(前篇)

这是我画的一个简单的示例,如果没有保持数据分布的一致性,将会得出偏差很大的拟合曲线(假设我们正在做的是一个线性回归

单次使用留出法得到的结果往往不稳定可靠,一般采用若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。

总结:

留出法的特点:1.直接划分训练集与测试集、2.训练集和测试集均分层采样、3.随机划分若干次,重复试验取均值

2.交叉验证法

【交叉验证法】:先将数据集D分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk;Di∩Dj=∅(i≠j)。

每个子集Di都尽可能保持数据分布的一致性,即每个子集仍然要进行分层采样。每次用k-1个子集作为训练集,余下的那个子集做测试集。这样可以获得k组“训练/测试集”,最终返回的是k个结果的均值。

与留出法相似,交叉验证法也需要进行多次试验,用不同的划分方法重复p次(但每次还是划分为k组),再取均值。

总结:

交叉验证法得到的结果是均值的均值,即p个“k个结果的均值”的均值,因此交叉验证法又可以叫做p次k折交叉验证。

交叉验证法的特点
1.每个子集都会做测试集、

2、每个子集分层采样、3.单次k折,切换测试集试验取均值、4.k折划分p次,重复试验再取均值

优点:准确;缺点:开销大

3.自助法

【自助法】:对有m个样本的数据集D,按如下方式采样产生数据集D’:每次随机取一个样本拷贝进D’,取m次(有放回取m次)。

按此方法,保证了D’和D的规模一致。但D’虽然也有m个样本,可其中中会出现重复的样本,而D中会存在D’采样没有采到的样本,这些样本就留作测试集。

某样本在m次采样中均不会被采到的概率是: (1-1/m)^m ,取极限可得

由此可知,理论上有36.8%的样本没有出现在在D’之中。

优点:训练集与数据集规模一致;数据集小、难以有效划分训练集和测试集时效果显著;能产生多个不同的训练集;

缺点:改变了训练集的样本分布,引入估计偏差。

三、性能度量

首先重温一遍理想。

理想:通过评估学习器的泛化误差,选出泛化误差最小的学习器。

那么,上一节通过留出法、交叉验证法和自助法得到了可以表现泛化误差的测试误差后,如何选出表现最佳的学习器呢?这就需要对泛化能力有一个评价标准。简单举个例子就是:得到了值,带入标准之中,选出最终结果。

【性能度量】:衡量泛化能力的评价标准。

但实际上的性能度量,还要反映任务需求。在对比不同学习器的能力时,使用不同的性能度量往往会导致不同的评判结果。什么样的学习器是好的,不仅取决于算法数据,还决定于任务需求

预测任务中,评估学习器f的性能,需要将学习器的预测结果f(x)同真实标记y进行比较。

所以现在主要讨论的是监督学习。

机器学习第二章模型评估与选择笔记(前篇)
如图是监督学习的性能度量,其中回归任务的性能度量一般采用均方误差,而分类任务的性能度量多种多样。

1、回归任务的性能度量——均方误差:
公式如下:

E(f;D)=1mi=1m(f(xi)yi)2

知,均方误差是m个离散样本的方差的平均数。

但对于数据分布Ɗ和概率密度p(),均方误差的计算公式如下:

E(f;D)=xD(f(x)y)2p(x)dx

可知,此时样本可以看做非离散样本而是连续样本

性能度量方法:通常,均方误差大的模型性能差,均方误差小的模型性能好。

均方误差反应的是回归任务模型判断正确与否的能力。

2、分类任务的性能度量1——错误率与精度

错误率:分类错误的样本占样本总数的比例。

精度:分类正确的样本占样本总数的比例。

E(f;D)=1mi=1mI(f(xi)yi)

错误率是m个离散样本指数函数和的平均数。


acc(f;d)=1mi=1mI(f(xi)=yi)=1E(f;D)

精度与错误率相同,也是m个离散样本指数函数和的平均数,但两者的指数函数不同。

但对于数据分布Ɗ概率密度p(·),错误率和精度的计算公式如下:

E(f;D)=xDI(f(x)y)p(x)dx

acc(f;D)=xDI(f(x)=y)p(x)dx=1E(f;D)

可知,此时样本可以看做非离散样本而是连续样本。

性能度量方法:通常,错误率低精度高的模型性能好,错误率高精度低的模型性能差。

错误率与精度反应的是分类任务模型判断正确与否的能力。

关于PR以及后面的ROC AUC 等放在后面的博客中。


主要参考博客:
https://zhuanlan.zhihu.com/p/28448682
以及西瓜书