自学机器学习探索路|模型评估与选择

周志华:《机器学习》 后续不写了,看得比我写的快多了,自己去买一本书。
误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异成为:误差(error)。定义:
  • 在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。
  • 在测试集上的误差称为测试误差(test error)。
  • 学习器在所有新样本上的误差称为泛化误差(generalization error)
我们希望得到的是在新样本上表现得很好的学习器,即泛化误差小的学习器。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这样在遇到新样本时才能做出正确的判别。然而,当学习器把训练集学得“太
好”的时候,即把一些训练样本的自身特点当做了普遍特征;同时也有学习能力不足的情况,即训练集的基本特征都没有学习出来。定义如下:
  • 学习能力过强,以至于把训练样本所包含的不太一般的特性都学到了,称为:过拟合(overfitting)
  • 学习能太差,训练样本的一般性质尚未学好,称为:欠拟(underfitting)
在过拟合问题中,训练误差十分小,但测试误差教大;在欠拟合问题中,训练误差和测试误差都比较大。目前,欠拟合问题比较容易克服,例如增加迭代次数,增加训练集等,但过拟合问题还没有十分好的解决方案,过拟合是机器学习面临的关键障碍,这一篇写了防止过拟合的部分方法:防止过拟合
评估方法 在现实任务中,我们往往有多种算法可供选择,那么我们应该选择哪一个算法才是最适合的呢?如上所述,我们希望得到的是泛化误差小的学习器,理想的解决方案是对模型的泛化误差进行评估,然后选择泛化误差最小的那个学习器。但是,泛化误差指的是模型在所有新样本上的适用能力,我们无法直接获得泛化误差。因此,通常我们采用一个“测试集”来测试学习器对新样本的判别能力,然后以“测试集”上的“测试误差”作为“泛化误差”的近似。
例子:假如一场期末考试,老师出了十道题来考察,但是考前老师还是就把这十道题给学生做过一次,那么期末考试他肯定考很好,所以这个是不行的,老师应该是考前给学生做过类似的题,考场让学生能举一反三。
训练样本相当于给同学们练习的习题,测试过程则相当于考试。显然,若测试样本被用作训练了,则得到的将是过于”乐观”的估计结果。
训练集与测试集的划分方法 我们希望用一个“测试集”的“测试误差”来作为“泛化误差”的近似,因此我们需要对初始数据集进行有效划分,划分出互斥的“训练集”和“测试集”。下面介绍几种常用的划分方法。
留出法
将数据集D划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,满足D=S∪T且S∩T=?,常见的划分为:大约2/3-4/5的样本用作训练,剩下的用作测试。需要注意的是:训练/测试集的划分要尽可能保持数据分布的一致性,以避免由于分布的差异引入额外的偏差,常见的做法是采取分层抽样。同时,由于划分的随机性,单次的留出法结果往往不够稳定,一般要采用若干次随机划分,重复实验取平均值的做法。
交叉验证法
将数据集D划分为k个大小相同的互斥子集,满足D=D1∪D2∪…∪Dk,Di∩Dj=?(i≠j),同样地尽可能保持数据分布的一致性,即采用分层抽样的方法获得这些子集。交叉验证法的思想是:每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就有K种训练集/测试集划分的情况,从而可进行k次训练和测试,最终返回k次测试结果的均值。交叉验证法也称“k折交叉验证”,k最常用的取值是10,下图给出了10折交叉验证的示意图。
自学机器学习探索路|模型评估与选择
文章图片

与留出法类似,将数据集D划分为K个子集的过程具有随机性,因此K折交叉验证通常也要重复p次,称为p次k折交叉验证,常见的是10次10折交叉验证,即进行了100次训练/测试。特殊地当划的k个子集的每个子集中只有一个样本时,称为“留一法”,显然,留一法的评估结果比较准确,但对计算机的消耗也是巨大的。
自助法
我们希望评估的是用整个D训练出的模型。但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。“自助法”正是解决了这样的问题。
自助法的基本思想是:给定包含m个样本的数据集D,每次随机从D 中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D 中,使得该样本在下次采样时仍有可能被采到。重复执行m 次,就可以得到了包含m个样本的数据集D’。可以得知在m次采样中,样本始终不被采到的概率取极限为
自学机器学习探索路|模型评估与选择
文章图片

这样,通过自助采样,初始样本集D中大约有36.8%的样本没有出现在D’中,于是可以将D’作为训练集,D-D’作为测试集。自助法在数据集较小,难以有效划分训练集/测试集时很有用,但由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。
调参 大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别,这就是通常所说的”参数调节”或简称”调参” 。
是对每个参数选定一个范围和变化步长,例如在 [0 0.2] 范围内以 0.05 为步长,则实际要评估的候选参数值有 个,最终是从这 个候选值中产生选定值。
假定算法有 个参数,每个参数仅考虑 个候选值,这样对每一组训练/测试集就有 53 = 125 个模型需考察。
当选定好模型和调参完成后,我们需要使用初始的数据集D重新训练模型,即让最初划分出来用于评估的测试集也被模型学习,增强模型的学习效果。就如同考试,考完后还需要消化,以增强学习效果。
性能度量 对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需
要有衡量模型泛化能力的评价标准,这就是性能度量(performancemeasure).
着模型的"好坏"是相对的,什么样的模型是好的?不仅取决于算法和数据,还决定于任务需求.
在预测任务中?给定样例集 = {(X1 , Y1) , (X2 的), . . . , (Xm, Ym)} 其中饥
是示例 Xi 的真实标记.要评估学习器 的性能,就要把学习器预测结果 I(x)
与真实标记 进行比较。
在回归任务中,即预测连续值的问题,最常用的性能度量是“均方误差”(mean squared error),很多的经典算法都是采用了MSE作为评价函数。
回归任务最常用的性能度量是"均方误差" (mean squared error) :
自学机器学习探索路|模型评估与选择
文章图片

错误率和精度
错误率和精度是什么?这是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务.错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例.对样例集类错误率定义为:
自学机器学习探索路|模型评估与选择
文章图片

精度则定义为:
自学机器学习探索路|模型评估与选择
文章图片

查准率、查全率与Fl
错误率和精度虽然常用,但不能满足所有的需求,例如:在推荐系统中,我们只关心推送给用户的内容用户是否感兴趣(即查准率),或者说所有用户感兴趣的内容我们推送出来了多少(即查全率)。因此,使用查准/查全率更适合描述这类问题。
对于二分类问题,,可将样例根据其真实类别与学习器预测类别的组合划
分为真正例(true positive) 、假正例 (false positive) 、真反倒(true negative)
假反例 (false negative) 四种情形分类,,令 TP FP TN FN 分别表示其对应的样例数,则显然有 TP+FP+TN+FN=样例总数结,果的"泪淆矩阵" (co usion matrix) 如表所示:
自学机器学习探索路|模型评估与选择
文章图片

查准率 与查全率 分别定义为:
自学机器学习探索路|模型评估与选择
文章图片

查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往
偏低; 而查全率高时,查准率往往偏低。“P-R曲线”正是描述查准/查全率变化的曲线,P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作;
自学机器学习探索路|模型评估与选择
文章图片

P-R曲线如何评估呢?若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。
BEP 还是过于简化了些,更常用的是 F1 度量:
自学机器学习探索路|模型评估与选择
文章图片

在一些应用中,对查准率和查全率的重视程度有所不同.例如在商品推荐
系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要; 而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要 F1 度量的一般形式 --F?’ 能让我们表达出对查准率/查全率的不同偏好,它定义为
自学机器学习探索路|模型评估与选择
文章图片

其中 ?>O 度量了查全率对查准率的相对重要性, ? = 1 时退化为标准的 F1; ?> 时查全率有更大影响 ? < 时查准率有更大影响.
【自学机器学习探索路|模型评估与选择】很多时候我们有多个二分类混淆矩阵,例如进行多次训练/测试,每次得到
一个混淆矩阵; 或是在多个数据集上进行训练/测试,希望估计算法的"全局"
性能; 甚或是执行多分类任务,每两两类别的组合都对应一个混淆矩阵,总之,我们希望在 个二分类混淆矩阵上综合考察查准率和查全率。
一种直接的做法是先在各混淆矩阵上分别计算出查准率和查全率,记为(Pl, R2) ,“P2,R3’…(Pn, Rn)再计算平均值,这样就得到"宏查准率” (m ro-P) “宏查全率” (macro-R) ) ,以及相应的"宏F1" (macro-F1):
自学机器学习探索路|模型评估与选择
文章图片

还可先将各泪淆矩阵的对应元素进行平均,得到 TP FP TN FN
平均值,分别记为 自学机器学习探索路|模型评估与选择
文章图片

再基于这些平均值计算出"微查准"(micrE P) “徽查全率” (micro-R) 和"微F1" (micro-F1)
自学机器学习探索路|模型评估与选择
文章图片

ROC AUC

    推荐阅读