1. 过拟合,欠拟合
**过拟合(overfitting)与欠拟合(underfitting)**是统计学中的一组现象。过拟合是在统计模型中,由于使用的参数过多而导致模型对观测数据(训练数据)过度拟合,以至于用该模型来预测其他测试样本输出的时候与实际输出或者期望值相差很大的现象。欠拟合则刚好相反,是由于统计模型使用的参数过少,以至于得到的模型难以拟合观测数据(训练数据)的现象
2. 评估方法
通常用测试误差来近似模型的泛化误差。下面介绍几种常用的评估方法:
2.1 留出法(hold-out)
留出法直接将数据集D 划分为两个互斥的部分,其中一部分作为训练集S ,另一部分用作测试集T 。
通常训练集和测试集的比例为70%:30%。同时,训练集测试集的划分有两个注意事项:
- 尽可能保持数据分布的一致性。避免因数据划分过程引入的额外偏差而对最终结果产生影响。在分类任务中,保留类别比例的采样方法称为“分层采样”(stratified sampling)。
- 采用若干次随机划分避免单次使用留出法的不稳定性。
2.2 交叉验证法(cross validation)
交叉验证法先将数据集D 划分为k 个大小相似的互斥子集,每次采用k−1个子集的并集作为训练集,剩下的那个子集作为测试集。进行k次训练和测试,最终返回k 个测试结果的均值。又称为k折交叉验证(k-fold cross validation)
- 训练集:训练集+验证集
- 测试集:测试集
为了让从训练得到模型结果更加准确,为减少因样本划分带来的偏差,通常重复p 次不同的划分,最终结果是p 次k 折交叉验证结果的均值。
2.3 留一法(leave-one-out,LOO)
留一法是k 折交叉验证k = m (m为样本数)时候的特殊情况。即每次只用一个样本作测试集。该方法计算开销较大。
2.4 自助法(bootstrapping)
自助法以自助采样为基础(有放回采样)。每次随机从D挑选一个样本,放入D ′ 中,然后将样本放回D 中,重复m次之后,得到了包含m个样本的数据集。
样本在
m
m
m 次采样中始终不被采到的概率是
(
1
−
1
m
)
m
,
\left(1-\frac{1}{m}\right)^{m},
(1−m1)m, 取极限得到lim
m
→
∞
(
1
−
1
m
)
m
=
1
e
=
0.36
8
∘
_{m \rightarrow \infty}\left(1-\frac{1}{m}\right)^{m}=\frac{1}{e}=0.368_{\circ}
m→∞(1−m1)m=e1=0.368∘ 即
D
D
D 中约有36.8%的样本未 出现在
D
′
D^{\prime}
D′ 中。于是将
D
′
D^{\prime}
D′ 用作训练集,
D
\
D
′
D \backslash D^{\prime}
D\D′ 用作测试集。这样,仍然使用
m
m
m 个训练样本, 但约有1/3未出现在训练集中的样本被用作测试 集。
优点:自助法在数据集较小、难以有效划分训练/测试集时很有用。
缺点:然而自助法改变了初始数据集的分布,这回引入估计偏差。
3. 性能度量
二分类问题常用的评价指标时查准率和查全率。
根据预测正确与否, 将样例分为以下四种:
TP (True positive,真正例
)
⟶
) \longrightarrow
)⟶ 将正类预测为正类数。
FP (False postive,假正例
)
⟶
) \longrightarrow
)⟶ 将反类预测为正类数。
TN (True negative,真反例
)
⟶
) \longrightarrow
)⟶ 将反类预测为反类数。
FN (False negative,假反例) 一将正类预测为反类数。
(1) 查准率(precision,精确率):
P = T P T P + F P P=\frac{T P}{T P+F P} P=TP+FPTP
即将正类预测为正类数与预测为正类的总数的比值。
(2)查全率(recall,召回率)
R
=
T
P
T
P
+
F
N
R=\frac{T P}{T P+F N}
R=TP+FNTP
即将正类预测为正类数与正类总数的比值。
查准率和查全率是一对矛盾的度量。是查佳率和查全率的调和平均:
1
F
1
=
1
2
(
1
P
+
1
R
)
\frac{1}{F_{1}}=\frac{1}{2}\left(\frac{1}{P}+\frac{1}{R}\right)
F11=21(P1+R1)
F
1
=
2
P
R
P
+
R
F_{1}=\frac{2 P R}{P+R}
F1=P+R2PR
当查重率和坦准率都高时,
F
1
F_{1}
F1 也会高。
4. 泛化能力
泛化误差 (Generalization error) 是学得的模型
f
f
f 对未知数据预测的误差。
学习算法的期肺输出是:
f
ˉ
(
x
)
=
E
D
[
f
(
x
,
D
)
]
\bar{f}(x)=\mathrm{E}_{D}[f(x, D)]
fˉ(x)=ED[f(x,D)]
偏差是期胡输出与真实标记之间的差别:
bias
2
(
x
)
=
(
f
ˉ
(
x
)
−
y
)
2
\operatorname{bias}^{2}(x)=(\bar{f}(x)-y)^{2}
bias2(x)=(fˉ(x)−y)2
方差是预沖值与期望输出之间的方差:
var
(
x
)
=
E
D
[
(
f
(
x
,
D
)
−
f
ˉ
(
x
)
)
2
]
\operatorname{var}(x)=\mathrm{E}_{D}\left[(f(x, D)-\bar{f}(x))^{2}\right]
var(x)=ED[(f(x,D)−fˉ(x))2]
噪声是标记与真实标记之间的方差:
ε
2
=
E
D
[
(
y
D
−
y
)
2
]
\varepsilon^{2}=\mathrm{E}_{D}\left[\left(y_{D}-y\right)^{2}\right]
ε2=ED[(yD−y)2]
偏差度量了学习算法的期望顶测与真实结果的偏高程度。刻画了学习算法本身的拟合能力.
噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度
算法的期望泛化误差可以分解为偏差、方差和噪声之和(推导过程见参考文献,《统计学习方法》第一章统计学习方法概论——李航):
E
(
f
;
D
)
=
bias
2
(
x
)
+
var
(
x
)
+
ε
2
E(f ; D)=\operatorname{bias}^{2}(\boldsymbol{x})+\operatorname{var}(\boldsymbol{x})+\varepsilon^{2}
E(f;D)=bias2(x)+var(x)+ε2