模型评估与选择

目录

1. 评估方法

1.1 留出法

1.2 交叉验证法

1.3 自助法

2. 性能度量

2.1 错误率与精度

2.2 查准率、查全率与 F1

2.3 ROC 和 AUC

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

3. 比较检验

4. 偏差与方差


        通常把分类错误的样本数占样本总数的比例称为错误率,精度=1-错误率。更一般的,把学习器在训练集上的误差称为训练误差或经验误差,在新样本上的误差称为泛化误差。我们希望得到的是一个泛化误差小的学习器。学习器学习能力过强会导致泛化性能下降,这就是过拟合;反之,如果学习器不足以很好的学习训练样本就会导致欠拟合。过拟合是无法避免的,只能缓解。

1. 评估方法

        通常可以通过测试来对学习器的泛化误差进行评估,因此需要测试集,并将其作为训练模型的输入,得到的测试误差来作为泛化误差的近似。一般对样本集进行适当的划分得到训练集 S 和测试集 T。

1.1 留出法

        留出法直接将数据集 D 划分为两个互斥的集合,即 D=S\cup T, S\cap T=\varnothing ,在 S 上训练,在 T 上测试。

        但需要主要以,S 和 T 的划分要尽量保持数据分布的一致性。比如分类任务为保持样本的类别比例一直,可以采用分层采样;如果S 和 T 中样本类别比例差别很大,可能会对训练误差产生偏差。

        使用留出法一般采用多次随机划分并重复进行实验评估后去平均值作为留出法的评估结果。一般取 2/3 到 4/5 的样本用于训练,剩余的用于测试。

1.2 交叉验证法

        交叉验证法先将数据集 D 划分为 k 个互斥的子集 (D_{1},D_{2},...D_{k}), D_{i}\cap D_{j}=\varnothing (i\neq j) ,为保持样本的一致性,每个子集通过分层采样获得。然后每次选择其中的 k - 1 个子集作为训练集,剩下一个子集作为测试集,从而可以进行 k 次训练和测试,最终返回 k 次测试结果的均值。

        交叉验证评估结果的稳定性很大程度上取决于 k 的取值,因此又称 k 折交叉验证。k 常取值为 10。

        k 折交叉验证通常要随机使用不同的划分重复 p 次,最终的评估结果是这 p 次 k 折交叉验证结果的均值,如 10 次 10 折交叉验证。

        如果假定 D 包含 m 个样本,如果令 k = m ,则可以得到交叉验证法的特例:留一法。留一法的训练集由于值缺少一个样本,因此评估得到的模型与期望评估的用 D 训练出的模型很相似,因此评估结果被认为较为准确。但在大规模数据集下开销过大。

1.3 自助法

        自助法以自主采样法为基础,给定包含 m 个样本的数据集 D,对它进行采样产生数据集 D^{'}

 :每次从 D 中挑选一个样本拷贝放入 D^{'} ,然后再将样本放回到 D 中,这样该样本在下次采样时仍有可能被采集到。重复该过程 m 次,得到了包含 m 个样本的数据集 D^{'} 。

        每个样本始终不被采集到的概率是  (1-\frac{1}{m})^{m} ,取极限得到:

\lim_{x\rightarrow \varpi }(1-\frac{1}{m})^{m}=\frac{1}{e}\approx 0.368

        这意味着数据集 D 中大约有 36.8% 的样本未被采集到,因此选用 D^{'} 作为训练集,D-D^{'} 用作测试集这样的测试结果也常称为包外估计。

        自助法在数据集较小、难以有效划分训练测试集时会有不错的效果。自助法还能从初始数据集获得多个训练集,这对集成学习会有很大的好处。但自助法改变了初始数据集的分布,会引入估计偏差。因此如果训练集数据足够,更适合采用留出法和交叉验证法。

        需要注意的是,通常把学得模型在实际使用中遇到的数据称为测试数据,为加以区分,模型评估与选择中用于评估测试的数据集常称为验证集。在实际应用中把训练数据划分为训练集和验证集,基于验证集上的性能进行模型选择和调参,并用测试集来判别模型的泛化能力。

2. 性能度量

        给定样本集 D=\left \{ (X_{1}, y_{1}), (X_{2},y_{2},...,(X_{m},y_{m})) \right \} ,要评估学习器 f 的性能就要将 f 与样本的真实标记 y 进行比较。

        最常用的性能度量是均方误差:

E(f;D)=\frac{1}{m}\sum_{i=1}^{m}(f(X_{i})-y_{i})^{2}

        更一般的,对于数据分布 D 和概率密度函数 p(\cdot ) ,均方误差可描述为:

E(f;D)=\int_{x\sim D}^{}(f(X)-y)^{2}p(x)dx

2.1 错误率与精度

        错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。错误率定义如下:

E(f;D)=\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(X_{i})\neq y_{i})

精度则为:

acc(f;D)=1-E(f;D)

        更一般的,对于数据分布 D 和概率密度函数 p(\cdot ) ,错误率与精度可分别描述为:

E(f;D)=\int_{x\sim D}^{}\mathbb{I}(f(X_{i})\neq y_{i})p(x)dx

2.2 查准率、查全率与 F1

        对于二分类问题,可以将样本根据真是类别与学习器预测类别组合划分为真正例(TP)、假正例(FP)、真反例(TN)和假反例(FN)四种类型。则得到如下的混淆矩阵:

真实情况预测结果
正例反例
正例TPFN
反例FPTN

        因此查准率 P 与查全率 R 分别定义为:

P=\frac{TP}{TP+FP}

R=\frac{TP}{TP+FN}

        查准率与查全率是一对矛盾的度量,查准率高时,查全率往往低。以查准率、查全率为轴作图可以得到查准率-查全率曲线,简称 P-R 曲线。若一个学习器的P-R曲线被另一个学习器包住,则断言后者性能优于前者。

        平衡点是查准率等于查全率时的取值,可简单用于综合考虑P、R的性能。但往往过于简单。

更常用的还是 F1 度量:

F1=\frac{2PR}{P+R}=\frac{2TP}{N +TP-TN}

N 为样例总数。

        有时对查准率和查全率的重视程度会有所不同,由此导出 F1 度量的一般形式—— F_{\beta} :

F_{\beta}=\frac{(1+\beta^{2})PR}{\beta^{2}P+R}

\beta>0 度量了查全率对查准率的相对重要性,\beta=1 则退化为 F1 度量,\beta<1 查准率有更大的影响,反之查全率会有更大的影响。

        在很多时候会有多个二分类混淆矩阵,如进行多次的训练测试每次得到一个混淆矩阵,又或者在多个数据集上进行训练测试,或者执行多分类任务,每两两类别组合得到一个混淆矩阵;对于这些情况的解决方法是:

  • 在各混淆矩阵上分别计算 P 和 R,然后计算均值得到宏查准率和宏查全率,进而得到宏F1 。
  • 也可以将各混淆矩阵的对应元素平均得到 TP、FP、TN 和 FN 的均值,再基于这些均值计算出微查全率等。

2.3 ROC 和 AUC

        ROC 的全称是 受试者工作特征 ,与 P-R 曲线相似,根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例预测,每次计算出两个重要量的值,以这两个值维轴作图得到 ROC 曲线。ROC 图的纵轴是 真正例率(TPR),横轴是 假正例率 (FPR):

TPR=\frac{TP}{TP+FN}

FPR=\frac{FP}{TN+FP}

        绘制 ROC 图的流程如下:给定 m^{+} 个正例和 m^{-} 个反例,根据学习器预测结果对样例排序,然后把分类阈值设为最大,此时所有样本均为反例,TPR = FPR = 0;然后将分类阈值依次设为每个样例的预测值,也就是每次将一个样本划分为正例。假设当前的标记点坐标维 (x, y),若为真正例,则对应坐标为 (x, y+\frac{1}{m^{+}}) ,否则为 (x+\frac{1}{m^{-}}, y)  。

        如果一个学习器的 ROC 曲线完全被另一个学习器宝珠,则断言后者性能优于前者;若两者较差,则可以通过比对 ROC 曲线下的面积 AUC 来判断优劣。

AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x{i})(y_{i+1}+y{i})

        形式化看,AUC 考虑的是样本预测的排序质量,因此与排序误差有紧密联系,在上述数量的正例和反例下,令 D^{+}, D^{-} 分别表示正、反例集合,则排序损失定义如下:

l_{rank}=\frac{1}{m^{+}m^{-}}\sum_{x^{+}\in D^{+}}\sum _{x^{-}\in D^{-}}(\mathbb{I}(f(x^{+})<f(x^{-})+\frac{1}{2}\mathbb{I}(f(x^{+})=f(x^{-}))

        也就是对每一对的正反例,如果正例的预测值小于反例,则记一个罚分,相等则记 0.5 个罚分,可以看出 l_{rank} 是 ROC 曲线上的面积,因此有 l_{rank}=1-AUC

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

        在实际应用中,对不同的错误代价往往不一样,为权衡不同类型错误造成的不同损失,可为错误赋予非均衡代价。

        以二分类任务为例,可根据任务的领域只是设定一个代价矩阵,用 cost_{ij} 表示将第 i 类样本预测为第 j 类样本的代价。

        在非均等代价下,所希望的不再是简单的最小化错误次数,而是最小化总体代价,设代价敏感的错误率为:

E(f;D;cost)=\frac{1}{m}(\sum_{x_{i}\in D^{+}}\mathbb{I}(f(x_{i}\neq y_{i}))cost_{01}+\sum_{x_{i}\in D^{-}}\mathbb{I}(f(x_{i}\neq y_{i}))cost_{10})

        非均等代价下,ROC 曲线不能直接反映处学习器的期望总体代价,可通过代价曲线来达到该目标;代价曲线图的横轴是取值为 [0,1] 的正例概率代价:

P(+)cost=\frac{p\cdot cost_{01}}{p\cdot cost_{01}+(1-p)\cdot cost_{10}}

上式中,p 是样例为正例的概率;代价曲线的纵轴是取值为 [0,1] 的归一化代价:

cost_{norm}=\frac{FNR\cdot p\cdot cost_{01}+FPR\cdot(1-p)\cdot cost_{10}}{p\cdot cost_{01}+(1-p)\cdot cost_{10}}

3. 比较检验

4. 偏差与方差

        偏差-方差分解时解释学习算法泛化性能的一种重要工具。它试图对学习算法的期望泛化误差率进行拆解,对测试样本 X ,令 y_{D} 为 X 在数据集中的标记,y 为 X 的真实标记,f(X;D) 为训练集 D 上学到的模型 f 在 X 上的预测输出,以回归任务为例,

学习算法的期望预测为:

\bar{f(X)}=E_{D}[f(X;D)]

使用样本数相同时不同训练集产生的方差为:

var(x)=E_{D}[(f(X;D)-\bar{f(X)})^{2}]

噪声为:

\varepsilon _{2}=E_{D}[(y_{D}-y)2]

期望输入与真实标记的差别称为偏差:

bias^{2}(X)=(\bar{f(X)}-y)^{2}

        假设噪声期望为 0 来简化讨论,则有:

E(f;D)=bias^{2}(X)+var(X)+\varepsilon ^2

即泛化误差可以分解为偏差、方差与噪声之和。

  • 偏差:度量了学习算法的期望预测与真实结果的偏离程度,描述了算法的拟合能力
  • 方差:度量了同样大小的训练集变动所导致的学习性能的变化,描述了数据扰动所造成的影响
  • 噪声:表达了当前任务书任何学习算法所能达到的期望泛化误差的下界,描述了学习问题的难度。

        一般而言,偏差与方差是由冲突的,训练不足时,拟合能力差,偏差主导泛化误差;训练程度加深,拟合程度提高没数据的扰动逐渐被学习器学习到,方差开始逐渐占据泛化误差的主导地位。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值