机器学习(西瓜书)学习笔记二模型评估与选择

模型评估与选择

    • 本章概览
    • 经验误差与过拟合
    • 评估方法
      • 留出法
      • 交叉验证法
      • 自助法
      • 调参与最终模型
    • 性能度量
      • 错误率与精度
      • 查准率,查全率与F1
      • ROC与AUC
      • 代价敏感错误率与代价曲线
    • 比较检验
      • 假设检验
      • 交叉验证t检验
      • McNemar检验
      • Friedman检验与Nemenyi后续检验
    • 偏差与方差

本章概览

机器学习(西瓜书)学习笔记二模型评估与选择_第1张图片图片来自b站深度之眼UP

(注:以下图片来自周志华——机器学习)

经验误差与过拟合

  1. 错误率:通常把分类错误的样本数占样本总数的比例称为错误率E=a/m;其中a为错误数,m为样本总数。
  2. 精度:1-E;即1减去错误率
  3. 误差:把学习器(模型)的实际预测输出与样本的真实输出之间的差异称为误差。
  4. 训练误差:学习器在训练集上的误差称为训练误差或经验误差
  5. 泛化误差:学习器在新样本上的误差称为泛化误差
  6. 过拟合:一般由于学习能力过于强大导致
    我们训练学习器的目的实际是希望他在新样本上表现的好,因此要从训练样本中学习出普遍规律,而不能把训练样本学习的太好,以致将训练样本本身的特性也学习进去,并当成所有潜在样本样本的共性,这就导致模型的泛化性能下降(预测新样本效果不好),这种现象就叫做过拟合。
  7. 欠拟合:一般由于学习能力低下导致

过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施,不过,过拟合是无法避免的。(详见p24页)

评估方法

选择模型时可以对候选模型的泛化误差进行评估,选择最小的那个,不过由于泛化误差是通过新样本测试获得,而我们一般不知道新样本是什么样,也就无法直接获得泛化误差,而训练集又由于过拟合不适合作为评判标准,那么如何评估呢?

通常我们可以通过实验测试来对学习器的泛化误差进行评估进而做出选择。为此,需使用一个测试集来测试学习器对新样本的判别能力。然后以测试集上的测试误差作为泛化误差的估计。

为此可以将测试集分为训练集与测试集(和验证集)。需要注意的是测试集应尽可能和训练集互斥(即测试样本尽可能不在训练集中出现,未在训练过程中使用过)
(可以这样想,如果测试数据出现在训练数据中,就相当于已经知道了待做问题的答案,对于测试数据已经有了一定的模型纠正,因此用训练过的测试数据再进行测试时就有种继续训练的感觉,导致这个测试误差和训练误差比较像)

下面是三种评估划分方法

留出法

留出法(hold-out)直接将数据集D划分为两个互斥的集合S训练集,T测试集。用测试集T评估测试误差,作为对泛化误差的估计。

  1. 注意一:训练集和测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响(也就是说,不能训练数据全是测试集中的“规则”数据,而测试数据都是“不规则”数据,这就会导致测试误差大,而不符合实际预测)。
    如果从采样角度来看待数据集的划分过程,则保留类别比例的采样方式通常为分层采样
    例:S占80%,T占20%,其中S又有400正例和400反例,T有100正例和100反例。
  2. 注意二:即便已经给定了训练集和测试集的样本比例后仍然存在多种划分方式对初始数据集D进行划分。比如可以将上例的前400正例给S也可以是后400正例给S。因此这些不同互划分也会导致不同的训练/测试集,模型评估也会有差别。

故采用留出法时一般要采用若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。

用留出法需进行数据库记得划分,会导致一个问题,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以内,通常是由人工设定多个参数候选值后产生模型。考虑到计算性能与性能估计,会在参数范围内选取一定步长来不断改变参数。

调参和算法选择没有本质区别。

通常把学得模型在实际中遇到的数据成为测试数据,为了加以区分,模型评估与选择中用于评估测试得数据集常称为“验证集”。(可将训练数据另外划分为训练集和验证集,基于验证集上的性能进行模型选择和调参)

性能度量

对学习器得泛化能力进行评估,不仅要有效可行得实验估计方法,还需要有衡量模型泛化能力得评价标准,这就是“性能度量”。使用不同的性能度量往往导致不同的评判结果,因此模型的“好坏”时是相对的,还要来考虑任务需求。

错误率与精度

分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。

  1. 错误率:通常把分类错误的样本数占样本总数的比例称为错误率E=a/m;其中a为错误数,m为样本总数。
  2. 精度:1-E;即1减去错误率
    机器学习(西瓜书)学习笔记二模型评估与选择_第2张图片

查准率,查全率与F1

由于关心同一问题的角度或考虑方向不同,因此需要不同的性能度量。
因此介绍信的性能度量标准。查准率,查全率与F1。

由于真实情况有正反两种,预测结果也有正反两种,因此两者组合产生如下四种,也就产生了混淆矩阵。
注意:以下的正反是针对预测结果而言,而真假是针对实际数据而言。

  1. 真正例:真实及预测均为正例
  2. 假正例:真实反例,但被预测为正例
  3. 真反例:真实及预测均为反例
  4. 假反例:真实正例,但被预测为反例

机器学习(西瓜书)学习笔记二模型评估与选择_第3张图片
由图示可以直观看出:

  1. 查准率P=真正例 / 所有预测正例
  2. 查全率R=真正例 / 所有实际正例

查准率和查全率往往呈现负相关。
机器学习(西瓜书)学习笔记二模型评估与选择_第4张图片
图中P=R点称为平衡点(Break-Even Point BEP),用BEP衡量不同学习器得到的PR曲线来评定孰优孰劣也过于简单,因此引入F1度量。
机器学习(西瓜书)学习笔记二模型评估与选择_第5张图片
实质是:
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与AUC

很多学习器是为测试样本产生一个是指或概率预测,将此预测值与一个分类阈值进行比较,若大于阈值未正例,反之为反例。因此,我们还可以根据预测值大小对测试样本进行排序,“最可能”是整理的(预测值大)排在前面,“最不可能”是正例(预测值小)排在后面,这样费雷过程相当于在此排队序列中以某个截断点将样本划分为正例部分和反例部分。因此若更重视查全率选择靠后位置截断,更重视查准率,选择靠前位置截断。排序本身的好坏体现了学习器在一般情况下泛化性能的好坏,而ROC曲线则是从这个角度研究学习器泛化性能的有力工具。

ROC全称为“受试者工作特征”,在根据预测结果对样例排序后,逐个讲样例作为正例得到混淆矩阵,然后以横坐标FPR假正例率,纵坐标TPR真正例率绘制曲线。
机器学习(西瓜书)学习笔记二模型评估与选择_第6张图片
TPR=真正例 / 所有真实正例
FPR=假正例 / 所有真实反例

当一个学习器的ROC曲线被另一个完全包住时,可以认为后者性能更优(考虑横坐标固定,结合纵坐标意义考虑优劣,或纵坐标固定,结合横坐标意义考虑优劣)。但若两个曲线发生交叉,则难以判断,若必须比较,则可以考虑ROC去线下的面积,即AUC。(可通过包住情况,推测出AUC大的性能差)

机器学习(西瓜书)学习笔记二模型评估与选择_第7张图片

代价敏感错误率与代价曲线

为权衡不同的类型错误所造成的不同损失,可以为错误赋予“非均等代价”。可以根据人物的领域知识设定一个“代价矩阵”,cost(ij)表示将第类样本预测为第j类样本的代价,一般来说cost(ii)=0,且cost表示的为代价比值而非绝对值。下面是二分类代价矩阵。
机器学习(西瓜书)学习笔记二模型评估与选择_第8张图片
其实,前面介绍的性能度量大都隐式的假设了均等代价。前面介绍的错误率代表的是错误次数,并未考虑不同错误的代价,因此我们希望最小化“总体代价”。
机器学习(西瓜书)学习笔记二模型评估与选择_第9张图片

比较检验

(不会写,写不动了)
在机器学习中的“性能比较”较为复杂。
主要有几个重要因素:

  1. 希望比较的是泛化性能,但通过实验得到的是在测试集上的性能
  2. 算法在测试集上表现出的性能与测试集的选择有很大关系,不同测试集得到的结果往往不同
  3. 很多算法本身具有随机性,即使参数相同,得到的结果也会有不同

因此我们要选择适当的方法对学习器的性能进行检验。

假设检验

“假设检验”中的假设是对学习器泛化错误率分布的某种判断或猜想。

交叉验证t检验

对两个学习器A,B若使用k折交叉验证法得到的测试错误率分别为A1,A2…AK, B1,B2…BK, 其中Ai和Bi是在相同的第i折训练/测试集上得到的结果,则可以用k折交叉验证“成对t检验”来进行比较检验。
机器学习(西瓜书)学习笔记二模型评估与选择_第10张图片
欲进行有效的假设检验,一个重要前提是测试错误率均为泛化错误率的独立采样。然而,通常情况下由于样本有限,在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定程度的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率。为缓解这一问题,可采用“5×2交叉验证”。
机器学习(西瓜书)学习笔记二模型评估与选择_第11张图片

McNemar检验

机器学习(西瓜书)学习笔记二模型评估与选择_第12张图片

Friedman检验与Nemenyi后续检验

前两种检验都是在一个数据集上比较两个算法的性能。如果在一组数据集上对多个算法进行比较,则可采用基于算法排序的Friedman检验。
机器学习(西瓜书)学习笔记二模型评估与选择_第13张图片

偏差与方差

对学习算法除了通过实验估计其泛化性能,人们往往还希望了解它“为什么”具有这样的性能。
“偏差一方差分解”( bias-variance decomposition)是解释学习算法泛化性能的一种重要工具偏差-方差分解试图对学习算法的期望泛化错误率进行拆解。我们知道,算法在不同训练集上学得的结果很可能不同,即便这些训练集是来自同一个分布有可能出现声得对测试样本,令yD为x在数据集中的标记,y为x的真实标记,f(x;D)为训
练集D上学得模型f在上的预测输出。以回归任务为例,学习算法的期望预测为
机器学习(西瓜书)学习笔记二模型评估与选择_第14张图片机器学习(西瓜书)学习笔记二模型评估与选择_第15张图片在这里插入图片描述
回顾偏差、方差、噪声的含义:
偏差(2.40)度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差(2.38)度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声(2.39)则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。偏差一方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。
机器学习(西瓜书)学习笔记二模型评估与选择_第16张图片

你可能感兴趣的:(机器学习笔记,笔记,机器学习)