机器学习手札:模型评估
Author:雾雨霜星
Time:2021-09-15
我的网站:雾雨霜星
误差指标
- 经验误差:模型在训练样本集上得到的误差
- 泛化误差:模型在未参与训练的样本集上得到的误差
模型的验证方法
留出法(hold-out):
将数据集划分为两个互斥集合,其中一个为训练集,另一个为测试集。
分层采样:按照数据集原有的数据分布模式(类别比例)进行采样,来划分训练集和测试集。
交叉验证法(cross validation):
使用分层采样的方法,将数据集划分为k个互斥子集,每次使用k-1个子集作为并集进行训练,余下的子集用于测试。
由此需要进行k此训练/验证,得到k组结果,最终评估效果为k个模型测试结果的均值。
自助法(bootstrapping):
对于带有m个数据的数据集D,每次随机选择一个放入初始空数据集Dt,进行m次后得到一个与训练集大小相同的"拷贝"数据集。
显然,数据集D中的样本部分将会在数据集Dt中多次出现,部分则不会出现。
一般使用数据集Dt进行训练,使用数据集D\Dt进行测试,这种方法称为"外包估计"
缺点:改变了初始数据集的分布,引入估计偏差。
模型的性能度量
精度与错误率
-
精度:
a c c ( f ; D ) = 1 N ∑ i = 1 N [ f ( x i ) = y i ] acc(f;D)=\frac{1}{N}\sum_{i=1}^{N}[f(x_i)=y_i] acc(f;D)=N1i=1∑N[f(xi)=yi] -
错误率:
e r r ( f ; D ) = 1 N ∑ i = 1 N [ f ( x i ) ≠ y i ] err(f;D)=\frac{1}{N}\sum_{i=1}^{N}[f(x_i)\neq y_i] err(f;D)=N1i=1∑N[f(xi)=yi]
查准率与查全率
查准率/查全率:
- 查准率(precision):检测到的所有正例中正确的数量所在比例,又称"精准率"。
- 查全率(recall):实际所有正例中被检测出来的正确正例数量所占比例,又称"召回率"。
P-R曲线:即查全率为横坐标,查准率为纵坐标的曲线。
若一个模型的P-R曲线被另一个模型的P-R曲线完全包住,则可以断言,后一个模型的性能更好。
ROC曲线
-
ROC:受试工作者特征曲线,纵轴为真正例率(TPR),横轴为假正例率(FRP)。
-
AUC:Area Under ROC curve,ROC曲线下的面积
-
TPR:即查全率;
-
FRP:实际所有反例中被被模型标记为正例的数量所占比例。
-
ROC使用对象:分类任务中进行使用。
-
ROC在多分类任务中的使用:
在多分类任务中,每种类别可以得到一条ROC曲线,最终的ROC曲线是所有ROC曲线的平均。
ROC曲线的绘制
将样本按照模型计算赋予的分数排序,按样本顺序来绘制曲线的点。
假设样本实际上共有m1个正例,m2个假例。(标签标记的,而非模型统计的)
从(0,0)开始,依次将每个样本划分为正例。上一个点为(x,y)下。若当前为真正例,对应坐标为(x,y+1/m1);若为假正例,则对应坐标为(x+1/m2,y)。
AUC的估计
若 R O C 曲 线 坐 标 为 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , . . . } , 估 算 A U C 如 下 : A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) ) 若ROC曲线坐标为\{(x_1,y_1),(x_2,y_2),(x_3,y_3),...\},估算AUC如下:\\ AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot (y_i+y_{i+1})) 若ROC曲线坐标为{(x1,y1),(x2,y2),(x3,y3),...},估算AUC如下:AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1))
假设检验
意义:进行机器学习模型的性能比较,基于假设检验下,若测试集上观察到学习器A比学习器B好,则A的泛化性能是否优于B,以及该结论的把握有多大。
ML Hypothesis Test:假设学习器的泛化错误率符合某种分布或某个结论,根据测试错误率进行推导得到泛化错误率。
置信度
又称置信水平,表示准确值落在这个区间的概率。
二项检验
适用对象:采用"留出法"对模型进行性能检验的状况
假设:每次数据都是独立采样获得的,泛化错误率是二分类任务中分类错误的样本所占总样本数的比例。即每一个样本在模型的计算下相当于一次试验,而这个试验分为成功和失败两种状况。对于泛化错误率而言,试验成功就是模型分了错误的状况。
二项分布函数式:
n
次
试
验
中
正
好
得
到
k
次
成
功
的
概
率
:
P
{
X
=
k
}
=
C
k
n
p
k
(
1
−
p
)
n
−
k
二
项
式
系
数
:
C
k
n
=
n
!
k
!
(
n
−
k
)
!
n次试验中正好得到k次成功的概率: P\{ X=k \}=C_{k}^{n}p^k(1-p)^{n-k}\\ 二项式系数:C_{k}^{n}=\frac{n!}{k!(n-k)!}
n次试验中正好得到k次成功的概率:P{X=k}=Cknpk(1−p)n−k二项式系数:Ckn=k!(n−k)!n!
在如下假设下,总共m个样本的数据集上,若泛化错误率为ψ,得到测试错误率为ψt的概率为:
P
(
ψ
,
ψ
t
)
=
C
ψ
t
⋅
m
m
ψ
ψ
t
⋅
m
(
1
−
ψ
)
m
−
ψ
t
⋅
m
P(\psi,\psi_t)=C_{\psi_t\cdot m}^{m}\psi^{\psi_t\cdot m}(1-\psi)^{m-\psi_t\cdot m}
P(ψ,ψt)=Cψt⋅mmψψt⋅m(1−ψ)m−ψt⋅m
本质就是一个二项试验,m次试验中,发生模型分类错误事件的次数k为ψt*m次的概率。
对 “泛化错误率ψ < ψ0” 结论的检验
条件:样本总数为m,结论的置信度为1-α(常用α=0.05/0.1),假设泛化错误率不大于ψ0。
计算临界值:
临
界
值
:
ψ
c
=
m
i
n
ψ
s
.
t
.
∑
i
=
ψ
0
×
m
+
1
m
C
i
m
ψ
i
(
1
−
ψ
)
m
−
i
<
α
临界值:\psi_c=min\ \psi \quad s.t.\ \sum_{i=\psi_0\times m+1}^{m}C_i^m\psi^i(1-\psi)^{m-i}<\alpha
临界值:ψc=min ψs.t. i=ψ0×m+1∑mCimψi(1−ψ)m−i<α
若此时样本的测试错误率ψt小于临界值ψc,则:
在α的显著度下,假设ψ<ψ0不能被拒绝。即可以1-α的置信度认为,学习器的泛化错误率不大于ψ0。
t检验
适用对象:采用"交叉验证法"对模型进行性能检验的状况
-
t分布:
样本数较小时估计呈正态分布且方差未知的总体的均值。
构成t分布的样本,一般就是符合正态分布的数据总体的其中一部分。因为不清楚全部数据总体,因而无法得到总体均值,无法给出明确的标准正态分布,就使用了已知数据的样本均值代替之,从而得到t分布。
t分布曲线是曲线族,随着样本数的改变,其分布曲线也会变化。
-
t分布函数:
定 义 : X ∼ N ( 0 , 1 ) , Y ∼ χ 2 ( n ) , 则 τ = X Y / n ∼ t ( n ) 定义:X\sim N(0,1),Y\sim \chi^2(n),则\tau=\frac{X}{\sqrt{Y/n}}\sim t(n)\\ 定义:X∼N(0,1),Y∼χ2(n),则τ=Y/nX∼t(n)
原理:根据中心极限定理,通过抽样模拟试验表明,在正态分布总体中以固定n抽取若干个样本时,样本均数的分布仍服从正态分布,所以对样本均数的分布进行u变换,也可变换为标准正态分布N (0,1)。推导如下:
设 X ∼ N ( μ , σ 2 ) , { X 1 , X 2 , . . . , X k } 是 来 源 于 X 的 部 分 样 本 样 本 均 值 μ s = 1 k ∑ i = 1 k X i 样 本 方 差 σ s 2 = 1 k − 1 ∑ i = 1 k ( X i − μ s ) 2 μ s ∼ N ( μ , σ 2 / k ) X ′ = μ s − μ σ / k ∼ N ( 0 , 1 ) Y = ( k − 1 ) σ s 2 σ 2 ∼ χ 2 ( k − 1 ) τ = X ′ Y / ( k − 1 ) = X ′ ( σ s / σ ) = k ( μ s − μ ) σ s ∼ t ( k − 1 ) 设X\sim N(\mu,\sigma^2),\{X_1,X_2,...,X_k\}是来源于X的部分样本\\ 样本均值\mu_s=\frac{1}{k}\sum_{i=1}^{k}X_i\quad样本方差\sigma_s^2=\frac{1}{k-1}\sum_{i=1}^{k}(X_i-\mu_s)^2\\ \mu_s \sim N(\mu,\sigma^2/k)\\ X'=\frac{\mu_s-\mu}{\sigma/\sqrt{k}}\sim N(0,1)\quad Y=\frac{(k-1)\sigma_s^2}{\sigma^2}\sim \chi^2(k-1)\\ \tau=\frac{X'}{\sqrt{Y/(k-1)}}=\frac{X'}{(\sigma_s/\sigma)}=\frac{\sqrt{k}(\mu_s-\mu)}{\sigma_s}\sim t(k-1)\\ 设X∼N(μ,σ2),{X1,X2,...,Xk}是来源于X的部分样本样本均值μs=k1i=1∑kXi样本方差σs2=k−11i=1∑k(Xi−μs)2μs∼N(μ,σ2/k)X′=σ/kμs−μ∼N(0,1)Y=σ2(k−1)σs2∼χ2(k−1)τ=Y/(k−1)X′=(σs/σ)X′=σsk(μs−μ)∼t(k−1)
注意到,在最后使用了样本均值代替总体均值,样本方差代替了总体方差。
对"泛化错误率ψ=ψ0"结论的检验
假设:泛化错误率ψ=ψ0
假设:所有交叉验证所得的测试错误率数据总体符合正态分布
由泛化错误率ψ=ψ0,则可得到:
k
次
交
叉
验
证
得
到
k
个
测
试
错
误
率
:
{
ψ
1
,
ψ
2
,
ψ
3
,
.
.
.
,
ψ
k
}
,
μ
=
1
k
∑
i
=
1
k
ψ
i
σ
2
=
1
k
−
1
∑
i
=
1
k
(
ψ
i
−
μ
)
2
τ
=
k
(
μ
−
ψ
0
)
σ
∼
t
(
k
−
1
)
k次交叉验证得到k个测试错误率:\{ \psi_1,\psi_2,\psi_3,...,\psi_k \},\\ \mu=\frac{1}{k}\sum_{i=1}^{k}\psi_i\\ \sigma^2=\frac{1}{k-1}\sum_{i=1}^{k}(\psi_i-\mu)^2\\ \tau=\frac{\sqrt{k}(\mu-\psi_0)}{\sigma}\sim t(k-1)\\
k次交叉验证得到k个测试错误率:{ψ1,ψ2,ψ3,...,ψk},μ=k1i=1∑kψiσ2=k−11i=1∑k(ψi−μ)2τ=σk(μ−ψ0)∼t(k−1)
计算得到τ后,查表得到相应显著度α下的t分布曲线双边临界值t(-α/2)与t(α/2),如果τ位于[t(-α/2), t(α/2)]区间内,则不能拒绝假设"ψ=ψ0"。即可认为泛化错误率为ψ0,置信度为1-α。
交叉验证成对t检验
对于两个学习器,在相同的第i折训练与验证中得到测试错误率ψai,ψbi。则有:
k
次
交
叉
验
证
训
练
的
测
试
错
误
率
:
{
ψ
1
A
,
ψ
2
A
,
ψ
3
A
,
.
.
.
,
ψ
k
A
}
,
{
ψ
1
B
,
ψ
2
B
,
ψ
3
B
.
.
.
,
ψ
k
B
}
令
Δ
i
=
ψ
i
A
−
ψ
i
B
,
则
有
Δ
=
{
Δ
1
,
Δ
2
,
Δ
3
,
.
.
.
,
Δ
k
}
μ
为
Δ
均
值
,
σ
为
Δ
方
差
i
f
τ
=
∣
k
μ
σ
∣
<
t
α
/
2
,
k
−
1
则
假
设
不
可
被
拒
绝
t
α
/
2
,
k
−
1
是
自
由
度
为
k
−
1
的
t
分
布
上
尾
部
累
计
分
布
为
α
/
2
的
临
界
值
k次交叉验证训练的测试错误率:\{\psi^A_1,\psi^A_2,\psi^A_3,...,\psi^A_k\},\{\psi^B_1,\psi^B_2,\psi^B_3...,\psi^B_k\}\\ 令\Delta_i=\psi^A_i-\psi^B_i,则有\Delta=\{\Delta_1,\Delta_2,\Delta_3,...,\Delta_k\}\\ \mu为\Delta均值,\sigma为\Delta方差\\ if\quad\tau=|\frac{\sqrt{k}\ \mu}{\sigma}|<t_{\alpha/2,k-1} \quad 则假设不可被拒绝\\ t_{\alpha/2,k-1}是自由度为k-1的t分布上尾部累计分布为α/2的临界值
k次交叉验证训练的测试错误率:{ψ1A,ψ2A,ψ3A,...,ψkA},{ψ1B,ψ2B,ψ3B...,ψkB}令Δi=ψiA−ψiB,则有Δ={Δ1,Δ2,Δ3,...,Δk}μ为Δ均值,σ为Δ方差ifτ=∣σk μ∣<tα/2,k−1则假设不可被拒绝tα/2,k−1是自由度为k−1的t分布上尾部累计分布为α/2的临界值
通常采用的是"5×2交叉验证"法
McNemar检验
适用对象:用于比较两个学习器性能的假设检验方法。
首先建立"列联表",即使用算法A和使用算法B下,得到的正确和错误的数量。
e11:算法A和算法B分类均正确的数量;e01:算法A分类错误而算法B分类正确的数量;
e10:算法A分类正确而算法B分类错误的数量;e11:算法A和算法B分类均错误的数量;
假设:两个学习器的性能相同。则|e01-e10|应服从正态分布。
由此计算下式:
τ
=
(
∣
e
01
−
e
10
∣
−
1
)
2
e
01
+
e
10
∼
χ
(
1
)
\tau=\frac{(|e01-e10|-1)^2}{e01+e10} \sim \chi(1)
τ=e01+e10(∣e01−e10∣−1)2∼χ(1)
对于给定的显著度α,当以上变量值小于临界值X(α),不能拒绝假设,即认为两学习器性能没有显著差异。否则拒绝假设,此时平均错误率较小的学习器性能较好。
自由度为1的卡西检验临界值:α=0.05,X(α)=3.8415;α=0.1,X(α)=2.7055。
McNemar检验应用实例:McNemar’s检验(配对卡方检验)(qq.com)
Friedman检验
适用对象:多个算法在一个或多个数据集上性能比较
在多个数据集上对多个算法进行比较:
-
每个数据集上进行训练和验证,按照测试性能的好坏对各个算法进行排序
-
计算F变量:
在 N 个 数 据 集 上 比 较 k 个 算 法 , r i 表 示 第 i 个 算 法 法 平 均 值 χ = 12 N k ( k + 1 ) ( ∑ i = 1 k r i 2 − k ( k + 1 ) 2 4 ) F = ( N − 1 ) χ N ( k − 1 ) − χ 在N个数据集上比较k个算法,r_i表示第i个算法法平均值\\ \chi=\frac{12N}{k(k+1)}(\sum_{i=1}^{k}r_i^2-\frac{k(k+1)^2}{4})\\ F=\frac{(N-1)\chi}{N(k-1)-\chi} 在N个数据集上比较k个算法,ri表示第i个算法法平均值χ=k(k+1)12N(i=1∑kri2−4k(k+1)2)F=N(k−1)−χ(N−1)χ
F变量服从自由度为k-1和(k-1)(N-1)的F分布 -
比较曲线临界值
这部分我也还不清楚该怎么做。。。。。所以先空着吧。
Nemenyi检验
在上述对多个算法进行性能比较时,如果"所有算法的性能相同"假设被拒绝时,则此时使用该检验进行后续检验。
转载请注明出处:雾雨霜星