【机器学习第二章——模型评估与选择】

2.模型评估与选择

2.1经验误差与过拟合

我们需要使得使用训练集训练出来的模型,能够在未见样本中,也起到很好的效果,这时候就需要模型的泛化能力要足够强

  • 泛化误差:在“未来”样本上的误差
  • 经验误差:在训练集上的误差,亦称为“训练误差”

那么
泛化误差越小越好? \color{red}{泛化误差越小越好?} 泛化误差越小越好?

经验误差越小越好? \color{red}{经验误差越小越好?} 经验误差越小越好?

答案是否定的,因为会出现过拟合,就比如下图中,训练集中的树叶都是有锯齿的,过度训练会让模型认为树叶都需要有锯齿,把一类树叶的特性当作了一般规律,导致了过拟合。

相反,还有另一种情况称为欠拟合,也就是样本中的数据的性质并没有在模型中学好。

  • 模型选择三个关键问题
    • 评估方法:我们无法直接获得泛化误差,而训练误差又由于过拟合现象的存在而不适合作为标准,那么如何进行模型评估与选择呢?
    • 如何评估性能优劣?——>性能度量
    • 如何判断实质差别?——>比较检验

2.2 评估方法

关键:怎么获得“测试集”?

测试集应该与训练集“互斥”

常见方法

  • 留出法

    单次使用留出法得到的估计结果往往不够稳定可靠,所以一般来说,会采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

    • 注意:
      • 保持数据分布一致性(例如:分层采样)
      • 多次重复划分(例如:100次随机划分)
      • 测试集不能太大、不能太小(例如:1/5~1/3)
    • 留出法存在问题
      • 对于所有数据而言,留出法并不能保证每个数据都能被抽到当作测试集(因为测试集需要用全新的数据对模型进行检验)。
  • k折交叉验证法

    把数据集划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。

  • 自助法(有放回采样、可重复采样)

    • 从m个样本的数据集中,每次随机挑出一个样本,并把这个样本拷贝到训练集中,然后放回,重复m次采样,所以训练集就有m个样本数据,但是训练集中可能会有原始数据集中重复的数据。
      在这里插入图片描述

    • 那么m个样本数据集在进行m次采样,始终不被采到的概率是
      ( 1 − 1 m ) m (1-\frac{1}{m})^m (1m1)m
      取极限得到
      lim ⁡ m − > ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 \lim_{m->\infty}(1-\frac{1}{m})^m=\frac{1}{e}\approx 0.368 m>lim(1m1)m=e10.368
      这种测试结果称为“包外估计“

    • 优点

      • 训练集与原样本集同规模
    • 缺点

      • 数据分布有所改变

调参与验证集

  • 大多数学习算法都有些参数需要设定,参数配置不同,学得模型的性能往往有显著差别。因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的"参数调节"或 简称"调参" 。
  • 为了进行参数调节,我们会在原有训练集的基础上,留出一部分作为验证集,就是为了对参数进行验证。
  • 参数
    • 算法的参数:一般由人工设定,亦称为”超参数“。例如一个多项式该定为几次方。
    • 模型的参数:一般由学习确定。例如多项式中,系数的取值。
  • 调参过程相似:先产生若干模型,然后基于某种评估方法进行选择。
  • 参数调得好不好,往往对最终性能有关键影响。

2.3 性能度量

衡量模型泛化能力的评价标准,反映了任务需求,使用不同的性能度量往往会导致不同的评判结果。
什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求 \color{red}{什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求} 什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求

回归任务常用均方误差

E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2 E(f;D)=m1i=1m(f(xi)yi)2

错误率

E ( f ; D ) = 1 m ∑ i = 1 m Ⅱ ( f ( x i ) ≠ y i ) E(f;D)=\frac{1}{m}\sum_{i=1}^mⅡ(f(x_i)\neq y_i) E(f;D)=m1i=1m(f(xi)=yi)

精度

a c c ( f ; D ) = 1 m ∑ i = 1 m Ⅱ ( f ( x i ) = y i ) = 1 − E ( f ; D ) acc(f;D)=\frac{1}{m}\sum_{i=1}^mⅡ(f(x_i)= y_i)\\ =1-E(f;D) acc(f;D)=m1i=1m(f(xi)=yi)=1E(f;D)

查准率、查全率与F1

在这里插入图片描述

  • 查准率
    P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
    用模型查出来的正例中,有多少是真正的正例

  • 查全率
    R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
    在样本的所有正例中,我查出了多少的正例

  • F1度量
    基于查准率与查全率的调和平均定义的
    1 F 1 = 1 2 ( 1 P + 1 R ) \frac{1}{F1}=\frac{1}{2}(\frac{1}{P}+\frac{1}{R}) F11=21(P1+R1)
    可化为
    F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N F1=\frac{2\times P \times R}{P+R}\\ =\frac{2\times TP}{样例总数+TP-TN} F1=P+R2×P×R=样例总数+TPTN2×TP
    若对查准率/查全率有不同偏好。就像在商品推荐系统中,更希望推荐的内容是用户感兴趣的,此时查准率更重要;在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要:
    F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_{\beta}=\frac{(1+\beta^2)\times P\times R}{(\beta^2\times P)+R} Fβ=(β2×P)+R(1+β2)×P×R
    上式可由下式推到而来
    F β 是加权调和平均 : 1 F β = 1 1 + β 2 ( 1 P + β 2 R ) F_\beta是加权调和平均:\\ \frac{1}{F_\beta}=\frac{1}{1+\beta^2}(\frac{1}{P}+\frac{\beta^2}{R}) Fβ是加权调和平均:Fβ1=1+β21(P1+Rβ2)
    与算术平均
    P + R 2 \frac{P+R}{2} 2P+R
    和几何平均
    P × R \sqrt{P\times R} P×R
    相比,调和平均更重视较小值
    β > 1 时查全率有更大影响 β < 1 时查准率有更大影响 \beta>1时查全率有更大影响\\ \beta<1时查准率有更大影响 β>1时查全率有更大影响β<1时查准率有更大影响

  • 每次训练和测试后,都可以得到一个混淆矩阵,但我们希望综合考察查准率和查全率,就需要去求平均值

    • 直接对查准率和查全率相加,求平均
      ( 宏查准率 ) m a c r o − P = 1 n ∑ i = 1 n P i (宏查准率)macro-P=\frac{1}{n}\sum_{i=1}^nP_i (宏查准率)macroP=n1i=1nPi

      ( 宏查全率 ) m a c r o − R = 1 n ∑ i = 1 n R i (宏查全率)macro-R=\frac{1}{n}\sum_{i=1}^nR_i (宏查全率)macroR=n1i=1nRi

      ( 宏 F 1 ) m a c r o − F 1 = 2 × ( m a c r o − P ) × ( m a c r o − R ) ( m a c r o − P ) + ( m a c r o − R ) (宏F1)macro-F1=\frac{2\times (macro-P) \times (macro-R)}{(macro-P)+(macro-R)} (F1)macroF1=(macroP)+(macroR)2×(macroP)×(macroR)

    • 或者把各混淆矩阵对应元素进行平均,记为
      T P ‾ 、 F P ‾ 、 T N ‾ 、 F N ‾ \overline{TP}、\overline{FP}、\overline{TN}、\overline{FN} TPFPTNFN

      ( 微查准率 ) m i c r o − P = T P ‾ T P ‾ + F P ‾ (微查准率)micro-P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}} (微查准率)microP=TP+FPTP

      ( 微查全率 ) m i c r o − R = T P ‾ T P ‾ + F N ‾ (微查全率)micro-R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}} (微查全率)microR=TP+FNTP

      ( 微 F 1 ) m i c r o − F 1 = 2 × ( m i c r o − P ) × ( m i c r o − R ) ( m i c r o − P ) + ( m i c r o − R ) (微F1)micro-F1=\frac{2\times (micro-P) \times (micro-R)}{(micro-P)+(micro-R)} (F1)microF1=(microP)+(microR)2×(microP)×(microR)

ROC与AUC

  • 使用模型对测试样本产生一个实值或概率预测,然后把预测值与阈值作比较,若大于阈值分为正类,反之则分为反类,根据预测值的高低,需要把测试样本进行排序,最可能是正例的排在前面,最不可能是正例的排在后面。

  • 接着使用排序好的样本绘制ROC图,纵坐标代表“真正例率”(TPR),横坐标代表“假正例率”(FPR)
    T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP

    F P R = F P T N + F P FPR=\frac{FP}{TN+FP} FPR=TN+FPFP

    • 假设有10个正例和m个反例,排好序后,把分类阈值设为最大,即把所有样例均预测为反例,如下表所示,此时的真正例率和假正例率均为0,所有图像从(0,0)处开始

    • 将分类阈值一次设为每个样例的预测值,即依次将每个样例划分为正例。假设第一个预测值为0.8,即该样本有0.8的概率是正例,现在我们假设该样本确实为正例,那么可得到下表,此时的真正例率为1/10,所以该点需要在原来坐标的基础上向上平移1/10,即得到坐标(1/10,0)

      假设第二个预测值为0.7,即该样本有0.7的概率是正例,现在我们假设该样本为反例,也就是预测结果发生了错误,那么可得到下表,此时的假正例率为1/10,所以该点需要在原来坐标的基础上向右平移1/10,即得到坐标(1/10,1/10)

      依次类推,可得到图(b)。图(a)为有无限个样本产生的光滑曲线,现实中只能采取到有限个样本,所以只能是无限逼近于图(a)。当ROC图呈现出对角线时,对应的则是“随机猜测”模型;当ROC图会经过点(1,0)时,即所有真正例都排在所有真反例前,为理想模型。
      所以曲线下方的面积 A U C 越大,说明模型越好 \color{red}{所以曲线下方的面积AUC越大,说明模型越好} 所以曲线下方的面积AUC越大,说明模型越好

  • AUC

    • A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)

    • 排序损失定义为

      在这里插入图片描述

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

现实中,不同类型的错误所造成的后果是不同的,即错误的代价不同。
c o s t i j 表示将第 i 类样本预测为第 j 类样本的代价 c o s t i i = 0 cost_{ij}表示将第i类样本预测为第j类样本的代价\\ cost_{ii}=0 costij表示将第i类样本预测为第j类样本的代价costii=0

假设 c o s t 01 > c o s t 10 ,损失程度相差越大, c o s t 01 与 c o s t 10 值的差别越大。 假设cost_{01}>cost_{10},损失程度相差越大,cost_{01}与cost_{10}值的差别越大。 假设cost01>cost10,损失程度相差越大,cost01cost10值的差别越大。

  • 代价敏感错误率

E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + Ⅱ ( f ( x i ) ≠ y i ) × c o s t 01 + ∑ x i ∈ D − Ⅱ ( f ( x i ) ≠ y i ) × c o s t 10 ) E(f;D;cost)=\frac{1}{m}\bigg(\sum_{x_i\in D^+}Ⅱ(f(x_i)\neq y_i)\times cost_{01} +\sum_{x_i\in D^-}Ⅱ(f(x_i)\neq y_i)\times cost_{10}\bigg) E(f;D;cost)=m1(xiD+(f(xi)=yi)×cost01+xiD(f(xi)=yi)×cost10)

  • 在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”则可达到该目的,代价曲线图的横轴是取值为[0,1]的正例概率代价
    P ( + ) c o s t = p × c o s t 01 p × c o s t 01 + ( 1 − p ) × c o s t 10 p 是样例为正例的概率 P(+)cost=\frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}}\\ p是样例为正例的概率 P(+)cost=p×cost01+(1p)×cost10p×cost01p是样例为正例的概率
    纵轴是取值为[0,1]的归一化代价
    c o s t n o r m = F N R × p × c o s t 01 + F P R × ( 1 − p ) × c o s t 10 p × c o s t 01 + ( 1 − p ) × c o s t 10 cost_{norm}=\frac{FNR\times p \times cost_{01}+FPR\times(1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}} costnorm=p×cost01+(1p)×cost10FNR×p×cost01+FPR×(1p)×cost10

    F P R = F P T N + F P ( 假正例率 ) F N R = 1 − T P R ( 假反例率 ) , T P R = T P T P + F N ( 真正例率 ) FPR=\frac{FP}{TN+FP}(假正例率)\\ FNR=1-TPR(假反例率),TPR=\frac{TP}{TP+FN}(真正例率) FPR=TN+FPFP(假正例率)FNR=1TPR(假反例率),TPR=TP+FNTP(真正例率)

    在这里插入图片描述

2.4 比较检验

在某种度量下取得评估结果后,是否可以直接比较以评判优劣?
答案是不行的 \color{red}{答案是不行的} 答案是不行的

  • 因为:
    • 测试性能不等于泛化性能
    • 测试性能随着测试集的变化而变化
    • 很多机器学习算法本身有一定的随机性

假设检验

泛化错误率与测试错误率未必相同,但二者接近的可能性应比较大,所以可根据测试错误率估推出泛化错误率的分布

  • 泛化错误率为
    ϵ \epsilon ϵ
    的学习器在一个样本上犯错的概率是
    ϵ \epsilon ϵ

  • 测试错误率
    ϵ ^ \hat \epsilon ϵ^
    意味着在m个测试样本中恰有
    ϵ ^ × m \hat \epsilon \times m ϵ^×m
    个被误分类

  • ​ 泛化错误率为
    ϵ \epsilon ϵ
    的学习器被测得测试错误率为
    ϵ ^ \hat \epsilon ϵ^
    的概率
    P ( ϵ ^ ; ϵ ) = C m ϵ ^ × m ϵ ϵ ^ × m ( 1 − ϵ ) m − ϵ ^ × m P(\hat \epsilon;\epsilon)=C_{m}^{\hat \epsilon\times m}\epsilon^{\hat \epsilon\times m}(1-\epsilon)^{m-\hat \epsilon\times m} P(ϵ^;ϵ)=Cmϵ^×mϵϵ^×m(1ϵ)mϵ^×m

假设
ϵ = 0.3 \epsilon=0.3 ϵ=0.3
则有10个样本中测得3个被误分类的概率最大,而在提出假设后,发现某次被误分类数量达到了6~10个,那么可以很大概率上说,刚才的假设并不成立,因为
α 很小 常见取值有 0.05 、 0.1 \alpha 很小\\ 常见取值有0.05、0.1 α很小常见取值有0.050.1

那么推翻这个假设也需要一个边界,即有几个错误数时,假设就需要推翻,刚才我们假设的
ϵ = 0.3 \epsilon=0.3 ϵ=0.3
为最小边界。

这个边界可由下式得出

在这里插入图片描述

我们需要找出满足条件的最小的
ϵ \epsilon ϵ
还是以上面10个样本为例,当
ϵ = 0.9 \epsilon=0.9 ϵ=0.9
也就是现在错误数有9个,把9以上的错误率进行求和(10个错误数的错误率),求和的值是否小于给定的
α \alpha α
若小于,可以继续降低到
ϵ = 0.8 \epsilon=0.8 ϵ=0.8
也就是现在错误数有8个,把8以上的错误率进行求和(9个错误数+10个错误数的错误率),求和的值是否小于给定的
α \alpha α
若小于,可以继续降低到
ϵ = 0.7 \epsilon=0.7 ϵ=0.7
也就是现在错误数有7个,把7以上的错误率进行求和(8个错误数+9个错误数+10个错误数的错误率),求和的值是否小于给定的
α \alpha α
若小于,可以继续降低到
ϵ = 0.6 \epsilon=0.6 ϵ=0.6
也就是现在错误数有6个,把6以上的错误率进行求和(7个错误数+8个错误数+9个错误数+10个错误数的错误率),求和的值是否小于给定的
α \alpha α
若小于,可以继续降低到
ϵ = 0.5 \epsilon=0.5 ϵ=0.5
也就是现在错误数有5个,把5以上的错误率进行求和(6个错误数+7个错误数+8个错误数+9个错误数+10个错误数的错误率),根据上图显示,错误数为5时,已经超出了
α \alpha α
的范围,所以本例中
ϵ ‾ = 0.5 \overline \epsilon=0.5 ϵ=0.5
也就是说测试错误率小于刚刚我们算出的这个临界值时,假设
ϵ 0 = 0.3 , 即 ϵ ≤ 0.3 \epsilon_0=0.3,即\epsilon\leq 0.3 ϵ0=0.3,ϵ0.3
不能被拒绝

t检验

很多时候是通过多次重复留出法或是交叉验证法等进行多次训练,这样就会得到多个测试错误率,假定我们得到了k个测试错误率
ϵ ^ 1 , ϵ ^ 2 , . . . , ϵ ^ k \hat\epsilon_1,\hat\epsilon_2,...,\hat\epsilon_k ϵ^1,ϵ^2,...,ϵ^k

平均测试错误率 μ = 1 k ∑ i = 1 k ϵ ^ i 平均测试错误率\mu=\frac{1}{k}\sum_{i=1}^k\hat\epsilon_i 平均测试错误率μ=k1i=1kϵ^i

方差 σ 2 = 1 k − 1 ∑ i = 1 k ( ϵ ^ i − μ ) 2 方差\sigma^2=\frac{1}{k-1}\sum_{i=1}^k(\hat\epsilon_i-\mu)^2 方差σ2=k11i=1k(ϵ^iμ)2

考虑到这k个测试错误率可看作泛化错误率
ϵ 0 \epsilon_0 ϵ0
的独立采样,则变量
t = k ( μ − ϵ 0 ) σ ( 正态标准化的过程 ) μ 为样本均值, ϵ 0 为总体期望 , σ 为标准差服从自由度为 k − 1 的 t 分布 t=\frac{\sqrt{k}(\mu-\epsilon_0)}{\sigma}(正态标准化的过程)\\ \mu为样本均值,\epsilon_0为总体期望,\sigma为标准差 服从自由度为k-1的t分布 t=σk (μϵ0)(正态标准化的过程)μ为样本均值,ϵ0为总体期望,σ为标准差服从自由度为k1t分布
上式涉及到概率论的知识,这里补充一下,正态分布如下

需要注意的是,上面的 μ 指的是总体期望 , X ‾ 才是样本期望 \color{red}{需要注意的是,上面的\mu指的是总体期望,\overline X才是样本期望} 需要注意的是,上面的μ指的是总体期望,X才是样本期望

式子相当于
t = μ − ϵ 0 σ k = N ( 0 , 1 ) t=\frac{\mu-\epsilon_0}{\frac{\sigma}{\sqrt{k}}}=N(0,1)\\ t=k σμϵ0=N(0,1)

这里的 μ 指的是样本期望 , ϵ 0 才是总体期望 按上面式子转化后,均值为 0 ,方差为 1 ,如下图所示 \color{red}{这里的\mu指的是样本期望,\epsilon_0才是总体期望}\\ 按上面式子转化后,均值为0,方差为1,如下图所示 这里的μ指的是样本期望,ϵ0才是总体期望按上面式子转化后,均值为0,方差为1,如下图所示

如果t的取值落在中间(不在阴影范围内),那么就可以把平均值当作泛化误差来使用,如果落在阴影范围内,说明假设不能成立。

交叉验证t检验

这时候是有两个学习器A和B,这样就会得到两组测试错误率
ϵ ^ 1 A , ϵ ^ 2 A , . . . , ϵ ^ k A 和 ϵ ^ 1 B , ϵ ^ 2 B , . . . , ϵ ^ k B \hat\epsilon_1^A,\hat\epsilon_2^A,...,\hat\epsilon_k^A和\hat\epsilon_1^B,\hat\epsilon_2^B,...,\hat\epsilon_k^B ϵ^1A,ϵ^2A,...,ϵ^kAϵ^1B,ϵ^2B,...,ϵ^kB
和上面的t检验类似,这里是取
t = ∣ μ σ k ∣ = ∣ k μ σ ∣ t=\bigg|\frac{\mu}{\frac{\sigma}{\sqrt{k}}}\bigg|=|\frac{\sqrt{k}\mu}{\sigma}| t= k σμ =σk μ
也就是将上图t分布的图像,沿中间对折,即只留大于零的区域,如果取值在阴影部分,假设不成立,反之则可以成立。

McNemar检验

对于两个模型来说,可列出如下的列联表

若我们做的假设是两学习性能相同,则应有
e 01 = e 10 e_{01}=e_{10} e01=e10
如果这两个值差距太大的话,比如
e 01 > e 10 e_{01}>e_{10} e01>e10
那么可以说明算法B性能比A好。

Friedman检验与Nemenyi后续检验

​ 假定我们用D1、D2、D3和 D4四个数据集对算法A、B、C进行比较.首先,使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,…;若算法的测试性能相同,则平分序值.例如,在D1和 D3上,A最好、B其次、C最差,而在D2上,A最好、B与C性能相同,……,则可列出表2.5,其中最后一行通过对每一列的序值求平均,得到平均序值.

τ χ 2 = k − 1 k 12 N k 2 − 1 ∑ i = 1 k ( r i − k + 1 2 ) 2 = 12 N k ( k + 1 ) ( ∑ i = 1 k r i 2 − k ( k + 1 ) 2 4 ) \tau_{\chi^2}=\frac{k-1}{k}\frac{12N}{k^2-1}\sum_{i=1}^k(r_i-\frac{k+1}{2})^2\\ =\frac{12N}{k(k+1)}(\sum_{i=1}^kr_i^2-\frac{k(k+1)^2}{4}) τχ2=kk1k2112Ni=1k(ri2k+1)2=k(k+1)12N(i=1kri24k(k+1)2)

r i 服从正态分布,其均值和方差分别为 k + 1 2 和 k 2 − 1 12 r_i服从正态分布,其均值和方差分别为\frac{k+1}{2}和\frac{k^2-1}{12} ri服从正态分布,其均值和方差分别为2k+112k21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值