(注:以下图片来自周志华——机器学习)
过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施,不过,过拟合是无法避免的。(详见p24页)
选择模型时可以对候选模型的泛化误差进行评估,选择最小的那个,不过由于泛化误差是通过新样本测试获得,而我们一般不知道新样本是什么样,也就无法直接获得泛化误差,而训练集又由于过拟合不适合作为评判标准,那么如何评估呢?
通常我们可以通过实验测试来对学习器的泛化误差进行评估进而做出选择。为此,需使用一个测试集来测试学习器对新样本的判别能力。然后以测试集上的测试误差作为泛化误差的估计。
为此可以将测试集分为训练集与测试集(和验证集)。需要注意的是测试集应尽可能和训练集互斥(即测试样本尽可能不在训练集中出现,未在训练过程中使用过)
(可以这样想,如果测试数据出现在训练数据中,就相当于已经知道了待做问题的答案,对于测试数据已经有了一定的模型纠正,因此用训练过的测试数据再进行测试时就有种继续训练的感觉,导致这个测试误差和训练误差比较像)
下面是三种评估划分方法
留出法(hold-out)直接将数据集D划分为两个互斥的集合S训练集,T测试集。用测试集T评估测试误差,作为对泛化误差的估计。
故采用留出法时一般要采用若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。
用留出法需进行数据库记得划分,会导致一个问题,S与T的比例问题。当S过大时,训练出的模型更接近于D的模型,但T较小评估结果不够准确;T过大时,S与D差别较大,被评估模型与D训练出的模型有较大差别。这个问题没有完美方案,一般取2/3~4/5的样本用于训练,剩余样本用于测试。
交叉验证法(cross validation)先将数据集D划分为k个大小相似的互斥子集,每个子集Di都要尽可能的保持数据分布的一致性,即也是分层采样。然后每次都利用k-1个自己的并集作为训练集,剩余一个子集用过测试集。因此可以进行k次训练和测试,最终返回k个测试结果的均值。正因这种特性,交叉验证法的评估结果的稳定性和保真性很大程度取决于k的取值,故也称为“k折交叉验证”。k最常用的取值是10,其他也有5,20等。
当数据集D中有m个样本,而k=m时,交叉验证的一个特例——留一法(Leave-One-Out,简称LOO)。由于此时样本划分方式唯一,留一法不受随机样本划分方式的影响;且训练集而每次训练只比数据集D少一个样本,因此留一法在绝大多数情况下被实际评估的模型与期望评估的用D训练出的模型相似,往往被认为结果准确。但由于需进行m次训练,导致算法开销过大,数据集较大时不适合。
前两种方法实际评估的模型所使用的训练集比D小,就必然导致了因训练规模不同而导致的估计偏差(与D实际模型有差别)。
自助法(bootstrapping)直接以自助采样法为基础。对数据集D进行|D|次(数据集中样本的个数,假设为m)放回采样,将得到一个含有m个样本与原数据集D规模一致的新数据集D’。大概率,D中一部分样本会在D’中多次出现,而一部分样本不出现。样本在m次采样中始终不被采到的概率为(1-m)^m,取极限的1/e,约为0.368。
于是我们可以将D’当作训练集,没在D’出现的样本当作测试集。这样的测试结果,也称为“包外估计”。
优缺点:自助法在数据集较小,难以有效划分训练/测试集时很有用,自助法能从初始数据集产生多个不同的训练集,这对集成学习等有极大好处。不过自助法产生的数据集改变了初始数据集的分布,这引入了估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用。
大多数学习算法都有些参数需要设定,参数不同,也会导致模型的性能差别,因此在模型评估与选择的过程中还要进行参数的调整——“调参”。
算法的参数,亦称“超参数”,数目通常在10以内,通常是由人工设定多个参数候选值后产生模型。考虑到计算性能与性能估计,会在参数范围内选取一定步长来不断改变参数。
调参和算法选择没有本质区别。
通常把学得模型在实际中遇到的数据成为测试数据,为了加以区分,模型评估与选择中用于评估测试得数据集常称为“验证集”。(可将训练数据另外划分为训练集和验证集,基于验证集上的性能进行模型选择和调参)
对学习器得泛化能力进行评估,不仅要有效可行得实验估计方法,还需要有衡量模型泛化能力得评价标准,这就是“性能度量”。使用不同的性能度量往往导致不同的评判结果,因此模型的“好坏”时是相对的,还要来考虑任务需求。
分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。
由于关心同一问题的角度或考虑方向不同,因此需要不同的性能度量。
因此介绍信的性能度量标准。查准率,查全率与F1。
由于真实情况有正反两种,预测结果也有正反两种,因此两者组合产生如下四种,也就产生了混淆矩阵。
注意:以下的正反是针对预测结果而言,而真假是针对实际数据而言。
查准率和查全率往往呈现负相关。
图中P=R点称为平衡点(Break-Even Point BEP),用BEP衡量不同学习器得到的PR曲线来评定孰优孰劣也过于简单,因此引入F1度量。
实质是:
1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) 调和平均 1 F β = 1 1 + β 2 ⋅ ( 1 P + β 2 R ) 加权调和平均 \frac{1}{F1}=\frac{1}{2}\cdot \left( \frac{1}{P}+\frac{1}{R} \right) \text{调和平均} \\ \frac{1}{F_{\beta}}=\frac{1}{1+\beta ^2}\cdot \left( \frac{1}{P}+\frac{\beta ^2}{R} \right) \text{加权调和平均} F11=21⋅(P1+R1)调和平均Fβ1=1+β21⋅(P1+Rβ2)加权调和平均
此外还可以将多个二分类混淆矩阵求平均值,或是多分类任务中两两组合得到多个混淆矩阵,综合计算查准率和查全率。
很多学习器是为测试样本产生一个是指或概率预测,将此预测值与一个分类阈值进行比较,若大于阈值未正例,反之为反例。因此,我们还可以根据预测值大小对测试样本进行排序,“最可能”是整理的(预测值大)排在前面,“最不可能”是正例(预测值小)排在后面,这样费雷过程相当于在此排队序列中以某个截断点将样本划分为正例部分和反例部分。因此若更重视查全率选择靠后位置截断,更重视查准率,选择靠前位置截断。排序本身的好坏体现了学习器在一般情况下泛化性能的好坏,而ROC曲线则是从这个角度研究学习器泛化性能的有力工具。
ROC全称为“受试者工作特征”,在根据预测结果对样例排序后,逐个讲样例作为正例得到混淆矩阵,然后以横坐标FPR假正例率,纵坐标TPR真正例率绘制曲线。
TPR=真正例 / 所有真实正例
FPR=假正例 / 所有真实反例
当一个学习器的ROC曲线被另一个完全包住时,可以认为后者性能更优(考虑横坐标固定,结合纵坐标意义考虑优劣,或纵坐标固定,结合横坐标意义考虑优劣)。但若两个曲线发生交叉,则难以判断,若必须比较,则可以考虑ROC去线下的面积,即AUC。(可通过包住情况,推测出AUC大的性能差)
为权衡不同的类型错误所造成的不同损失,可以为错误赋予“非均等代价”。可以根据人物的领域知识设定一个“代价矩阵”,cost(ij)表示将第类样本预测为第j类样本的代价,一般来说cost(ii)=0,且cost表示的为代价比值而非绝对值。下面是二分类代价矩阵。
其实,前面介绍的性能度量大都隐式的假设了均等代价。前面介绍的错误率代表的是错误次数,并未考虑不同错误的代价,因此我们希望最小化“总体代价”。
(不会写,写不动了)
在机器学习中的“性能比较”较为复杂。
主要有几个重要因素:
因此我们要选择适当的方法对学习器的性能进行检验。
“假设检验”中的假设是对学习器泛化错误率分布的某种判断或猜想。
对两个学习器A,B若使用k折交叉验证法得到的测试错误率分别为A1,A2…AK, B1,B2…BK, 其中Ai和Bi是在相同的第i折训练/测试集上得到的结果,则可以用k折交叉验证“成对t检验”来进行比较检验。
欲进行有效的假设检验,一个重要前提是测试错误率均为泛化错误率的独立采样。然而,通常情况下由于样本有限,在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定程度的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率。为缓解这一问题,可采用“5×2交叉验证”。
前两种检验都是在一个数据集上比较两个算法的性能。如果在一组数据集上对多个算法进行比较,则可采用基于算法排序的Friedman检验。
对学习算法除了通过实验估计其泛化性能,人们往往还希望了解它“为什么”具有这样的性能。
“偏差一方差分解”( bias-variance decomposition)是解释学习算法泛化性能的一种重要工具偏差-方差分解试图对学习算法的期望泛化错误率进行拆解。我们知道,算法在不同训练集上学得的结果很可能不同,即便这些训练集是来自同一个分布有可能出现声得对测试样本,令yD为x在数据集中的标记,y为x的真实标记,f(x;D)为训
练集D上学得模型f在上的预测输出。以回归任务为例,学习算法的期望预测为
回顾偏差、方差、噪声的含义:
偏差(2.40)度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差(2.38)度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声(2.39)则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。偏差一方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。