1. 经验误差与过拟合
1.1 错误率与精度
错误率:分类错误的样本数(
a
a
a)占样本总数(
m
m
m)的比例
E
=
a
/
m
E=a/m
E=a/m
精度:分类正确的样本数占样本总数的比例
精度
=
1
−
错误率
=
1
−
a
/
m
精度=1-错误率=1-a/m
精度=1−错误率=1−a/m
1.2 误差
误差:学习器的实际预测输出与样本的真实输出之间的差异
- 训练误差(经验误差):学习器在训练集上的误差
- 泛化误差:学习器在新样本上的误差
显然,我们希望得到泛化误差小的学习器,然而,我们实现并不知道新样本是什么样,我们能做的是努力使经验误差最小化。
1.3 过拟合
欠拟合:对训练样本的一般性质尚未学好。
- 欠拟合比较容易克服,例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等;
过拟合:当学习器把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。
- 过拟合则很麻烦,是机器学习面临的关键障碍;然而我们必须认识到,过拟合是无法彻底避免的,我们所做的只是“缓解”,或者是减小其风险。
2. 评估方法
我们使用一个“测试集”(testing set)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。通常我们假设测试样本也是从样本真实分布中独立同分布采样而得。但需要注意的是测试样本尽量不要在训练集中出现。
2.1 留出法
直接将数据集 D D D划分为两个互斥的集合,其中一个集合作为训练集 S S S,另一个作为测试集 T T T。在 S S S上训练出模型后,用 T T T来评估其测试误差,作为对泛化误差的估计。
需要注意的问题:
① 训练/测试集的划分要尽可能保持数据分布的一致性。可采用“分层采样”的保留类别比例的采样方式
② 即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集
D
D
D进行分割。选择哪些样本进入训练/测试集?这些不同的划分将导致不同的模型评估结果,因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
③ 留出法存在一个无法解决的问题:测试集小时,评估结果的方差大;测试集大时,评估结果的偏差大。
2.2 交叉验证法
单次交叉验证步骤:
① 先将数据集
D
D
D划分为
k
k
k个大小相似的互斥子集,每个子集
D
i
D_i
Di都尽可能保持数据分布的一致性。
② 每次用
k
−
1
k-1
k−1个子集的并集作为训练集,余下的那个子集作为测试集,这样就可以获得
k
k
k组训练/测试集,从而可进行
k
k
k次训练和测试
③ 最终返回这
k
k
k个测试结果的均值。
显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k k k的取值。( k k k值小,测试集大,保真性差; k k k值大,测试集小,稳定性差。)
与留出法相似,交叉验证法同样要随机使用不同的划分方式,重复 p p p次,最终的评估结果是这 p p p次 k k k折交叉验证结果的均值。
2.3 自助法
留出法和交叉验证法因为保留了一部分样本用于测试,因此存在因训练样本规模不同( S S S规模小于 D D D)而导致的估计偏差。
定义:
① 给点包含
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中有一部分样本会在
D
′
D'
D′中重复出现,而另一部分样本不出现。这些样本数量经估计计算大约占比36.8%,将这些未出现的样本(
D
\
D
′
D \backslash D'
D\D′)作为测试集。
这样实际评估的模型与期望评估的模型都使用 m m m个训练样本,而我们仍有数据总量约 1 / 3 1/3 1/3的、没在训练集中出现的样本用于测试。这样的测试结果,亦称“包外估计”。
自助法产生的数据集改变了初始数据集的分布,这会引入估计误差
2.4 评估方法选择
自助法在数据集较小、难以有效划分训练/测试集时很有用;但在初始数据量足够时,留出法和交叉验证法更常用一些。
2.5 调参
大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别,还需要对算法参数进行设定,即“调参”。
调参与算法选择的区别:
很多参数在实数范围内选择,且每个模型的参数数量较多,即便按步长进行学习,模型数量也是巨大的,并且还无法找出最优的模型。
2.6 最终模型
事实上我们只使用了一部分数据训练模型。因此,在模型选择完成后,学习算法和参数配置已选定(已完成模型选择和调参),此时应该用整个数据集 D D D重新训练模型(重新学习),这才是最终提交给用户的模型。
2.7 注意
训练集:(用来学习的样本集,用于分类器参数的拟合)
验证集:基于验证集上的性能来进行模型选择和调参。(用来调整分类器超参数的样本集)
是将训练数据另外划分为训练集和验证集
测试集:用测试集上的判别效果来估计模型在实际使用时的泛化能力。(仅用于对已经训练好的分类器进行性能评估的样本集)
3. 性能度量
对学习器的泛化能力进行评估,不仅需要有效可行的实验估计方法(评估方法);还需要有衡量模型泛化能力的评价标准(性能度量)
3.1 回归任务的性能度量
给定样例集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\{(\bm{x}_1,y_1),(\bm{x}_2,y_2),...,(\bm{x}_m,y_m)\}
D={(x1,y1),(x2,y2),...,(xm,ym)}
均方误差 (
m
e
a
n
s
q
u
a
r
e
d
e
r
r
o
r
\mathrm{mean\space squared\space error}
mean squared 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(\bm{x}_i)-y_{i})^2} E(f;D)=m1i=1∑m(f(xi)−yi)2 - 更一般地,对于数据分布
D
\mathcal{D}
D 和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅)
E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f;\mathcal{D})=\int_{\bm{x}\sim\mathcal{D}}(f(\bm{x})-y)^2p(\bm{x})d\bm{x} E(f;D)=∫x∼D(f(x)−y)2p(x)dx
3.2 分类任务的性能度量
3.2.1 错误率与精度
给定样例集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\{(\bm{x}_1,y_1),(\bm{x}_2,y_2),...,(\bm{x}_m,y_m)\}
D={(x1,y1),(x2,y2),...,(xm,ym)}
错误率 (
e
r
r
o
r
r
a
t
e
\mathrm{error\space rate}
error rate):
- 假设数据分布为均匀分布,即每个样本出现的概率相同
E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f;D)=\frac{1}{m}\sum_{i=1}^{m}{\mathbb{I}(f(\bm{x}_i)\neq y_{i})} E(f;D)=m1i=1∑mI(f(xi)=yi) - 更一般地,对于数据分布
D
\mathcal{D}
D 和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅)
E ( f ; D ) = ∫ x ∼ D I ( f ( x i ) ≠ y i ) p ( x ) d x E(f;\mathcal{D})=\int_{\bm{x}\sim\mathcal{D}}\mathbb{I}(f(\bm{x}_i)\neq y_i)p(\bm{x})d\bm{x} E(f;D)=∫x∼DI(f(xi)=yi)p(x)dx
精度 ( a c c u r a c y \mathrm{accuracy} accuracy):
- 假设数据分布为均匀分布,即每个样本出现的概率相同
a c c ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) a c c ( f ; D ) = 1 − E ( f ; D ) \begin{align*} &acc(f;D)=\frac{1}{m}\sum_{i=1}^{m}{\mathbb{I}(f(\bm{x}_i)=y_{i})}\\[12pt] &\phantom{acc(f;D)}=1-E(f;D) \end{align*} acc(f;D)=m1i=1∑mI(f(xi)=yi)acc(f;D)=1−E(f;D) - 更一般地,对于数据分布
D
\mathcal{D}
D 和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅)
a c c ( f ; D ) = ∫ x ∼ D I ( f ( x i ) = y i ) p ( x ) d x a c c ( f ; D ) = 1 − E ( f ; D ) m 355 \begin{align*} &acc(f;\mathcal{D})=\int_{\bm{x}\sim\mathcal{D}}\mathbb{I}(f(\bm{x}_i)= y_i)p(\bm{x})d\bm{x} \\[12pt] &\phantom{acc(f;D)}=1-E(f;\mathcal{D})m355 \end{align*} acc(f;D)=∫x∼DI(f(xi)=yi)p(x)dxacc(f;D)=1−E(f;D)m355
3.2.2 查准率、查全率与F1
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true postive)、假正例(false postive)、真反例(true negative)、假反例(false negative) 四种情形。如下表所示。
分类结果混淆矩阵 | ||
---|---|---|
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
显然有
T
P
+
F
P
+
T
N
+
F
N
=
样例数
TP+FP+TN+FN=样例数
TP+FP+TN+FN=样例数
易错点:
T
P
+
F
N
=
真实正例数
TP+FN=真实正例数
TP+FN=真实正例数(预测正例中对的部分+预测反例中错的部分)
F
P
+
T
N
=
真实反例数
FP+TN=真实反例数
FP+TN=真实反例数(预测正例中错的部分+预测反例中对的部分)
T
T
T 和
F
F
F 代表预测的对错情况,
P
P
P 和
N
N
N代表预测情况!
3.2.2.1 查准率(precision)
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
3.2.2.2 查全率/召回率(recall)
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
3.2.2.3 P P P 与 R R R 的矛盾关系
P P P与 R R R是一对矛盾的度量。例如,若希望好瓜尽可能多地被选出来,则可以通过增加选瓜的数量来实现,如果将所有西瓜都选上,那么所有的好瓜也必然被选上了,但这样查准率就会比较低。
3.2.2.4 P − R P-R P−R 图
学习器对样例进行分类时,预测结果一般都是置信度,即表示该样例是正例的概率,
比如:99%的概率认为样例A是正例,1%的概率认为样例B是正例。通过选择合适的分类阈值,比如50%,对样本进行划分,概率大于50%的就认为是正例,小于50%的就是负例。
我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样例作为正例进行预测(也即将每个样例的置信度逐个作为分类阈值),在该样例之前的都属于正例,该样例之后的都属于反例。每一个样例作为分类阈值时,都可以计算对应的
p
r
e
c
i
s
i
o
n
\mathrm{precision}
precision 和
r
e
c
a
l
l
\mathrm{recall}
recall ,以查准率为纵轴、查全率为横轴作图,可得到
P
−
R
P-R
P−R 图。
根据将逐个样例的置信度作为分类阈值的方法,可以推出,
3.2.2.4.1 起点和终点
假设有10个样例,其中5个为正例,5个为反例。
- 全被预测为反例
混淆矩阵 | ||
---|---|---|
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP=0 | FN=5 |
反例 | FP=0 | TN=5 |
此时 P = T P T P + F P = 0 0 + 0 \mathrm{P}=\frac{TP}{TP+FP}=\frac{0}{0+0} P=TP+FPTP=0+00 不存在; R = T P T P + F N = 0 0 + 5 = 0 \mathrm{R}=\frac{TP}{TP+FN}=\frac{0}{0+5}=0 R=TP+FNTP=0+50=0
- 第一个预测正例为真实正例
混淆矩阵 | ||
---|---|---|
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP=1 | FN=4 |
反例 | FP=0 | TN=5 |
此时 P = T P T P + F P = 1 1 + 0 = 1 \mathrm{P}=\frac{TP}{TP+FP}=\frac{1}{1+0}=1 P=TP+FPTP=1+01=1; R = T P T P + F N = 1 1 + 4 = 0.2 \mathrm{R}=\frac{TP}{TP+FN}=\frac{1}{1+4}=0.2 R=TP+FNTP=1+41=0.2
- 第一个预测正例为真实反例
混淆矩阵 | ||
---|---|---|
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP=0 | FN=5 |
反例 | FP=1 | TN=4 |
此时 P = T P T P + F P = 0 0 + 1 = 0 \mathrm{P}=\frac{TP}{TP+FP}=\frac{0}{0+1}=0 P=TP+FPTP=0+10=0; R = T P T P + F N = 0 0 + 5 = 0 \mathrm{R}=\frac{TP}{TP+FN}=\frac{0}{0+5}=0 R=TP+FNTP=0+50=0
- 全被预测为正例
混淆矩阵 | ||
---|---|---|
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP=5 | FN=0 |
反例 | FP=5 | TN=0 |
此时 P = T P T P + F P = 5 5 + 5 = 0.5 = 真实正例比例 \mathrm{P}=\frac{TP}{TP+FP}=\frac{5}{5+5}=0.5=真实正例比例 P=TP+FPTP=5+55=0.5=真实正例比例 ; R = T P T P + F N = 5 5 + 0 = 1 \mathrm{R}=\frac{TP}{TP+FN}=\frac{5}{5+0}=1 R=TP+FNTP=5+05=1
3.2.2.4.2 变化趋势
随着分类阈值(截断点)左移
R e c a l l \mathrm{Recall} Recall 值是递增的(但并非严格递增)。真实正例被预测为正例的越来越多,不会减少。
- 即截断点的每一次左移(多一个样例被预测为正例),分母真实正例数量
(
T
P
+
F
N
)
\mathrm{(TP+FN)}
(TP+FN) 总体保持不变,
① 该样例为真实正例,分子 T P \mathrm{TP} TP增加1, R \mathrm{R} R 值增大;
① 该样例为真实反例,分子 T P \mathrm{TP} TP不变, R \mathrm{R} R 值不变;
而 P r e c i s i o n \mathrm{Precision} Precision 值并非递减的,而是振荡的,虽然真实正例被预测为正例的变多,但真实反例被预测为正例的也会变多。
- 即截断点的每一次左移(多一个样例被预测为正例)
① 该样例为真实正例,分子和分母中的 T P \mathrm{TP} TP 同时增加1,根据糖水不等式,这杯糖水更甜了,也即 P \mathrm{P} P 值增大;
② 该样例为真实反例,分母中的 F P \mathrm{FP} FP 增加1,也即 P \mathrm{P} P 值减小。
综上所述,
若新增预测正例为真实正例,则
R
\mathrm{R}
R值和
P
\mathrm{P}
P值均增大,图像表现为递增;
若新增预测正例为真实反例,则
R
\mathrm{R}
R值不变,
P
\mathrm{P}
P值减小,图像表现为竖直下降;
另外P-R曲线肯定会经过(0,0)点,比如讲所有的样本全部判为负例(或者是前面几个样本判决错了,将负例判决为了正例),则TP=0,那么P=R=0,因此会经过(0,0)点,但随着阈值点左移,precision初始很接近1,recall很接近0,因此有可能从(0,0)上升的线和坐标重合,不易区分。
曲线最终不会到(1,0)点。很多P-R曲线的终点看着都是(1,0)点,这可能是因为负例远远多于正例。
最后一个点表示所有的样本都被判为正例,因此FN=0,所以recall = TP/(TP + FN) = 1, 而FP = 所有的负例样本数,因此precision = TP/(TP+FP) = 正例的占所有样本的比例,故除非负例数很多,否则precision不会为0.
如何通过
P
−
R
P-R
P−R 图判断学习器的性能?
4. 若一个学习器的
P
−
R
P-R
P−R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。例如A>C。
5. 若两个学习器的
P
−
R
P-R
P−R曲线出现交叉,则难以断言,如何进一步比较?
- 面积法:比较 P − R P-R P−R 曲线下面积的大小,它在一定程度上表征了学习器在查准率和查全率上取得相对 “双高” 的比例,但这个值不太容易估算;
- 平衡点法:平衡点(Break-Even Point, 简称 B E P BEP BEP),即“查准率=查全率”时的取值。取值越大,性能越优(为什么?存疑),例如A>B,但这个值过于简化。
3.2.2.5 F 1 F1 F1 度量及其推广
F 1 F1 F1 度量
F
1
F1
F1 度量是基于查准率和查全率的调和平均定义的。
F
1
=
1
1
2
⋅
(
1
P
+
1
R
)
F1=\frac{1}{\frac{1}{2}·(\frac{1}{P}+\frac{1}{R})}
F1=21⋅(P1+R1)1
化简整理得:
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=样例总数+TP−TN2×TP
为什么要使用调和平均数,而不是算数平均数或者几何平均数(存疑)?
- P P P 和 R R R 都是一个比例,不是具体的数;
- 与算数平均和几何平均相比,调和平均更重视较小值。
推广1—— F β F_\beta Fβ
但是在一些应用中,我们对查准率和查全率的重视程度是不同的。因此
F
1
F1
F1度量的一般形式——
F
β
F_{\beta}
Fβ,能让我们表达出对查准率 / 查全率的不同偏好,它定义为:
F
β
=
1
1
1
+
β
2
⋅
1
P
+
β
2
1
+
β
2
⋅
1
R
F_{\beta}=\frac{1}{\frac{1}{1+\beta^2}·\frac{1}{P}+\frac{\beta^2}{1+\beta^2}·\frac{1}{R}}
Fβ=1+β21⋅P1+1+β2β2⋅R11
化简整理得:
F
β
=
(
1
+
β
2
)
×
P
×
R
(
β
2
×
P
)
+
R
,
其中
β
>
0
F_\beta=\frac{(1+\beta^2)\times P \times R}{({\beta}^{2}\times P)+R}, \space\space\space其中\beta>0
Fβ=(β2×P)+R(1+β2)×P×R, 其中β>0
β
>
1
\beta>1
β>1时,查全率有更大影响;
β
<
1
\beta<1
β<1时,查准率有更大影响。
推广2—— 宏 F 1 F1 F1 和微 F 1 F1 F1
适用情况:在 n n n 个二分类混淆矩阵上综合考察查准率和查全率
- 进行多次训练/测试,每次得到一个混淆矩阵;
- 在多个数据集上进行训练/测试,希望估计算法的“全局”性能;
- 执行多分类任务,每两两类别的组合都对应一个矩阵。
宏 F 1 F1 F1
先在各混淆矩阵上分别计算出查准率和查全率,再计算平均值,得到 宏
F
1
F1
F1。
m
a
c
r
o
−
P
=
1
n
∑
i
=
1
n
P
i
m
a
c
r
o
−
R
=
1
n
∑
i
=
1
n
R
i
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
\mathrm{macro}-P=\frac{1}{n}\sum_{i=1}^{n}{P_i} \\[10pt]\mathrm{macro}-R=\frac{1}{n}\sum_{i=1}^{n}{R_i} \\[10pt]\mathrm{macro}-F1=\frac{2 \times \mathrm{macro}-P \times \mathrm{macro}-R}{\mathrm{macro}-P + \mathrm{macro}-R}
macro−P=n1i=1∑nPimacro−R=n1i=1∑nRimacro−F1=macro−P+macro−R2×macro−P×macro−R
微 F 1 F1 F1
先将各混淆矩阵的对应元素进行平均,得到
T
P
、
F
P
、
T
N
。
F
N
TP、FP、TN。FN
TP、FP、TN。FN 的平均值,再基于这些平均值计算出 微
F
1
F1
F1。
m
i
c
r
o
−
P
=
T
P
‾
T
P
‾
+
F
P
‾
m
i
c
r
o
−
R
=
T
P
‾
T
P
‾
+
F
N
‾
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
\mathrm{micro}-P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}} \\[10pt]\mathrm{micro}-R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}} \\[10pt]\mathrm{micro}-F1=\frac{2 \times \mathrm{micro}-P \times \mathrm{micro}-R}{\mathrm{micro}-P + \mathrm{micro}-R}
micro−P=TP+FPTPmicro−R=TP+FNTPmicro−F1=micro−P+micro−R2×micro−P×micro−R
3.2.3 ROC与AUC
3.2.3.1 ROC曲线
R
O
C
\mathrm{ROC}
ROC 全称是“受试者工作特征”(
R
e
c
e
i
v
e
r
O
p
e
r
a
t
i
n
g
C
h
a
r
a
c
t
e
r
i
s
t
i
c
\mathrm{Receiver\space Operating\space Characteristic}
Receiver Operating Characteristic)曲线。
与
P
−
R
P-R
P−R 曲线相似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值——真正例率(真实正例样本中被预测为正的比例,True Postive Rate,简称TPR)和假正例率(真实反例样本中被预测为正的比例,False Postive Rate,简称FPR)。
T
P
R
=
T
P
T
P
+
F
N
F
P
R
=
F
P
F
P
+
T
N
\mathrm{TPR}=\frac{TP}{TP+FN} \\[10pt]\mathrm{FPR}=\frac{FP}{FP+TN}
TPR=TP+FNTPFPR=FP+TNFP
对于同一任务,因为
T
P
+
F
N
TP+FN
TP+FN代表真实正例数量,
F
P
+
T
N
FP+TN
FP+TN代表真实反例数量,两者均为定值,因此
T
P
R
TPR
TPR 和
F
P
R
FPR
FPR 的分母保持不变。而随着 分类阈值(threshold,表现为截断点) 的变化(往左变化,变小),预测为正的样本越来越多,
T
P
TP
TP 和
F
P
FP
FP 也随之增加,因此TPR和FPR呈正相关关系。
特别地,当截断点在最前面时,即没有样例都被预测为正,
T
P
TP
TP 和
F
P
FP
FP 均等于0,也即
T
P
R
TPR
TPR 和
F
P
R
FPR
FPR 均等于0;当截断点在最后面时,即所有样本都被预测为正,不存在被预测为反例的样本,那么
T
N
=
0
,
F
N
=
0
TN=0,FN=0
TN=0,FN=0,也即
T
P
R
TPR
TPR 和
F
P
R
FPR
FPR 均等于1。
分别以
T
P
R
TPR
TPR 和
F
P
R
FPR
FPR 为横、纵坐标作图,就得到了“
R
O
C
\mathrm{ROC}
ROC 曲线”。
现实任务中通常是利用有限个测试样例来绘制
R
O
C
\mathrm{ROC}
ROC 图,此时仅能获得有限个坐标对,无法产生(a)图中的光滑
R
O
C
\mathrm{ROC}
ROC 曲线,而产生(b)图所示的近似
R
O
C
\mathrm{ROC}
ROC 曲线。
3.2.3.2 近似ROC曲线的绘制过程
- 给定 m + m^+ m+个正例和 m − m^- m−个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设为最大,即没有样例被预测为正,此时真正例率和反正例率均为0,在坐标 ( 0 , 0 ) (0,0) (0,0) 处标记一个点。
- 将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点为 ( x , y ) (x,y) (x,y)。
- 当前若为真正例,则对应标记点坐标为 ( 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)。
3.2.3.3 如何根据ROC曲线比较学习器性能?
当学习器有较好的性能时,假正例率应尽可能的低,真正例率应尽可能的高。
- 若一个学习器的 R O C \mathrm{ROC} ROC 曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。(相同假正例率的情况下,后者的真正例率更高)
- 若两个学习器的 R O C \mathrm{ROC} ROC 曲线发生交叉,则难以断言,需要进一步比较,依据是比较 R O C \mathrm{ROC} ROC 曲线下的面积,即 A U C \mathrm{AUC} AUC ( A r e a U n d e r R O C C u r v e \mathrm{Area\space Under\space ROC\space Curve} Area Under ROC Curve )。
3.2.3.4 AUC
假定
R
O
C
\mathrm{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),则
A
U
C
\mathrm{AUC}
AUC 可估算为:
A
U
C
=
1
2
∑
i
=
1
m
−
1
(
x
i
+
1
−
x
i
)
⋅
(
y
i
+
y
i
+
1
)
\mathrm{AUC}=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)·(y_i+y_{i+1})
AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1)
形式化地看,AUC考虑的是样本预测的排序质量,如何理解?
在
R
O
C
\mathrm{ROC}
ROC 曲线图中,取
(
0
,
0
)
、
(
0
,
1
)
、
(
1
,
1
)
、
(
1
,
0
)
(0,0)、(0,1)、(1,1)、(1,0)
(0,0)、(0,1)、(1,1)、(1,0)形成一个面积为1的正方形,将横轴的
[
0
,
1
]
[0,1]
[0,1]划分成
m
−
m^-
m−份,将纵轴的
[
0
,
1
]
[0,1]
[0,1]划分成
m
+
m^+
m+份。整个正方形被划分成
m
+
m
−
m^+m^-
m+m−个小格子,每个小格子的面积为
1
m
+
m
−
\frac{1}{m^+m^-}
m+m−1,将所有样例根据预测值排序好,从预测值最大的真实正例开始分析,分析其前面有几个真实反例,每有1个真实反例,图上表现为坐标点向右平移
1
m
−
\frac{1}{m^-}
m−1个单位;接着分析预测值第二大的真实正例,图上表现为坐标点向上平移
1
m
+
\frac{1}{m^+}
m+1个单位。特别地,若存在真实正例和真实反例的预测值相等,则图上表现为坐标点向右上方移动。
给定
m
+
m^+
m+个正例和
m
−
m^-
m−个反例,令
D
+
D^+
D+和
D
−
D^-
D−分别表示正、反例集合,则排序“损失”(loss)定义为
ℓ
r
a
n
k
=
1
m
+
m
−
∑
x
+
∈
D
+
∑
x
−
∈
D
−
(
I
(
f
(
x
+
)
<
f
(
x
−
)
)
+
1
2
I
(
f
(
x
+
)
=
f
(
x
−
)
)
)
\ell_{rank}=\frac{1}{m^+m^-}\sum_{\bm{x}^+\in D^+}\sum_{\bm{x}^-\in D^-}(\mathbb{I}(f(\bm{x}^+)<f(\bm{x}^-))+\frac{1}{2}\mathbb{I}(f(\bm{x}^+)=f(\bm{x}^-)))
ℓrank=m+m−1x+∈D+∑x−∈D−∑(I(f(x+)<f(x−))+21I(f(x+)=f(x−)))
容易看出
ℓ
r
a
n
k
\ell_{rank}
ℓrank 对应的是
R
O
C
\mathrm{ROC}
ROC 曲线之上的面积。因此有:
A
U
C
=
1
−
ℓ
r
a
n
k
\mathrm{AUC}=1-\ell_{rank}
AUC=1−ℓrank
3.2.4 代价敏感错误率与代价曲线
3.2.4.1 代价敏感错误率
对于二分类任务而言,可能存在两种类型的错误:
Ⅰ类错误:错误地将真实正例归为反例;
Ⅱ类错误:错误地将真实反例归为正例。
前文介绍的性能度量中,我们通常认为这两种类型的错误代价是相等的,并没有考虑不同错误会造成不同的后果。例如:
- 错误率是直接计算“错误次数”
- P、R、F1:
R R R表示所有真实正例中预测正确的比例。 ( 1 − R ) (1-R) (1−R)则是所有真实正例中被预测错误的真实正例比例,可以近似认为是Ⅰ类错误;
P P P表示所有被预测为正例的样例中真实正例的比例。 ( 1 − P ) (1-P) (1−P)则是所有所有被预测为正例的样例中真实反例的比例,也即被预测错误的真实反例的比例,可以近似认为是Ⅱ类错误。
但是因为两者的分母不同,所以只能认为 F β F_{\beta} Fβ近似地考虑了两种类型错误的不同代价。
F β = 1 1 1 + β 2 ⋅ 1 P + β 2 1 + β 2 ⋅ 1 R F_{\beta}=\frac{1}{\frac{1}{1+\beta^2}·\frac{1}{P}+\frac{\beta^2}{1+\beta^2}·\frac{1}{R}} Fβ=1+β21⋅P1+1+β2β2⋅R11
Ⅰ类错误数越多, R R R越小。 F β F_{\beta} Fβ越小。且当 β > 1 \beta>1 β>1时,Ⅰ类错误的代价更大。 - ROC曲线:
为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。
以二分类任务为例,我们设置一个“代价矩阵”,其中
c
o
s
t
i
j
cost_{ij}
costij表示将第
i
i
i类样本预测为第
j
j
j类样本的代价。
二分类代价矩阵 | ||
---|---|---|
真实类别 | 预测类别 | |
第0类 | 第1类 | |
第0类 | 0 | cost_01 |
第1类 | cost_10 | 0 |
若将第0类作为正类、第1类作为反类,令
D
+
D^+
D+与
D
−
D^-
D−分别代表样例集
D
D
D的正例子集和反例子集,则“代价敏感”错误率为:
E
(
f
;
D
;
c
o
s
t
)
=
1
m
(
∑
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
)
E(f;D;cost)=\frac{1}{m}(\sum_{\bm{x}_i\in D^+}{\mathbb{I}(f(\bm{x}_i)\neq y_i)\times cost_{01}}+\sum_{\bm{x}_i\in D^-}{\mathbb{I}(f(\bm{x}_i)\neq y_i)\times cost_{10}})
E(f;D;cost)=m1(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,则可定义出多分类任务的代价敏感性能度量。
3.2.4.1 代价曲线
在非均等代价下,
R
O
C
\mathrm{ROC}
ROC 曲线不能直接反映出学习器的期望总体代价,而“代价曲线”(cost curve)则可以达到该目的。
代价曲线图的横轴是取值为
[
0
,
1
]
[0,1]
[0,1] 的正例概率代价,
p
p
p是样例是正例的概率:
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\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}}
P(+)cost=p×cost01+(1−p)×cost10p×cost01
如何理解?
设总样例数为
m
m
m,其中真实正例数为
m
+
m^+
m+,真实反例数为
m
−
m^-
m−
P
(
+
)
c
o
s
t
=
p
p
+
(
1
−
p
)
×
c
o
s
t
10
c
o
s
t
01
P
(
+
)
c
o
s
t
=
m
+
m
m
+
m
+
(
1
−
m
+
m
)
×
c
o
s
t
10
c
o
s
t
01
P
(
+
)
c
o
s
t
=
m
+
m
+
+
m
−
×
c
o
s
t
10
c
o
s
t
01
\begin{align*} &P(+)cost=\frac{p}{p+(1-p)\times \frac{cost_{10}}{cost_{01}}}\\[12pt] &\phantom{P(+)cost}=\frac{\frac{m^+}{m}}{\frac{m^+}{m}+(1-\frac{m^+}{m})\times \frac{cost_{10}}{cost_{01}}}\\[12pt] &\phantom{P(+)cost}=\frac{m^+}{m^++m^-\times \frac{cost_{10}}{cost_{01}}} \end{align*}
P(+)cost=p+(1−p)×cost01cost10pP(+)cost=mm++(1−mm+)×cost01cost10mm+P(+)cost=m++m−×cost01cost10m+
当
c
o
s
t
10
:
c
o
s
t
01
=
1
cost_{10}:cost_{01}=1
cost10:cost01=1时,即Ⅰ类错误和Ⅱ类错误代价相同,
P
(
+
)
c
o
s
t
=
p
P(+)cost=p
P(+)cost=p;
当
c
o
s
t
10
:
c
o
s
t
01
=
4
cost_{10}:cost_{01}=4
cost10:cost01=4时,即Ⅱ类错误代价比Ⅰ类错误代价更大、更敏感,相当于把真实反例数扩大4倍