目录
- 前言
- 2.1 经验误差与过拟合
- 2.2 评估方法
- 2.2.1 留出法( h o d e − o u t hode-out hode−out)
- 2.2.2 交叉验证法( c r o s s v a l i d a t i o n cross validation crossvalidation)
- 2.2.3 自助法( b o o t s t r a p p i n g bootstrapping bootstrapping)
- 2.2.4 调参与最终模型
- 2.3 性能度量
前言
本博客为博主在学习 机器学习【西瓜书 / 南瓜书】过程中的学习笔记,每一章都是对《西瓜书》、《南瓜书》内容的总结和提炼笔记,博客可以作为各位读者的辅助思考,也可以做为读者快读书籍的博文,本博客对西瓜书所涉及公式进行详细的推理以及讲解,本人认为,不推导公式所学得的知识是没有深度的,是很容易忘记的,有些公式推导起来并不复杂,只是被看似复杂的数学表达式所“吓唬”,希望大家拿上纸笔,跟着博主一起学习,一起推导。
对于哪一部分的推导不理解的,可以评论出来,博主看到之后会尽快回复!
❗️ 注:本篇文章是第2章,其涵盖内容较为多和杂,读者在读本章节时,做到有所印象即可,其各种判断方法可以结合后续文章中的样例进行更进一步的理解。
本文只是第二章知识总结的一半,另一半见博客:机器学习【西瓜书/南瓜书】— 第2章模型评估与选择(下)(学习笔记+公式推导)(即将更新)
2.1 经验误差与过拟合
- 错误率(
e
r
r
o
r
r
a
t
e
error rate
errorrate):错误的样本数占总样本数的比例
例如:有 m m m 个样本,其中有 a a a 个样本分类错误,那么有 错误率: E = a m E = \frac{a}{m} E=ma - 精度(
a
c
c
u
r
a
c
y
accuracy
accuracy):精度 = 1 - 错误率
即精度表示为: 1 − a m 1 - \frac{a}{m} 1−ma,我们常把精度写为百分比形式: ( 1 − a m ) ∗ 100 % (1 - \frac{a}{m}) * 100\% (1−ma)∗100% - 误差( e r r o r error error):学习期的实际预测输出与样本的真实输出之间的差异(期望)
- 训练误差( t r a i n i n g e r r o r training error trainingerror)经验误差( e m p i r i c a l empirical empirical):学习期在训练集上的误差(期望)
- 泛化误差( g e n e r a l i z a t i o n e r r o r generalization error generalizationerror):在新样本上的误差(期望)
显然,我们希望得到 泛化误差 更小的学习器,即在新样本上能表现的很好的学习器,但是我们能做的只是努力使得 经验误差 最小化。往往一个在训练样本中表现很好的学习器,即分类错误率为 0 0 0,分类精度为 100 % 100\% 100%,但这种学习器在多数情况下表现的其实 并不好。
为了能在新样本中表现很好,我们就需要从训练样本中尽量学出适用于所有潜在样本的 “普遍规律”。然而,当我们把训练样本学得 “太好了” 的时候,很可能把训练样本的一些特点当成了潜在规律,认为这些特点同样符合一般样本的普遍规律,这样就会导致泛化能力下降,这就被称为 过拟合( o v e r f i t t i n g overfitting overfitting),亦称为过配
与过拟合相对应的是 欠拟合( u n d e r f i t t i n g underfitting underfitting),指的是对训练样本的一般性质并未学好,亦称为欠配
🌈接下举例子来理解什么是 过拟合 和 欠拟合:
比如我们要学习分辨树叶,给出的训练样本具有的特点为:有锯齿、绿色,那么过拟合的结果就是,给出一片没有锯齿的绿叶,判断结果为:不是树叶(误认为树叶必须有锯齿);而欠拟合则是将草判断为树叶,因为草是绿色的(误认为绿色的就是树叶);通俗来讲,过拟合就是学多了,眼界小了;欠拟合就是学少了,眼界过大了。
欠拟合是比较容易克服的,但是过拟合则很麻烦。过拟合是机器学习面临的关键障碍,并且过拟合是无法彻底避免的。
这里再补充两个定义:
P
:
P:
P:多项式时间问题能在多项式时间内解决,即算起来很快
N
P
:
NP:
NP:非确定多项式时间问题,能在多项式时间验证答案正确与否,即对答案的验证很快
机器学习面临的问题通常是 N P NP NP 难甚至更难,因为有效的学习算法必然是在多项式的时间内能够运行完成的,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这就意味着我们构造性地证明了 P = N P P = NP P=NP;因此,只要相信 P ≠ N P P ≠ NP P=NP,过拟合就是不可避免的。
在现实中,我们往往有很多学习算法是可供选择的,甚至对于同一个学习算法,对于不同的参数,会产生中不同的模型,对此,选择哪一种学习算法,使用哪一种的参数配置,这就是所谓的 模型选择( m o d e l s e l e c t i o n model selection modelselection)。
2.2 评估方法
我们一般可以通过实验测试来对学习器的泛化误差进行评估并进而做出选择【❗️ 注:在显示任务中往往还需要考虑时间开销、存储开销、可解释性等等方面,这里暂且只考虑泛化误差】。为此,我们需要一个 测试集(
t
e
s
t
i
n
g
s
e
t
testing set
testingset) 来测试学习器对新样本的判别能力,然后以该测试集上的 测试误差(
t
e
s
t
i
n
g
e
r
r
o
r
testing error
testingerror) 作为泛化误差的近似。
测试集应该尽可能和训练集 互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
所以,对一个包含 m m m 个样例的数据集 D D D = {(x1, y 1 y_1 y1), (x2, y 2 y_2 y2), …, (xm, y m y_m ym)},我们需要对其做适当的处理,使得从中产生出训练集 S S S 和测试集 T T T,如下是几种常见的做法
2.2.1 留出法( h o d e − o u t hode-out hode−out)
留出法是直接将数据集 D D D 划分为两个互斥的集合,其中的一个作为训练集 S S S,另一个作为测试集 T T T,即 D = S ∪ T D = S ∪ T D=S∪T, S ∩ T = ∅ S ∩ T = ∅ S∩T=∅,在 S S S 上训练出模型后,用 T T T 来评估其测试误差,作为对泛化误差的估计。
需要注意的是,训练/测试集的划分要尽可能保持 数据分布的一致性,例如在分类任务中,至少要保持样本的类别比例相似。如果从 采样(
s
a
m
p
l
i
n
g
sampling
sampling) 的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为 分层抽样(
s
t
r
a
t
i
f
i
e
d
s
a
m
p
l
i
n
g
stratified sampling
stratifiedsampling)。
🌈例如如果对
D
D
D 进行分层采样而获得含
70
%
70\%
70% 样本的训练集
S
S
S 和含
30
%
30\%
30% 样本的测试集
T
T
T,若
D
D
D 包含
500
500
500 个正例、
500
500
500 个反例,则分层抽样得到的
S
S
S 应包含
350
350
350 个正例、
350
350
350 个反例,而
T
T
T 中则包含
150
150
150 个正例,
150
150
150 个反例。
还需要注意的是,即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集
D
D
D 进行分割,在上述例子中,我们可以把
D
D
D 中的样本进行排序,然后把前
350
350
350 个正例放到训练集中,也可以把最后
350
350
350 个正例放到训练集中,…,这些不同的划分将导致不同的训练/测试集,导致模型评估的结果也会有差别。
因此,单次使用留出法得到的估计结果往往是不可靠的,我们在使用留出法的时,一般采用若干次随机划分、重复进行实验评估后 取平均值 作为留出法的评估结果。
这也同时引出了另一个问题,
S
S
S 和
T
T
T 的划分比例问题:如果
S
S
S 包含绝大多数样本,则训练处的模型可能更接近用
D
D
D 训练出的模型,但由于
T
T
T 比较小,评估结果可能不够准确;若令
T
T
T 包含更多的样本,那么训练集
S
S
S 和
D
D
D 差别就会很大,被评估模型与用
D
D
D 训练出的模型差距相比的差距可能就会很大。
这个问题没有一个完美的解决方案,常见的做法是将大约
2
3
\frac{2}{3}
32 ~
4
5
\frac{4}{5}
54 的样本用于训练,剩余样本用来检测
2.2.2 交叉验证法( c r o s s v a l i d a t i o n cross validation crossvalidation)
交叉验证法试讲数据集
D
D
D 划分为
k
k
k 个大小相似的互斥子集,即
D
=
D
1
∪
D
2
∪
.
.
.
∪
D
k
D = D_1 ∪ D_2 ∪ ... ∪ D_k
D=D1∪D2∪...∪Dk,
D
i
∪
D
j
=
∅
(
i
≠
j
)
D_i ∪ D_j = ∅(i ≠ j)
Di∪Dj=∅(i=j),每个子集
D
i
D_i
Di 都尽可能保持数据分布的一致性,即从
D
D
D 中通过分层采样得到,然后每次都用
k
−
1
k-1
k−1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可以获得
k
k
k 组训练/测试集,从而可进行
k
k
k 次训练和测试,最终返回的是这
k
k
k 个测试结果的均值。
显然,交叉验证法评估的结果和保真性在很大程度上取决于
k
k
k 的取值,为了强调这一点,通常把交叉检验法称为 k折交叉验证(
k
−
f
o
l
d
k-fold
k−fold
c
r
o
s
s
cross
cross
v
a
l
i
d
a
t
i
o
n
validation
validation),
k
k
k 最常用的取值为
10
10
10,此时被称为 10折交叉验证;其他常用的
k
k
k 有5、20等。
与留出法相似,将数据集 D D D 划分为 k k k 个子集同样存在多种划分方式,为减少因样本划分不同引入的差别, k k k折交叉验证通常要随机使用不同的划分重复 p p p 次,最终的评估结果是这 p p p 次 k k k折交叉验证结果的均值,例如常见的有: 10 10 10次 10 10 10折交叉验证。
假定数据集 D D D 中包含 m m m 个样本,若令 k = m k = m k=m,则得到了交叉验证法的一个特例:留一法( L e a v e − O n e − O u t Leave-One-Out Leave−One−Out,简称 L O O LOO LOO),显然,留一法不受随机样本划分方式的影响。在绝大数情况下,留一法中被实际评估的模型与期望评估的用 D D D 训练出的模型很相似,因此,留一法的评估结果往往被认为更加的准确,但是留一法的计算开销很大,很多情况下这种计算开销是难以忍受的。【❗️ 注:留一法的估计结果也未必永远比其他评估方法更精准,**没有免费的午餐定理( N F L NFL NFL)**对实验评估方法同样适用
2.2.3 自助法( b o o t s t r a p p i n g bootstrapping bootstrapping)
自助法直接以 自助采样(
b
o
o
t
s
t
r
a
p
bootstrap
bootstrap
s
a
m
p
l
i
n
g
sampling
sampling) 为基础,给定包含
m
m
m 个样本的数据集
D
D
D,我们对它进行采样产生数据集
D
′
D'
D′:每次 随机 从
D
D
D 中挑选一个样本,把它拷贝放入
D
′
D'
D′,然后将该样本放回初始数据集
D
D
D 中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行
m
m
m 次后,我们就得到了包含
m
m
m 个样本的数据集
D
′
D'
D′,这就是自助采样的结果,显然,
D
D
D 中有一部分样本会在
D
′
D'
D′ 中出现多次,而有一部分则不会出现,可以做一个简单的估计,样本在
m
m
m 次采样中始终不被采到的概率是
(
1
−
1
m
)
m
(1 - \frac{1}{m})^m
(1−m1)m,取极限可以得到:
即通过自助采样,初始数据集
D
D
D 中约有
36.
,
8
%
36.,8\%
36.,8% 的样本未出现在采样数据集
D
′
D'
D′ 中,于是,我们可将
D
′
D'
D′ 用作训练集,
D
D
D \
D
′
D'
D′ 用作测试集(\ 表示集合的减法);这样,实际评估的模型与期望评估的模型都使用
m
m
m 个训练样本,而我们仍有数据总量约
1
3
\frac{1}{3}
31、没有在训练集中出现的样本用于测试,这样的测试结果,亦称 外包估计(
o
u
t
−
o
f
−
b
a
g
e
s
t
i
m
a
t
e
out-of-bagestimate
out−of−bagestimate)
自助法在数据集较小,难以有效划分训练/测试集时很有用,此外,自助法能从初始数据集中产生多个不同的训练集,这对 集成学习 等方法有很大的好处,然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差,因此,在初始数据量足够时,留出法和交叉验证法更常用。
2.2.4 调参与最终模型
大多数学习算法都有些 参数( p a r a m e t e r parameter parameter) 需要设定,参数配置不同,所学得的模型的性能往往也会有很大的差异,因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需要对算法参数进行设定,这就是通常所说的 参数调节,或称 调参( p a r a m e t e r parameter parameter t u n i n g tuning tuning)
学习算法的很多参数是在实数范围内取值,因此,对每种参数配置都训练出模型来是不可行的,通常的做法是对每个参数选定一个变化范围和变化步长,显然,这样选定的参数值往往不是最佳值,但这是在计算开销和性能估计之间折中的结果,事实上,即便在进行这样的折中处理后,调参也很困难。参数调得好不好往往对最终模型性能有关键性影响。
在模型选择完成后,学习算法和参数配置都已选定,此时应该用数据集 D D D 重新训练模型,这个模型在训练过程中是用来所有 m m m 个样本,这才是我们最终提交给用户的模型。
我们通常把学得模型在实际使用中遇到的数据称为 验证集( v a l i d a t i o n validation validation s e t set set),我们用测试集上的判别结果来估计模型在实际使用时的泛化能力,把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
2.3 性能度量
衡量模型泛化能⼒的评价指标,这就是 性能度量( p e r f o r m a n c e performance performance m e a s u r e measure measure),性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这就意味着,魔性的“好坏”是相对的,一个好的模型,不仅取决于算法和数据,还决定于任务需求。
在预测任务中,给定样例集 D D D = {(x1, y 1 y_1 y1), (x2, y 2 y_2 y2), …, (xm, y m y_m ym)},其中 y i y_i yi 是示例 x i x_i xi 的真实标记。要评估学习器 f f f 的性能,就要把学习器预测结果 f ( x ) f(x) f(x) 与真实标记 y y y 进⾏⽐较。
回归任务最常用的性能度量是 均方误差(
m
e
a
n
mean
mean
s
q
u
a
r
e
d
squared
squared
e
r
r
o
r
error
error):
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)=m1∑i=1m(f(xi)−yi)2
更一般的,对于数据分布
D
D
D 和概率密度函数
p
(
⋅
)
p(·)
p(⋅),均方误差可以描述为:
E
(
f
;
D
)
=
∫
x
∈
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
E(f;D)=\int_{x ∈D}(f(x) - y)^2p(x)dx
E(f;D)=∫x∈D(f(x)−y)2p(x)dx
下面来介绍分类任务中常用的性能度量:
2.3.1 错误率与精度
错误率和精度我们曾在本博客开头部分就提出,这是分类任务中最常用的两种性能度量,对于样例集
D
D
D,分类错误率定义为:
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
≠
y
i
)
E(f;D)=\frac{1}{m}\sum_{i=1}^{m}I(f(x_i)≠y_i)
E(f;D)=m1∑i=1mI(f(xi)=yi)
精度则定义为:
a
c
c
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
=
y
i
)
=
1
−
E
(
f
;
D
)
acc(f;D)=\frac{1}{m}\sum_{i=1}^{m}I(f(x_i)=y_i)=1-E(f;D)
acc(f;D)=m1∑i=1mI(f(xi)=yi)=1−E(f;D)
更一般的,对于数据分布
D
D
D 和概率密度函数
p
(
⋅
)
p(·)
p(⋅),错误率和精度可分别描述为:
E
(
f
;
D
)
=
∫
x
∈
D
I
(
f
(
x
)
≠
y
)
p
(
x
)
d
x
E(f;D)=\int_{x∈D}I(f(x)≠y)p(x)dx
E(f;D)=∫x∈DI(f(x)=y)p(x)dx
a
c
c
(
f
;
D
)
=
∫
x
∈
D
I
(
f
(
x
)
=
y
)
p
(
x
)
d
x
=
1
−
E
(
f
;
D
)
acc(f;D)=\int_{x∈D}I(f(x)=y)p(x)dx=1-E(f;D)
acc(f;D)=∫x∈DI(f(x)=y)p(x)dx=1−E(f;D)
2.3.2 查准率、查全率与F1
虽然错误率与精度是常用的,但是并不能满足所有任务需求,🌈拿西瓜来举例,假定瓜农拉来了一车西瓜,我们用训练好的模型对西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误,但是若我们关心的是“挑出来的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例是被挑出来的”,那么显然错误率就不够用了,这时就需要其他的性能度量
🌈类似的需求在信息检索, w e b web web 搜索等应用中也十分常见,在这些问题中,我们通常会关心:“检索出来的信息有多少比例是用户所感兴趣的”,“用户感兴趣的信息中有多少是被检索出来了”,查准率( p r e c i s i o n precision precision) 与 查全率( r e c a l l recall recall) 是更适用此类需求的性能度量。查准率亦被称为准确率,查全率亦被称为召回率。
对于二分类问题而言,可将样例根据其真实类别与学习器预测类别的组合划分为 真正例(
t
r
u
e
true
true
p
o
s
i
t
i
v
e
positive
positive),假正例(
f
a
l
s
e
false
false
p
o
s
i
t
i
v
e
positive
positive),真反例(
t
r
u
e
true
true
n
e
g
a
t
i
v
e
negative
negative),假反例(
f
a
l
s
e
false
false
n
e
g
a
t
i
v
e
negative
negative) 四种情景,令
T
P
、
F
P
、
T
N
、
F
N
TP、FP、TN、FN
TP、FP、TN、FN 分别表示其对应的样例数,则显然有:
T
P
+
F
P
+
T
N
+
F
N
=
样
例
总
数
TP+FP+TN+FN=样例总数
TP+FP+TN+FN=样例总数。分类结果的 混淆矩阵(
c
o
n
f
u
s
i
o
n
confusion
confusion
m
a
t
r
i
x
matrix
matrix) 如下图所示:
查准率
P
P
P 与查全率
R
R
R 分别定义为
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
查准率和查全率是一对矛盾的量,一般来说,查准率很高的时候,查全率往往偏低;而查全率很高的时候,查准率往往偏低。🌈例如,若希望所有的好瓜都尽可能的被选择出来,则可以通过增加选瓜的数量来实现,如果将所有的西瓜都选上,那么所有的好瓜必然都被选上了,但这样与之对应的就是查准率会降低;若希望选出的瓜中好瓜的比例尽可能高,则可只挑选有把握的瓜,但这样就难免会漏掉一些好瓜,使得查全率很低。
通常只有在一些简单的任务中,才可能使查全率和查准率都很高。
在很多情况下,我们可以根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在后面的则是学习器认为“最不可能”是正例的样本,按照这个顺序把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称为
P
−
R
P-R
P−R曲线,显示该曲线的图称为
P
−
R
P-R
P−R图:
P
−
R
P-R
P−R图直观地显示出学习器在样本总体上的查全率、查准率。在进行比较时,若一个学习器的
P
−
R
P-R
P−R 曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者,如上图中的
A
A
A 优于
C
C
C,如果两个学习器的
P
−
R
P-R
P−R曲线发生了交叉,如上图的
A
A
A 和
B
B
B,则难以一般性地断言两者的优劣,只能在具体的查准率或查全率条件下进行比较。然而在很多情况下,人们往往希望去比较出个高低,这时一个比较合理的判据就是比较
P
−
R
P-R
P−R 曲线下面积的大小,它在一定程度上表征了学习器在查准率和查全率上取得“双高”的比例。但这个值不容易估算,因此,人们设计了一些总和考虑查准率、查全率的性能度量:
平衡点(
B
r
e
a
k
−
E
v
e
n
Break-Even
Break−Even
P
o
i
n
t
Point
Point,简称
B
E
P
BEP
BEP),它是 查准率 = 查全率 时的取值,基于
B
E
P
BEP
BEP 的比较,可认为
A
A
A 优于
B
B
B,但
B
E
P
BEP
BEP 还是过于简单了些,我们更常用的是
F
F
F度量:
F
1
=
2
∗
P
∗
R
P
+
R
=
2
∗
T
P
样
例
总
数
+
T
P
−
T
N
F1=\frac{2*P*R}{P+R}=\frac{2*TP}{样例总数+TP-TN}
F1=P+R2∗P∗R=样例总数+TP−TN2∗TP
F
1
F_1
F1 是基于查准率与查全率的 调和平均(
h
a
r
m
o
n
i
c
harmonic
harmonic
m
e
a
n
mean
mean):
F
1
=
1
2
∗
(
1
P
+
1
R
)
F1=\frac{1}{2}*(\frac{1}{P}+\frac{1}{R})
F1=21∗(P1+R1)
在一些应用中,对查准率和查全率的重视程度不同,🌈例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,为了尽可能少的漏掉逃犯,此时查全率更重要,
F
1
F_1
F1度量的一般形式——
F
β
F_\beta
Fβ,能让我们表达出对查准率/查全率的不同偏好,它定义为:
F
1
=
(
1
+
β
2
)
∗
P
∗
R
(
β
2
∗
P
)
+
R
F1=\frac{(1+\beta^2)*P*R}{(\beta^2 * P)+R}
F1=(β2∗P)+R(1+β2)∗P∗R
F
β
F_\beta
Fβ 则是加权调和平均:
F
1
=
1
1
+
β
2
∗
(
1
P
+
β
2
R
)
F1=\frac{1}{1+\beta^2}*(\frac{1}{P}+\frac{\beta^2}{R})
F1=1+β21∗(P1+Rβ2)
其中 β > 0 \beta > 0 β>0 度量了查全率对查准率的 相关重要性, β = 1 \beta=1 β=1 时退化为标准的 F 1 F_1 F1; β > 1 \beta>1 β>1 时查全率有更大影响; β < 1 \beta<1 β<1 时查准率有更大影响。
🌟与算数平均 P + R 2 \frac{P + R}{2} 2P+R和几何平均 P ∗ R \sqrt{P*R} P∗R相比,调和平均更重视较小值。
很多时候我们有多个二分类混淆矩阵,现在我们希望在
n
n
n 个二分类混淆矩阵上综合考察查准率和查全率:一种直接的做法是先在各自的混淆矩阵上分别计算出查准率和查全率,记为
(
P
1
,
R
1
)
,
(
P
2
,
R
2
)
,
.
.
.
,
(
P
n
,
R
n
)
(P_1,R_1),(P_2,R_2),...,(P_n,R_n)
(P1,R1),(P2,R2),...,(Pn,Rn),再计算平均值,这样就得到了 宏查准率(
m
a
c
r
o
−
P
macro-P
macro−P)、宏查全率(
m
a
c
r
o
−
R
macro-R
macro−R),以及相应的 宏
F
1
F_1
F1(
m
a
c
r
o
−
F
1
macro-F_1
macro−F1):
m
a
c
r
o
−
P
=
1
n
∑
i
=
1
n
P
i
macro-P=\frac{1}{n}\sum_{i=1}^{n}P_i
macro−P=n1∑i=1nPi
m
a
c
r
o
−
R
=
1
n
∑
i
=
1
n
R
i
macro-R=\frac{1}{n}\sum_{i=1}^{n}R_i
macro−R=n1∑i=1nRi
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
macro-F_1=\frac{2*macro-P*macro-R}{macro-P+macro-R}
macro−F1=macro−P+macro−R2∗macro−P∗macro−R
还可以现将各混淆矩阵的对应元素进行平均,得到
T
P
、
F
P
、
T
N
、
F
N
TP、FP、TN、FN
TP、FP、TN、FN 的平均值,分别记为
T
P
‾
、
F
P
‾
、
T
N
‾
、
F
N
‾
\overline{TP}、\overline{FP}、\overline{TN}、\overline{FN}
TP、FP、TN、FN,再基于这些平均值计算出 微查准率(
m
i
c
r
o
−
P
micro-P
micro−P)、微查全率(
m
i
c
r
o
−
R
micro-R
micro−R) 和 微
F
1
F_1
F1(
m
i
c
r
o
−
F
1
micro-F_1
micro−F1):
m
i
c
r
o
−
P
=
T
P
‾
T
P
‾
+
F
P
‾
micro-P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}}
micro−P=TP+FPTP
m
i
c
r
o
−
R
=
T
P
‾
T
P
‾
+
F
N
‾
micro-R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}
micro−R=TP+FNTP
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
micro-F_1=\frac{2*micro-P*micro-R}{micro-P+micro-R}
micro−F1=micro−P+micro−R2∗micro−P∗micro−R
2.3.3 ROC 与 AUC
很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个 分类阈值( t h r e s h o l d threshold threshold) 进行比较,若大于阈值则分为正类,否则为反类。这个实值或概率预测结果的好坏,直接决定了学习器的泛化能力。实际上,根据这个实值或概率预测结果,我们可将测试样本进行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面。这样分类过程就相当于在这个排序中以某个 截断点( c u t cut cut p o i n t point point) 将样本分成两部分,前一部分判作正例,后一部分则判为反例。
不同的任务我们可以设置不同的截断点,如果我们更重视查准率,则可选择排序中靠前的位置进行截断;若更重视查全率,则可以选择靠后的位置进行截断。因此:排序本身的质量好坏,体现了总和考虑学习器在不同任务下的“期待泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏, R O C ROC ROC曲线则是从这个角度出发来研究学习器泛化性能的有力工具。
R O C ROC ROC 全称是:受试者工作特征( R e c e i v e r Receiver Receiver O p e r a t i n g Operating Operating C h a r a c t e r i s t i c Characteristic Characteristic)曲线,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值;分别以它们为横纵坐标作图,就得到了 R O C ROC ROC曲线, R O C ROC ROC曲线的纵轴是 真正例率( T r u e True True P o s i t i v e Positive Positive R a t e Rate Rate,简称 T P R TPR TPR),横轴是 假正例率( F a l s e False False P o s i t i v e Positive Positive R a t e Rate Rate,简称 F P R FPR 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
显示的 R O C ROC ROC曲线的图称为 R O C ROC ROC图,如下图(a)所示,显然,对角线对应的是 随机猜测 模型,而点 ( 0 , 1 ) (0,1) (0,1) 则对应将所有正例排在所有反例之前的 理想模型。
现实任务中通常是利用有限个测试集来绘制
R
O
C
ROC
ROC图,即此时仅能获得有限个(真正例率,假正例率)坐标对,绘制出来通常形如上图(b)的模样。绘图过程十分简单:给定
m
+
m^+
m+ 个正例和
m
−
m^-
m− 个反例,格局学习器预测结果对样例进行排序,然后把分类阈值设为最大,即把所有的样例都视作反例,此时真正例率和假真正例率均为
0
0
0,在坐标
(
0
,
0
)
(0,0)
(0,0) 处标记一个点,然后将阈值依次设为每个样例的预测值,即依次将每个样例划分为正例,设前一个标记点坐标为
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),当前例若为真正例,则对应标记点坐标为
(
x
,
y
+
1
m
+
)
(x,y+\frac{1}{m^+})
(x,y+m+1);当前例为假正例,则对应标记点坐标为
(
x
+
1
m
−
,
y
)
(x+\frac{1}{m^-},y)
(x+m−1,y),然后用线段链接相邻点即可。
在进行机器学习的比较时,与
P
−
R
P-R
P−R图相似,若一个学习器的
R
O
C
ROC
ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者性能 优于 前者,若两个学习器的
R
O
C
ROC
ROC曲线发生交叉,则一般难以比较两者孰优孰劣,如果一定要进行比较,则较为合理的判据是比较
R
O
C
ROC
ROC 曲线下的面积,即
A
U
C
(
A
r
e
a
AUC(Area
AUC(Area
U
n
d
e
r
Under
Under
R
O
C
ROC
ROC
C
u
r
v
e
)
Curve)
Curve),即上图中阴影部分的面积。从定义可知,
A
U
C
AUC
AUC 可通过对
R
O
C
ROC
ROC 曲线下各部分的面积求和而得,假定
R
O
C
ROC
ROC曲线是由坐标为 {
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
(x_1,y_1),(x_2,y_2),...,(x_m,y_m)
(x1,y1),(x2,y2),...,(xm,ym)} 的点按序连接而形成
(
x
1
=
0
,
x
m
=
1
)
(x_1=0,x_m=1)
(x1=0,xm=1),如上图(b),则
A
U
C
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=21∑i=1m−1(xi+1−xi)∗(yi+yi+1)
推导过程:
我们先来再次解释一下
R
O
C
ROC
ROC曲线的具体绘制过程,下面举例说明:
🌈假设我们已经训练得到一个学习器
f
(
s
)
f(s)
f(s),现在用该学习器来对
8
8
8 个测试样本(
4
4
4 个正例,
4
4
4 个反例,即
m
+
=
m
−
=
4
m^+=m^-=4
m+=m−=4)进行预测,预测结果为:
(
s
1
,
0.77
,
+
)
,
(s_1,0.77,+),
(s1,0.77,+),
(
s
2
,
0.62
,
−
)
,
(s_2,0.62,-),
(s2,0.62,−),
(
s
3
,
0.58
,
+
)
,
(s_3,0.58,+),
(s3,0.58,+),
(
s
4
,
0.47
,
+
)
,
(s_4,0.47,+),
(s4,0.47,+),
(
s
5
,
0.47
,
−
)
,
(s_5,0.47,-),
(s5,0.47,−),
(
s
6
,
0.33
,
−
)
,
(s_6,0.33,-),
(s6,0.33,−),
(
s
7
,
0.23
,
+
)
,
(s_7,0.23,+),
(s7,0.23,+),
(
s
8
,
0.15
,
−
)
(s_8,0.15,-)
(s8,0.15,−)
其中,
+
+
+ 和
−
-
− 分别表示样本为正例和为反例,数字表示学习器
f
f
f 预测该样本为正例的概率,例如对于反例
s
2
s_2
s2 来说,当前学习器
f
(
s
)
f(s)
f(s) 预测它是正例的概率为
0.62
0.62
0.62。
我们首先对所有测试样本按照学习器给出的预测结果进行排序,接着将分类阈值设为一个不可能取到的最大值,即在此时,所有样本预测为正例的概率都小于分类阈值,那么预测为正例的样本个数为
0
0
0,相应得到的真正例率和假正例率也都为
0
0
0,所以我们可以在坐标
(
0
,
0
)
(0,0)
(0,0) 处标记一个点,接下来需要把分类阈值从大到小依次设为每个样本的预测值,即依次设为:
0.77
,
0.77,
0.77,
0.62
,
0.62,
0.62,
0.58
,
0.58,
0.58,
0.47
,
0.47,
0.47,
0.33
,
0.33,
0.33,
0.23
,
0.23,
0.23,
0.15
0.15
0.15.然后分别计算真正例率和假正例率,再在相应的坐标上标记点,最后再将各个点用直线连接就得到了
R
O
C
ROC
ROC曲线,需注意:在统计预测结果时,预测值等于分类阈值的样本也被算作预测为正例,例如当阈值为
0.77
0.77
0.77 时,测试样本
s
1
s_1
s1 被预测为正例,由于它的真实标记也是正例,所以此时的
s
1
s_1
s1 是一个真正例,为便于绘图,我们将
x
x
x轴(假正例率轴)的步长定位
1
m
−
\frac{1}{m^-}
m−1,
y
y
y轴(真正例率轴)的步长定位
1
m
+
\frac{1}{m^+}
m+1,根据定义不难知道,每次变动分类阈值,若新增
i
i
i 个假正例,那么相应的
x
x
x轴坐标也就增加
i
m
−
\frac{i}{m^-}
m−i;若新增
j
j
j 个真正例,那么相应的
y
y
y轴坐标也就增加
j
m
+
\frac{j}{m^+}
m+j,按照上述流程,我们把举例中的例子汇成下图:
其中 绿色线段 表示在分类阈值变动的过程中只新增了真正例,红色线段 表示在分类阈值变动的过程中只新增了假正例,蓝色线段 表示既新增了真正例也新增了假正例。根据
A
U
C
AUC
AUC 的定义我们可以知道,此时的
A
U
C
AUC
AUC值其实就是所有 红色线段 和 蓝色线段 与
x
x
x轴围成的面积之和,观察可知,红色线段 与
x
x
x轴围成的图形恒为矩形,蓝色线段 与
x
x
x轴围成的图形恒为梯形。由于梯形面积公式对于矩形同样适用,所以不论是哪一种颜色与
x
x
x轴围成的面积都能用梯形面积公式去计算:
1
2
∗
(
x
i
+
1
−
x
i
)
∗
(
y
i
+
y
i
+
1
)
\frac{1}{2}*(x_{i+1}-x_i)*(y_i+y_{i+1})
21∗(xi+1−xi)∗(yi+yi+1)
其中,
(
x
i
+
1
−
x
i
)
(x_{i+1}-x_i)
(xi+1−xi) 为高,
y
i
y_i
yi 为上底,
y
i
+
1
y_{i+1}
yi+1 为下底,那么对于所有 红色线段 和 蓝色线段 与
x
x
x轴围成的面积进行求和,则有:
∑
i
=
1
m
−
1
[
1
2
∗
(
x
i
+
1
−
x
i
)
∗
(
y
i
+
y
i
+
1
)
]
\sum_{i=1}^{m-1}[\frac{1}{2}*(x_{i+1}-x_i)*(y_i+y_{i+1})]
∑i=1m−1[21∗(xi+1−xi)∗(yi+yi+1)]
此即 A U C AUC AUC
证毕!
形式化地看,
A
U
C
AUC
AUC 考虑的是样本预测的排序质量,因此它与排序误差有紧密联系,给定
m
+
m^+
m+ 个正例和
m
−
m^-
m− 个反例,令
D
+
D^+
D+ 和
D
−
D^-
D− 分别表示正例、反例集合,则排序 损失(
l
o
s
s
loss
loss) 定义为:
𝓵rank
=
1
m
+
m
−
∑
x
+
∈
D
+
∑
x
−
∈
D
−
=\frac{1}{m^+m^-}\sum_{x^+∈D^+}\sum_{x^-∈D^-}
=m+m−1∑x+∈D+∑x−∈D−
(
(
(
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
I
(
(
f
(
x
+
)
=
f
(
x
−
)
)
I(f(x^+)<f(x^-))+\frac{1}{2}I((f(x^+)=f(x^-))
I(f(x+)<f(x−))+21I((f(x+)=f(x−))
)
)
)
即考虑每一对正、反例,若正例的预测值小于反例,则记
1
1
1 个罚分,若相等,则记
0.5
0.5
0.5 个罚分。容易看出,𝓵rank 对应的是
R
O
C
ROC
ROC曲线之上的面积:若一个正例在
R
O
C
ROC
ROC曲线上对应的标记点的坐标为
(
x
,
y
)
(x,y)
(x,y),则
x
x
x 恰是排序在其之前的反例所占的比例,即假正例率,因此有:
A
U
C
=
1
−
AUC=1-
AUC=1−𝓵rank
推导过程:
按照我们上个公式的证明思路,𝓵rank 可以看做是所有 绿色线段 和 蓝色线段 与
y
y
y轴围成的面积之和,我们对上述公式做等价变形:
𝓵rank
=
1
m
+
m
−
∑
x
+
∈
D
+
∑
x
−
∈
D
−
=\frac{1}{m^+m^-}\sum_{x^+∈D^+}\sum_{x^-∈D^-}
=m+m−1∑x+∈D+∑x−∈D−
(
(
(
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
I
(
(
f
(
x
+
)
=
f
(
x
−
)
)
I(f(x^+)<f(x^-))+\frac{1}{2}I((f(x^+)=f(x^-))
I(f(x+)<f(x−))+21I((f(x+)=f(x−))
)
)
)
𝓵rank
=
1
m
+
m
−
∑
x
+
∈
D
+
=\frac{1}{m^+m^-}\sum_{x^+∈D^+}
=m+m−1∑x+∈D+
[
[
[
∑
x
−
∈
D
−
\sum_{x^-∈D^-}
∑x−∈D−
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
I
(
(
f
(
x
+
)
=
f
(
x
−
)
)
I(f(x^+)<f(x^-))+\frac{1}{2}I((f(x^+)=f(x^-))
I(f(x+)<f(x−))+21I((f(x+)=f(x−))
]
]
]
𝓵rank
=
∑
x
+
∈
D
+
=\sum_{x^+∈D^+}
=∑x+∈D+
[
[
[
1
m
+
∗
1
m
−
∑
x
−
∈
D
−
\frac{1}{m^+}*\frac{1}{m^-}\sum_{x^-∈D^-}
m+1∗m−1∑x−∈D−
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
∗
1
m
+
∗
1
m
−
I
(
(
f
(
x
+
)
=
f
(
x
−
)
)
I(f(x^+)<f(x^-))+\frac{1}{2}*\frac{1}{m^+}*\frac{1}{m^-}I((f(x^+)=f(x^-))
I(f(x+)<f(x−))+21∗m+1∗m−1I((f(x+)=f(x−))
]
]
]
𝓵rank
=
∑
x
+
∈
D
+
1
2
∗
1
m
+
=\sum_{x^+∈D^+}\frac{1}{2}*\frac{1}{m^+}
=∑x+∈D+21∗m+1
[
[
[
2
m
−
∑
x
−
∈
D
−
\frac{2}{m^-}\sum_{x^-∈D^-}
m−2∑x−∈D−
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
∗
1
m
−
I
(
(
f
(
x
+
)
=
f
(
x
−
)
)
I(f(x^+)<f(x^-))+*\frac{1}{m^-}I((f(x^+)=f(x^-))
I(f(x+)<f(x−))+∗m−1I((f(x+)=f(x−))
]
]
]
在变动分类阈值的过程当中,如果有新增真正例,那么图中就会相应地增加一条 绿色线段 或 蓝色线段,上式中的
∑
x
+
∈
D
+
\sum_{x^+∈D^+}
∑x+∈D+ 可以看做是在累加所有 绿色线段 和 蓝色线段,相应地,
∑
x
+
∈
D
+
\sum_{x^+∈D^+}
∑x+∈D+ 后面的内容便是在求 绿色线段 或 蓝色线段 与
y
y
y轴围成的面积,即:
1
2
∗
1
m
+
\frac{1}{2}*\frac{1}{m^+}
21∗m+1
[
[
[
2
m
−
∑
x
−
∈
D
−
\frac{2}{m^-}\sum_{x^-∈D^-}
m−2∑x−∈D−
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
∗
1
m
−
I
(
(
f
(
x
+
)
=
f
(
x
−
)
)
I(f(x^+)<f(x^-))+*\frac{1}{m^-}I((f(x^+)=f(x^-))
I(f(x+)<f(x−))+∗m−1I((f(x+)=f(x−))
]
]
]
计算思路还是一样的,无论是矩形还是梯形,我们都按照梯形的面积公式去求解,上式依旧表达的是一个梯形面积公式,其中的
1
m
+
\frac{1}{m^+}
m+1 即梯形的高,中括号内便是 “上底 + 下底”,下面我们来分别推导:
由于在绘制
R
O
C
ROC
ROC曲线的过程中,每新增一个假正例时
x
x
x 坐标也就新增一个步长,所以对于“上底”,也就是 绿色 或者 蓝色线段 的下端点到
y
y
y轴的距离,长度就等于
1
m
−
\frac{1}{m^-}
m−1 乘以预测值大于
f
(
x
+
)
f(x^+)
f(x+) 的假正例的个数,即:
1
m
−
∑
x
−
∈
D
−
I
(
f
(
x
+
)
<
f
(
x
−
)
)
\frac{1}{m^-}\sum_{x^-∈D^-}I(f(x^+)<f(x^-))
m−1∑x−∈D−I(f(x+)<f(x−))
对于下底,长度就等于
1
m
−
\frac{1}{m^-}
m−1 乘以预测值大于等于
f
(
x
+
)
f(x^+)
f(x+) 的假正例的个数,即:
1
m
−
\frac{1}{m^-}
m−1
(
(
(
∑
x
−
∈
D
−
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
∑
x
−
∈
D
−
I
(
f
(
x
+
)
=
f
(
x
−
)
)
\sum_{x^-∈D^-}I(f(x^+)<f(x^-))+\sum_{x^-∈D^-}I(f(x^+)=f(x^-))
∑x−∈D−I(f(x+)<f(x−))+∑x−∈D−I(f(x+)=f(x−))
)
)
)
证毕!
2.3.4 代价敏感错误率与代价曲线
🌈错误也是分类型的,错误地把患者诊断为健康人可能丧失了拯救生命的最佳时机,把正常人诊断为患者则仅是增加了进一步检查的麻烦。
为权衡不同类型错误所造成的的不同损失,可为错误赋予 非均等代价(
u
n
e
q
u
a
l
unequal
unequal
c
o
s
t
cost
cost)。
以二分类任务为例,我们可根据任务的领域知识设定一个 代价矩阵(
c
o
s
t
cost
cost
m
a
t
r
i
x
matrix
matrix),如下图所示:其中
c
o
s
t
i
j
cost_{ij}
costij 表示将第
i
i
i 类样本预测为第
j
j
j 类样本的代价,一般来说,
c
o
s
t
i
i
=
0
cost_{ii}=0
costii=0;若将第
0
0
0 类别判别为第
1
1
1 类所造成的损失更大,则
c
o
s
t
01
>
c
o
s
t
10
cost_{01}>cost_{10}
cost01>cost10;损失程度相差越大,
c
o
s
t
01
cost_{01}
cost01 与
c
o
s
t
10
cost_{10}
cost10 值的差别越大。【一般情况下,重要的是代价比值而非绝对值,即
c
o
s
t
01
:
c
o
s
t
10
=
5
:
1
cost_{01}:cost_{10}=5:1
cost01:cost10=5:1 与
c
o
s
t
01
:
c
o
s
t
10
=
50
:
10
cost_{01}:cost_{10}=50:10
cost01:cost10=50:10 效果相当】
回顾之前介绍的一些性能度量不难看出,我们大都隐式地假设了均等代价。在非均等代价下,我们希望的不再是简单地最小化错误次数,而是希望最小化 总体代价(
t
o
t
a
l
total
total
c
o
s
t
cost
cost),若将上图中的第
0
0
0 类作为正类、第
1
1
1 类作为反类,令
D
+
D^+
D+ 与
D
−
D^-
D− 分别代表样例集
D
D
D 的正例子集和反例子集,则 代价敏感(
c
o
s
t
−
s
e
n
s
i
t
i
v
e
cost-sensitive
cost−sensitive) 错误率为
E
(
f
;
D
;
c
o
s
t
)
=
1
m
E(f;D;cost)=\frac{1}{m}
E(f;D;cost)=m1
(
(
(
∑
x
i
∈
D
+
I
(
f
(
x
i
)
≠
y
i
)
∗
c
o
s
t
01
+
∑
x
i
∈
D
−
I
(
f
(
x
i
)
≠
y
i
)
∗
c
o
s
t
10
\sum_{x_i∈D^+}I(f(x_i)≠y_i)*cost_{01}+\sum_{x_i∈D^-}I(f(x_i)≠y_i)*cost_{10}
∑xi∈D+I(f(xi)=yi)∗cost01+∑xi∈D−I(f(xi)=yi)∗cost10
)
)
)
类似的,可给出基于分布定义的代价敏感错误率,以及其他一些性能度量如精度的代价敏感版本;若令 c o s t i j cost_{ij} costij 中的 i , j i,j i,j 取值不限于 0 、 1 0、1 0、1,则可定义出多分类任务的等价敏感性能度量。
在非均等价下,
R
O
C
ROC
ROC曲线不能直接反应出学习器的期望总体代价,而 代价曲线(
c
o
s
t
cost
cost
c
u
r
v
e
curve
curve) 则可以达到该目的,代价曲线的横轴是取值为
[
0
,
1
]
[0,1]
[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(+)cost=\frac{p*cost_{01}}{p*cost_{01}+(1-p)*cost_{10}}
P(+)cost=p∗cost01+(1−p)∗cost10p∗cost01
其中,
p
p
p 是样例为正例的概率;纵坐标是取值为
[
0
,
1
]
[0,1]
[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*p*cost_{01}+FPR*(1-p)*cost_{10}}{p*cost_{01}+(1-p)*cost_{10}}
costnorm=p∗cost01+(1−p)∗cost10FNR∗p∗cost01+FPR∗(1−p)∗cost10
规范化( n o r m a l i z a t i o n normalization normalization) 是将不同的变化范围的值映射到相同的固定范围中,常见的是 [ 0 , 1 ] [0,1] [0,1],此时亦称 归一化。
其中
F
P
R
FPR
FPR 为假正例率,
F
N
R
=
1
−
T
P
R
FNR=1-TPR
FNR=1−TPR 是假反例率,代价曲线的绘制也十分简单:
R
O
C
ROC
ROC曲线上每一点都对应了代价平面上的一条线段,设
R
O
C
ROC
ROC曲线上的点的坐标为
(
F
P
R
,
T
P
R
)
(FPR,TPR)
(FPR,TPR),则可相应计算出
F
N
R
FNR
FNR,然后在代价平面上绘制一条从
(
0
,
F
P
R
)
(0,FPR)
(0,FPR) 到
(
1
,
F
N
R
)
(1,FNR)
(1,FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价;如此将
R
O
C
ROC
ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如下图所示: