💠 错误率(error rate)
如果在
m
m
m 个样本中有
a
a
a 个样本分类错误,则:
错
误
率
E
=
a
/
m
错误率E=a/m
错误率E=a/m
💠 精度(accuracy)
精
度
=
1
?
错
误
率
精度 = 1-错误率
精度=1?错误率
💠 误差(error)
更一般地,我们把学习器的实际预测输出,与样本的真实输出之间的差异称为误差。
💠 经验误差(empirical error) vs 泛化误差(generalization error)
- 学习器在训练样本上的误差称为 训练误差 或 经验误差
- 学习器在新样本上的误差称为 泛化误差。
显然,我们的目标是:泛化误差最小。 然而,由于我们事先并不知道新样本是什么。 因此,我们实际能做的是努力使 经验误差 最小。
💠 过拟合(overfitting) vs 欠拟合(underfitting)
当学习器把训练样本学得 “太好” 的时候,很可能把训练样本自身的一些特点当做了所有潜在样本都具有的一般性质,导致泛化性能下降。这就是 过拟合。与之相反的就是 欠拟合。
举例:
💠 测试集(testing set)
用来测试学习器对新样本的判别能力。
测试集的误差为测试误差,作为泛化误差的近似。
测试集应尽可能与训练集互斥。即不在训练集中出现,不在训练过程中使用。
💠 留出法(hold-out)
直接将数据集
D
D
D划分为两个互斥的集合,其中一个集合作为训练集
S
S
S,另一个作为测试集
T
T
T。
常见的做法是大约 2/3 ~ 4/5 用于训练,剩余样本用于测试。
💠 交叉验证法(cross validation) / k折交叉验证(k-fold cross validation)
步骤:
- 将数据集
D
D
D划分为
k 个大小相似的互斥子集。且每个子集保持数据分布的一致性。 - 用
k-1 个子集作为训练集,余下的那个子集作为测试集。这样就得到了k 组训练/测试集。 - 可进行
k 组训练与测试,最终取平均值。
此法稳定性与保真性很大程度上取决于k 的取值,因此又称为 k折交叉验证。k 常见取值为10 。
此法和划分方式也有关,因此可用不同的划分方式重复p 次,最终取平均值。
若
D
D
D包含m 个样本,且k=m ,此时称为 留一法(Leave-One-Out,简称LOO)。它比较准确(也未必永远比较准确),缺点是当m 比较大时,计算开销较大。
💠 自助法(bootstrapping)
- 对于包含
m 个样本的数据集
D
D
D,我们对它进行采样来产生数据集
D
′
D'
D′: - 每次从
D
D
D中随机挑选一个样本拷贝到
D
′
D'
D′,这样重复
m 次。 - 产生的
D
′
D'
D′用作训练集,
(
D
?
D
′
)
(D-D')
(D?D′)用作测试集。
💠 参数调节(parameter tuning)
大多学习算法都有 参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别。
在进行模型选择时,除了对算法进行选择,还需要对参数进行设定,也就是参数调节简称调参。
💠 验证集(validation set)
用于评估和选择算法与参数时的数据集。
💠 性能度量(performance measure)
——衡量模型泛化能力的衡量标准。
给定样例集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\}
D={(x1?,y1?),(x2?,y2?),...,(xm?,ym?)},其中
y
i
y_i
yi? 是
x
i
x_i
xi? 的真实标记。要评估学习器
f
f
f 的性能,就要将学习器预测结果
f
(
x
)
f(x)
f(x) 与真实标记
y
y
y 进行比较。
💠 均方误差(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(x_i)-y_i)^2
E(f;D)=m1?i=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;D)=\int_{x\sim\mathcal{D}}^{}(f(x)-y)^2p(x)dx
E(f;D)=∫x~D?(f(x)?y)2p(x)dx
💠 错误率
错误率:
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(x_i )\ne y_i)
E(f;D)=m1?i=1∑m?I(f(xi?)?=yi?)
(其中
I
(
?
)
\mathbb{I}(\cdot)
I(?) 是指示函数,
?
\cdot
? 为真则取1,否则取0)
精度:
a
c
c
(
f
;
D
)
=
1
m
∑
i
=
1
m
I
(
f
(
x
i
)
=
y
i
)
=
1
?
E
(
f
;
D
)
\begin{aligned} acc(f;D) & =\frac{1}{m}\sum_{i=1}^m \mathbb{I} (f(x_i )= y_i) \\ & = 1-E(f;D) \\ \end{aligned}
acc(f;D)?=m1?i=1∑m?I(f(xi?)=yi?)=1?E(f;D)?
更一般的,对于 数据分布
D
\mathcal{D}
D 和 概率密度函数
p
(
?
)
p(\cdot)
p(?):
错误率:
E
(
f
;
D
)
=
∫
x
~
D
I
(
f
(
x
)
≠
y
)
p
(
x
)
d
x
E(f;D)=\int_{x\sim\mathcal{D}}^{} \mathbb{I}(f(x)\ne y)p(x)dx
E(f;D)=∫x~D?I(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
)
\begin{aligned} acc(f;D)&=\int_{x\sim\mathcal{D}}^{} \mathbb{I}(f(x) = y)p(x)dx \\ & = 1-E(f;D) \\ \end{aligned}
acc(f;D)?=∫x~D?I(f(x)=y)p(x)dx=1?E(f;D)?
💠 查准率(precision) vs 查全率(recall)
对于二分类:
- | 预测:真 | 预测:假 |
---|
真实:真 | TP(真正例,true positive) | FN(假反例,false negative) | 真实:假 | FP(假正例,false positive) | TN(真反例,true negative) |
查准率P(挑出的好瓜中有多少是真的好瓜)与查全率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是矛盾的,一个高时另一个低。
- 图中A完全包住了C,说明A完全优于C。
💠 平衡点(Break-Even Point,简称BEP)
当 “查准率 = 查全率” 时的取值。
💠
F
1
F1
F1
BEP过于简单,更常用的是F1度量:
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?
💠
F
β
F_{\beta}
Fβ?
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? 其中
β
{\beta}
β对量了相对的重要性。
💠 ROC(Receiver Operating Characteristic)曲线
ROC曲线的纵轴是真正例率(True Positive Rate,简称TPR),横轴是假正例率(False Positive Rate,简称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?
(图源《机器学习》)
💠 AUC(Area Under ROC Curve)
——ROC曲线下的面积。
💠 非均等代价(unequal cost)
可根据具体任务设定一个代价矩阵(cost matrix):
- | 预测:第0类 | 预测:第1类 |
---|
真实:第0类 | 0 |
c
o
s
t
01
cost_{01}
cost01? | 真实:第1类 |
c
o
s
t
10
cost_{10}
cost10? | 0 |
💠 比较检验
如何“比较”性能度量的结果?是直接“比大小”吗?实际上要复杂得多。这涉及几个重要因素:
- 评估获得的是测试集上的性能,它和泛化性能未必相同。
- 测试集上的性能和测试集的选择有很大关系。
- 很多学习算法有一定的随机性。
💠 统计假设检验(hypothesis test)
基于假设检验结果可推断出:若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。
💠 偏差-方差分解(bias-variance decomposition)
它是解释学习算法泛化性能的一种重要工具。它试图对学习算法的期望泛化错误率进行拆解。
通过简单的多项式展开合并,可对算法的期望泛化误差进行分解:
E
(
f
;
D
)
=
b
i
a
s
2
(
x
)
+
v
a
r
(
x
)
+
?
2
E(f;D)=bias^2(x)+var(x)+\epsilon^2
E(f;D)=bias2(x)+var(x)+?2
也就是说,泛化误差可分解为:
- 偏差(bias)
- 方差(var)
- 噪声(
?
\epsilon
?)
|