美文网首页
模型评估与选择

模型评估与选择

作者: cornbig | 来源:发表于2020-12-16 11:54 被阅读0次

1. 数据集划分

1.1 留出法(hold - out):直接将数据集D划分成两个互斥的集合,训练集S、测试集T,即 D = S\cup TS \cap T = \phi  ,T来评估测试误差,作为泛化误差的估计。常用的方法是2/3~4/5的样本用于训练,剩余的用于测试。

EX :D中包含1000个样本,S为700,T为300,T上有90个样本分类错误,则错误率为(90/300)*100% = 30%,精度为1-30% = 70%。

1.2 交叉验证法(cross validation) 先将数据集D划分成k个大小相似的互斥子集,即D = D_{1} \cup  D_{2}\cup  ...  D_{k}D_{i} \cap D_{j} = \phi (i \neq j) ,每个子集D_{i} 都尽可能保持数据分布的一致性,从D中通过分层采样得到,然后每次k-1个子集的并集作为训练集,余下的子集作为测试集;这样可以获得k组训练/测试集,从而进行k次训练和测试,最终返回k个结果的均值。显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为“k折交叉验证”(k - fold cross validation),k通常取值是10, 其他常用为5,20等。

与留出法类似,数据集D划分为k个子集同样存在多种划分方式,为减少因样本划分不同而引入的差别,k折交叉验证通常随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值,常见的有“10次10折交叉验证”

“留一法”(Leave - One - out, LOO)假定数据集D中包含m个样本,令k = m。显然LOO不受随机样本划分的影响,因为m个样本只有唯一的方式划分为m个子集--每个子集包含一个样本,LOO的评估结果比较准确,缺点是计算量比较大。

1.3 自助法(Boostrapping)直接以自主采样(bootstrap sampling)为基础,包含m个样本的数据集D,对它进行采样产生数据集D^* : 每次随机从D中挑选出一个样本,将其拷贝放入D^* ,然后再将该样本放回初始数据集D中,使得该样本在一次采样时仍有可能被采到;重复m次后,就得到包含m个样本的数据集D^* ,这就是bootstrap sampling的结果,显然D中有一部分样本会在D^* 中多次出现,而另一部分样本不出现,做一个简单的估计,样本在m次采样中始终不被采到的概率是{(1-\frac{1}{m} )}^m ,极限得到, \lim\nolimits_{m \to \propto } {(1-\frac{1}{m})^m } = \frac{1}{e} \approx 0.368, 即通过自主采样,初始数据集D中约有36.8%的样本未出现在采样数据集D^* 中,于是我们可将D^* 作为训练集,D\D^*用作测试集;这样实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有1/3的、没在训练集中出现的样本用于测试,这样的测试结果,称为“包外估计”(out - of - bag estimate)

1.4 调参与最终模型

“调参” parameter tuning

训练数据划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

2. 性能度量

在预测任务中,给定样例集D  = {  {(x_{1},  y_{1} ) ,(x_{2},  y_{2} ),...,(x_{m},  y_{m} )  }}, 评估学习器f 的性能,即把学习器预测结果f(x)与真实标记y进行比较。 

回归任务最常用“均方误差” mean squared error E(f;D) = \frac{1}{m} \sum_{{i=1}}^{m} (f(x_{i}) -y_{i})^2,

对于数据分布D和概率密度函数p(.),均方误差可描述为 E(f;D) =\int_{x~D}^{} (f(x)-y)^2p(x)dx

2.1 错误率与精度

错误率和精度是分类任务中最常用的性能度量,适用于二分类与多分类。错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比列,对样本集D, 

分类错误率 E(f;D) = \frac{1}{m}\sum_{i=1}^m II (f(x_{i}\neq y_{i} ))II 指示函数, 真取1 假取0,

精度则为 acc(f;D) = \frac{1}{m} \sum_{i=1}^mII (f(x_{i})=y_{i})  = 1 - E(f;D)

2.2 查准率、查全率与F1

对于二分类问题,可将样本根据其真是类别与学习器预测类别的组合划分为真正例(true positive), 假正例(false positive)、真反例(true negative)、假反例(false negative)四种,令TP、 FP、TN、FN分别表示对应的样例数,有TP + FP + TN + FN = 样例总数。

mnist 任务是否为“5”的混淆矩阵

查准率 P = \frac{TP}{TP + FP} ,查全率 R = \frac{TP}{TP + FN} , P和R是一对矛盾的度量,P高时,R往往偏低, 而R高时,P往往偏低,通常只有在一些简单任务中,才能使查全率和查准率都很高。

以查准率为纵轴、查全率为横轴作图, 得到“查准率-查全率曲线” 建成“P-R曲线”

P-R曲线可以直观地显示出学习器在样本总体上的查全率、查准率,若一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能完全优于前者,图中A优于C。如果两个学习器的P-R曲线发生了交叉,A与B难以一般性断言优劣,这时有一个比较合理的依据是比较P-R曲线下面积的大小, 在一定程度上体现了P和R“双高”的比例。

综合考虑查准率P、查全率R的性能度量

“平衡点”(break-even point ,BEP)它是查准率 = 查全率时的取值,但是BEP过于简化,

更常用F1 度量, F1是基于查准率和查全率的调和平均(harmonic mean)定义:

\frac{1}{F} = \frac{1}{2} \cdot(\frac{1}{P} + \frac{1}{R}  )    , F1 = \frac{2\times P\times R}{P + R}  = \frac{2\times TP}{n + TP -TN} , n 是样例总数

F_{\beta }  = \frac{1}{1+\beta ^2} \cdot (\frac{1}{P} +\frac{\beta ^2}{R} ) , F_{\beta }  是加权调和平均。与算数平均(\frac{P+R}{2} )和几何平均\sqrt{P\times R}  相比,调和平均更重视较小值。

在商品推荐中,为了尽可能少打扰用户,更希望推荐内容是用户感兴趣的,此时查准率更重要;逃犯信息检索更看中查全率。F_{\beta }  = \frac{(1+\beta ^2)\times P\times R}{(\beta ^2 \times P) +R}  , 查准率precision, 查全率 recall.

2.3 ROC 与AUC

受试者工作特征 ROC , 根据学习器的预测结果对样例进行排序,按照顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值, 分别以它们的横、纵坐标作图,即ROC曲线,ROC曲线的纵轴是“真正例率”(True Positive Rate, TPR),横轴是“假正例率”(False Positive Rate, FPR)

TPR = \frac{TP}{TP + FN}  ,FPR = \frac{FP}{TN +FP}

以二分类为例,根据任务的知识领域设定一个“代价矩阵”cost matrix,其中cost_{ij} 表示将第i类样本预测为第j类样本的代价。一般来说,cost_{ii} = 0

3. 比较检验

几种常用的机器学习性能比较方法,默认以错误率为性能度量,\epsilon

3.1 假设检验

现实任务中我们并不知道学习器的泛化错误率,只能获知其测试错误率\hat{\epsilon } , 泛化错误率与测试错误率未必相同,可以通过测试错误率推出泛化错误率的分布。泛化错误率为\epsilon  的学习器在一个样本上犯错的概率是\epsilon ;测试错误率\hat{\epsilon }  表示m个测试样本中恰有\hat{\epsilon } \times m个被误分类,假定测试样本是从样本总体分布中独立采样而得,

3.2 交叉验证t检验

对于学习器A和B, 若使用k折交叉验证法得到的测试错误率分别为\epsilon _{1}^A, \epsilon _{2}^A,... ,\epsilon _{k}^A\epsilon _{1}^B, \epsilon _{2}^B,... ,\epsilon _{k}^B, 其中 \epsilon _{i}^A \epsilon _{i}^B 是在相同的第i折训练/测试集上的结果,则可同k折交叉验证“成对t检验”(paired t-tests)来进行比较检验,这里的基本思想是,若两个学习器性能相同,则\epsilon _{i}^A  = \epsilon _{i}^B

***t 检验:假定我们有k个测试错误率, \hat{\epsilon_{1}} ,\hat{\epsilon_{2}},...,\hat{\epsilon_{k}}  , 则平均测试错误率\mu  和方差\sigma ^2为:

\mu  = \frac{1}{k} \sum_{i=1}^{k} \hat{\epsilon_{i}}  , \sigma ^2 = \frac{1}{k-1}\sum_{i=1}^{k}(\hat{\epsilon_{i}}- \mu  )^2  

考虑k个测试错误率可看作泛化错误率\epsilon _{0} 的独立采样,则变量

\tau _{t} = \frac{\sqrt{k}(\mu -\epsilon _{0} )}{\sigma }

t分布示意图(k=10),对假设“\mu = \epsilon _{0} ”和显著度\alpha , 可以计算当测试错误率均值为\epsilon _{0} 时,在1-\alpha 概率内能观测到的最大错误率,即临界值。这里考虑双边假设。若\tau _{t} 位于[t_{-\frac{\alpha }{2} }, t_{\frac{\alpha }{2} }]内,则不能拒绝假设“\mu = \epsilon _{0} ”,置信度为1-\alpha ;否则可拒绝该假设,即在该显著度下可认为泛化错误率与\epsilon _{0} 有显著不同。

“交叉验证t检验”,具体来说,对k折交叉验证产生的k对测试错误率,先对每对结果求差\Delta _{i}  = \epsilon _{i}^A -  \epsilon _{i}^B根据差值\Delta _{1},\Delta _{2},..., \Delta _{k}      来对“学习器A和B性能相同”假设做t检验,计算出差值的均值\mu 和方差\sigma ^2,在显著度\alpha 下,若变量\tau _{t} = |\frac{\sqrt{k}\mu  }{\sigma } |  小于临界值 t_{\frac{\alpha }{2} ,k-1} ,则假设不能被拒绝,认为两个学习器的性能没有显著差别,否则两个学习器的性能有显著差别,且平均误差率较小的学习器性能更优,这里t_{\frac{\alpha }{2} ,k-1} 是自由度为k-1t分布上尾部累积分布为\frac{\alpha }{2} 的临界值。

有效的假设检验,一个重要前提是测试错误率均为泛化错误率的独立采样,然而通常情况下,在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定程度的重叠,这样使得测试错误率实际上并不独立,会导致过高估计假设成立的概率。采用“5X2交叉验证”, 5次2折交叉验证,在每次2折交叉验证之前将随机数据打乱,使得5次交叉验证中的数据划分不重复,对两个学习器A和B,第i次2折交叉验证将产生两对测试错误率,分别对他们求差,得到第1折的差值\Delta _{i}^1 和第2折的差值\Delta _{i}^2 , 为缓解测试错误率的非独立性,仅计算第1次2折交叉验证的两个结果的平均值 \mu = 0.5(\Delta _{i}^1-\Delta _{i}^2 ),但对每次两折的结果都计算出其方差\sigma _{i}^2 = (\Delta _{i}^1-\mu )^2  + (\Delta _{i}^2-\mu )^2 , 变量\tau _{t}  = \frac{\mu }{\sqrt{0.2\sum_{i=1}^5 \sigma _{i}^2  } } ,服从自由度为5的t分布,其双边检验的临界值t_{\frac{\alpha }{2},5 }  当\alpha = 0.05时为2.5706, \alpha = 0.1时为2.0150.

4.偏差与方差

“偏差-方差分解”bias -variance decomposition 是解释学习算法泛化性能的一种重要工具。对测试样本x,y_{D} 为x在数据集中的标记,y为x的真实标记,f(x;D)为训练集D学得模型f在x上的预测输出。

回归任务中,学习算法的期望预测为\tilde{f(x)} = E_{D}[f(x;D)]  ,

方差 var(x) = E_{D}[(f(x;D) - \tilde{f(x)} )^2]

噪声 \varepsilon ^2 = E_{D}[(y_{D} - y )^2]

期望输出与真实标记的差别称为偏差(bias){bias}^2 (x) = (\tilde{f(x)} - y )^2,

对期望泛化误差进行分解 E(f;D) = E_{D}[(f(x;D)-y_{D} )^2]  = {bias}^2 (x)  + var(x) + \varepsilon ^2

偏差度量了学习算法的期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力。

方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

噪声则表达了当前任务上任何学习算法所能达到的期望泛化误差的下届,即刻画了学习问题本身的难度。

偏差-方差分解说明,泛化性能是由学习算法的能力,数据的充分性和学习任务本身的难度所共同决定的,给定学习任务,为了取得好的泛化性能,则需使偏差较小,能够充分拟合数据。并且使方差较小,使得数据扰动产生的影响小。

一般来说方差和偏差是有冲突的,称为bias-variance dilemma.训练不足时,bias主导泛化误差率,随着训练程度的加深,学习器的拟合能力增强,训练数据的扰动逐渐被学习器学到,方差逐渐主导泛化误差率。在训练程度充足后,学习器的拟合能力已经非常强,数据发生的轻微扰动会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到,将发生过拟合。

相关文章

  • 西瓜书-模型评估与选择

    模型评估与选择 西瓜书第一章,模型评估与选择.

  • 模型评估与模型选择

    训练误差是模型Y=f(x)关于训练数据集的平均损失 测试误差是模型Y=f(x)关于测试数据集的平均损失 损失函数为...

  • 模型评估与选择

    模型的选择 误差 误差:(Error): 是模型的预测输出值与其真实值之间的差异 训练(Training): 通过...

  • 模型评估与选择

    泛化误差:学习器在新样本上的误差为泛化误差。显然,我们希望得到泛化误差小的学习器。 过拟合:学习器把训练样本学得‘...

  • 模型评估与选择

    一、偏差与方差 设测试样本为,为在数据集中的标签,为的真实标签,为训练集上学习得到的模型,为在上的预测输出。 期望...

  • 模型评估与选择

    过拟合:严重影响泛化能力。过拟合即对训练样本的训练效果太好,导致将训练样本自身特点当成样本都具有的特征,导致泛化能...

  • 模型评估与选择

    1. 数据集划分 1.1 留出法(hold - out):直接将数据集D划分成两个互斥的集合,训练集S、测试集T,...

  • 【百面机器学习-模型评估】

    为什么需要模型评估? 在计算机科学特征时机器学习领域中,对模型的评估至关重要。只有选择与问题相匹配的评估方法...

  • 3.1.1.5 模型评估与选择

    模型评估与选择 原理 《机器学习》周志华 2.1 经验误差与过拟合 通常我们把分类错误的样本数占样本总数的比例称为...

  • 统计学习方法1.4-2.1 笔记

    1.4 模型评估与模型选择 训练误差与测试误差 关于模型的拟合好坏,计算训练集的训练误差进行衡量。关于模型预测的好...

网友评论

      本文标题:模型评估与选择

      本文链接:https://www.haomeiwen.com/subject/hvyngktx.html