文章目录
1 经验误差与过拟合
- 错误率: E = a m E=\frac{a}{m} E=ma
- 精度(accuracy): 1 − a m 1-\frac{a}{m} 1−ma
- 误差: y ^ − y \hat y - y y^−y
- 训练误差/经验误差:学习器在训练集上的误差
- 泛化误差:在新样本上的误差
- 过拟合:学习器把训练样本学的很好,但把训练样本的一些特点当做了潜在样本都会具有的一般特性,导致泛华性能下降。
- 因素:学习能力过于强大
- 欠拟合:训练样本的一般性质尚未学好
- 因素:学习能力低下
2 评估方法
- 使用“测试集”,用“测试误差”作为泛化误差的近似,从而选择学习算法及参数。
- 测试集应尽可能与训练集互斥,即不出现在训练集中。
产生训练集S和测试集T的常见做法 :
留出法(hold-out)
直接将数据集D划分为两个互斥的集合,其中一个集合做训练集S,另一个做测试集T。
- 训练、测试集划分要尽可能保持数据分布的一致性,避免因为数据划分引入额外的偏差而对最终结果产生影响。
- 从采样的角度,使用"分层采样",即训练、测试集中的正负样本比例数目应该一致。
- 单次留出法划分集合得到的结果往往不够稳定可靠,往往要若干次随机划分,返回结果的平均。
- 当测试集小时,评估结果的方差较大;当训练集小时,结果的偏差较大。
交叉验证(cross validation)
将数据集D划分为K个大小相似的互斥子集;每个子集尽可能保持数据分布的一致性(即从D中分层采样得到)。每次用K-1个子集的并集做训练集,余下的那个用作测试集。最终返回K次训练的平均值。
- 将D划分为K个子集存在多种划分方式,为了减少因样本划分不同而引入的差别,k折交叉验证通常使用不同的方法划分P次,最终评估p*k次结果的均值,称作“p次K折交叉验证”
自助法(bootstrapping)
给定包含m个样本的数据集D,有放回的随机挑选一个样本,共采样m次,组成的数据集为
D
′
D^\prime
D′。样本在m次采样中始终不被采到的概率
(
1
−
1
m
)
m
→
1
e
≈
0.368
(1-\frac{1}{m})^m \rightarrow \frac{1}{e} \approx0.368
(1−m1)m→e1≈0.368
将
D
′
D^\prime
D′作为训练集,没有出现在训练集中的数据做测试集。这样的测试结果称为“包外估计”(out of bag estimate)
- 在数据集较小、难以有效划分、训练集时很有用
- 自助法能从初始数据集中产生不同的训练集,对集成学习方法等有很大的好处。
调参(parameter tuning)
- 对每个参数选定一个范围和变化步长
- 给定了数据集D,在模型评估和选择过程需要留出一部分数据进行评估测试,只使用了一部分数据训练模型。在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型,这是最终提交给用户的模型。
- 一般测试集指估计模型泛化能力的数据集;把训练集另分为训练集和验证集,基于验证集的性能进行模型选择和调参。
3 性能度量
- 性能度量(performance measure):衡量模型泛化能力的标准
- 性能度量反映了任务需求。使用不同的性能度量会导致不同的评判结果。
回归任务常用性能度量:均方误差MSE(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)=m1i=1∑m(f(xi)−yi)2
或用概率密度函数
p
(
x
)
p(x)
p(x)
E
(
f
;
D
)
=
∫
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
E(f;D) = \int(f(x)-y)^2 p(x)dx
E(f;D)=∫(f(x)−y)2p(x)dx
分类任务常用的性能度量:错误率和精度;查准率/准确率(precision)、查全率/召回率(recall)、F1;ROC曲线
3.1 错误率和精度
错误率的定义
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) \neq y_i)
E(f,D)=m1i=1∑mI(f(xi)=yi)
精度的定义
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 I(f(x_i) = y_i) \\ &= 1- E(f,D) \end{aligned}
acc(f;D)=m1i=1∑mI(f(xi)=yi)=1−E(f,D)
3.2 查准率/准确率(precision)、查全率/召回率(recall)、F1
例如“检索出的信息中有多少比例是用户感兴趣的”.
对于二分类问题,把数据分为
- 真正例(true positive)
- 假正例(false positive)
- 真反例(true negative)
- 假反例(false negative)
得到混淆矩阵
/ | 预测为正 | 预测为反 |
---|---|---|
实际为正 | TP (真正) | FN(假反) |
实际为反 | FP (假正) | TN(真反) |
P-R曲线
- 准确率precision(被判定为正的样例的准确率)
P = T P T P + F P P = \frac{TP}{TP + FP} P=TP+FPTP - 召回率recall(所有本身是正例被判断正确的概率)
R = T P T P + F N R = \frac{TP}{TP + FN} R=TP+FNTP
precision和recall即矛盾又统一。为了提高precision,分类器需要尽量在“更有把握时”把样本预测为正样本。但有可能过于保守漏掉很多“没有把握”的正样本,导致recall值降低。
P-R曲线:横轴是召回率,纵轴是精确率。曲线上的点代表在某阈值下,模型将大于该阈值的结果判定为正样本,小于阈值的结果判定为负样本,此时对应的召回率和精确率。曲线是通过将阈值从高到低移动生成的。

两个模型性能的比较:
- 如果一个模型的p-r曲线能被另一个模型的曲线包住,则后者的性能优于前者
- 如果两模型曲线相交,比较曲线下面积,在一定程度上表征学习器的两个值“双高”的比例
- 曲线下面积不容易计算,可以用“平衡点”度量(查准率=查全率的点)
F1 score
精确率和召回率无法精确的反映排序模型的性能。而F1 score是两个值的调和平均值
F
1
=
2
×
p
r
e
c
i
s
i
o
n
×
r
e
c
a
l
l
p
r
e
c
i
s
i
o
n
+
r
e
c
a
l
l
F1= \frac{2 \times precision \times recall}{precision + recall}
F1=precision+recall2×precision×recall
3.3 ROC曲线
ROC(Receiver Characteristic Curve,受试者工作特征曲线)曲线常作为评估二值分类器重要的指标。
- 假阳性率(False Positive Rate,FPR)
F P R = F P N FPR = \frac{FP}{N} FPR=NFP - 真阳性率(True Positive Rate,TPR)
T P R = T P P TPR = \frac{TP}{P} TPR=PTP
ROC曲线的横坐标是FPR,纵坐标是TPR;通过将二分类阈值由大到小的变化,计算真阳性率和假阳性率画图。

两模型的比较:
- 若一个模型的ROC把另一模型的ROC包住,前者的性能优于后者
- 若曲线相交,比较曲线下面积
AUC
AUC指ROC曲线下的面积大小,能量化的反映基于ROC曲线衡量出的模型性能。
P-R曲线和ROC曲线
当正负样本的分布发生变化时,ROC曲线的形状能基本保持不变,而P-R曲线的形状一般会发生剧烈变化。这一特点使ROC降低不同测试集的干扰,更客观的衡量模型本身的性能。
4 比较检验
统计假设检验(hypothesis test),基于假设检验结果腿短:如在测试集上A比B好,A的泛华性能是否在统计意义上优于B。
目前我还get不到
5 偏差与方差
测试集样本x, y D y_D yD是样本在数据集的标记; y y y是x的真实标记(有可能出现噪声使 y D ≠ y y_D \not = y yD=y); f ( x ; D ) f(x;D) f(x;D)是模型的预测输出。已回归任务为例:
-
学习算法的期望预测:
f ( x ) ‾ = E D [ f ( x ; D ) ] \overline{f(x)} = E_D[f(x;D)] f(x)=ED[f(x;D)] -
方差:使用样本数相同的不同训练集产生的
v a r ( x ) = E D [ ( f ( x ; D ) − f ( x ) ‾ ) 2 ] var(x) = E_D[(f(x;D) - \overline{f(x)})^2] var(x)=ED[(f(x;D)−f(x))2]
度量了同样大小的训练集的变动所导致的学习性能的变化。刻画了数据扰动所造成的影响。 -
噪声:
ϵ 2 = E D [ ( y D − y ) 2 ] \epsilon^2 = E_D[(y_D-y)^2] ϵ2=ED[(yD−y)2] -
偏差(bias):期望输出与真实标记的差别
b i a s 2 ( x ) = ( f ( x ) ‾ ) − y ) 2 bias^2(x) = (\overline{f(x)}) - y)^2 bias2(x)=(f(x))−y)2
刻画了学习算法本身的拟合能力。 -
对算法的期望泛化误差分解
E ( f ; D ) = E D [ ( f ( x ; D ) − y D ) 2 ] = b i a s 2 ( x ) + v a r ( x ) + ϵ 2 E(f;D) = E_D[(f(x;D)-y_D)^2] = bias^2(x) + var(x) + \epsilon^2 E(f;D)=ED[(f(x;D)−yD)2]=bias2(x)+var(x)+ϵ2
泛化误差可分解为偏差、方差与噪声之和,是由算法的能力、数据的充分性及学习任务本身的难度共同决定的。
