读书笔记
1.分类错误的样本数占样本总数的比例称为错误率,如果在
m
m
m个样本中有
a
a
a个样本分类错误,设错误率为
E
E
E,精度为
A
A
A,则
E
=
a
/
m
,
A
=
(
1
−
E
)
∗
100
%
E = a/m,A=(1-E)*100\%
E=a/m,A=(1−E)∗100%
2.学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。
3.过拟合和欠拟合
当学习器把训练样本学习的“太好”了的时候,会导致泛化性下降,也就是面对新样本,效果不佳,这种现象称之为“过拟合”(与之相反,训练不够,称之为“欠拟合”)
解决方案 | |
---|---|
过拟合 | 学习能力过于强大,不可避免,只能缓解 |
欠拟合 | 学习能力不足,加大学习 |
4.在现实中,往往有多种算法可以选择,甚至对同一个学习算法,当使用不同的参数配置,也会产生不同的模型。如何选择,这就是“模型选择”。
理想解决方案是对候选模型的泛化误差进行评估,选择误差最小的模型。
5.可以使用测试集来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。
6.留出法
直接将数据集
D
D
D划分为两个互斥的集合,其中一个集合作为训练集
S
S
S,另一个作为测试集
T
T
T,即
D
=
S
∪
T
,
S
∩
T
=
∅
D=S \cup T,S \cap T=\varnothing
D=S∪T,S∩T=∅
保留类别比例的采样方式通常称为“分层采样”。
一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
大约2/3~4/5的样本用于训练,剩余样本用于测试
7.交叉验证法
将数据集D划分为k个大小相似的互斥子集,每个子集
D
i
D_{i}
Di互斥,即
(
D
=
D
1
∪
D
2
∪
.
.
.
∪
D
k
,
D
i
∩
D
j
=
∅
)
(D=D_{1}\cup D_{2}\cup ...\cup D_{k},D_{i}\cap D_{j}= \varnothing)
(D=D1∪D2∪...∪Dk,Di∩Dj=∅)
尽可能保持数据分析一致性,从
D
D
D中分层采样得到。
每次用
k
−
1
k-1
k−1个子集的并集作为训练集,余下子集都为测试集,最终返回
k
k
k个测试结果的均值。
又称“
k
k
k折交叉验证”,
k
k
k通常取10,称为10折交叉验证
将数据集
D
D
D划分为
k
k
k个子集同样存在多种划分方式,为减少因样本划分不同而引入的差别,通常要随机使用不同的划分重复
p
p
p次,最终结果是第
p
p
p次
k
k
k折交叉验证的均值
常见10次10折交叉验证
8.自助法
优点:减少训练样本规模不同造成的影响,同时还能比较高效地进行实验估计。
给定包含
m
m
m个样子的数据集
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\backslash D^{'}
D\D′用作测试集。
自助法在数据集较小、难以有效划分训练/测试集时很有用。初始数据量足够时,留出法和交叉验证法更常用一些。
9.调参和算法选择没有本质区别,调参很重要!
10.衡量模型泛化能力的评价标准是性能度量。
回归任务常用的性能度量是“均方误差”
E
(
f
;
D
)
=
1
/
m
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
E(f;D)=1/m\sum_{i=1}^{m}(f(x_{i})-y_{i})^{2}
E(f;D)=1/mi=1∑m(f(xi)−yi)2
对于数据发布
D
D
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅),均方误差可描述为
E
(
f
;
D
)
=
1
/
m
∫
x
−
D
(
f
(
x
i
)
−
y
)
2
p
(
x
)
d
x
E(f;D)=1/m\int_{x-D}(f(x_{i})-y)^{2}p(x)dx
E(f;D)=1/m∫x−D(f(xi)−y)2p(x)dx
11.分类任务最常用的两种性能度量是错误率和精度,错误率和精度定义如下
E
(
f
;
D
)
=
1
/
m
∑
i
=
1
m
I
(
f
(
x
i
)
≠
y
i
)
E(f;D)=1/m\sum_{i=1}^{m}\mathbb{I}(f(x_{i}) \neq y_{i})
E(f;D)=1/mi=1∑mI(f(xi)=yi)
a
c
c
(
f
;
D
)
=
1
/
m
∑
i
=
1
m
I
(
f
(
x
i
)
=
y
i
)
acc(f;D)=1/m\sum_{i=1}^{m}\mathbb{I}(f(x_{i}) = y_{i})
acc(f;D)=1/mi=1∑mI(f(xi)=yi)
12.“查准率”与“查全率”更为适用于此类需求的性能。
真实情况 | 预测正例 | 预测反例 |
---|---|---|
正例 | T P TP TP(真正例) | F N FN FN(假反例) |
反例 | F P FP FP(假正例) | T N TN TN(真反例) |
显然有
T
P
+
F
P
+
T
N
+
F
N
=
TP+FP+TN+FN=
TP+FP+TN+FN= 样例总数
查准率
P
P
P与查全率
R
R
R分别定义为
P
=
T
P
/
(
T
P
+
F
P
)
P=TP/(TP+FP)
P=TP/(TP+FP)
R
=
T
P
/
(
T
P
+
F
N
)
R=TP/(TP+FN)
R=TP/(TP+FN)
查准率高和查全率是一对矛盾的度量。一般来说,查准率高,查全率往往偏低;查全率高,查准率往往偏低。
画出
P
−
R
P-R
P−R曲线,若一个学习器的
P
−
R
P-R
P−R曲线被另一个学习器的曲线完全“包住”,则可断言后者性能优于前者。
BEP度量:“查准率=查全率”的取值。
BEP度量过于简化,常用为
F
1
F_{1}
F1度量:
F
1
=
2
×
P
×
R
/
(
P
+
R
)
=
2
×
T
P
/
(
样
例
总
数
+
T
P
−
T
N
)
F_{1}=2\times P \times R/(P+R)=2\times TP/(样例总数+TP-TN)
F1=2×P×R/(P+R)=2×TP/(样例总数+TP−TN)
F
1
F_{1}
F1的一般形式
F
β
F_{\beta}
Fβ
F
β
=
(
1
+
β
2
)
×
P
×
R
/
(
(
β
2
×
P
)
+
R
)
F_{\beta}=(1+\beta ^{2})\times P \times R/((\beta ^{2} \times P)+R)
Fβ=(1+β2)×P×R/((β2×P)+R)
β
=
1
\beta = 1
β=1时退化为标准的
F
1
F_{1}
F1;
β
>
1
\beta > 1
β>1时查全率有更大影响;
β
<
1
\beta < 1
β<1时差准率有更大的影响
附
当有多个二分类混淆矩阵,可以在各混淆矩阵分别计算查准率和查全率,在计算平均值,得到宏查准率和宏查全率;也可以将各混淆矩阵对应元素进行平均,得到
T
P
,
F
P
,
T
N
,
F
N
TP,FP,TN,FN
TP,FP,TN,FN的平均值,基于平均值计算出微查准率和微查全率。
13.ROC(受试者工作特征)与AUC(ROC曲线下面积)
ROC曲线纵轴是真正例率(TPR),横轴是假正例率(FPR),两者分别定义为
T
P
R
=
T
P
/
(
T
P
+
F
N
)
TPR=TP/(TP+FN)
TPR=TP/(TP+FN)
F
P
R
=
F
P
/
(
T
N
+
F
P
)
FPR=FP/(TN+FP)
FPR=FP/(TN+FP)
进行学习器比较时,较为合理的依据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
假定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),AUC可以估算为
A
U
C
=
1
/
2
∑
i
=
1
m
−
1
(
x
i
+
1
−
x
i
)
⋅
(
y
i
+
y
i
+
1
)
AUC=1/2\sum_{i=1}^{m-1}(x_{i+1}-x_{i})\cdot (y_{i}+y_{i+1})
AUC=1/2i=1∑m−1(xi+1−xi)⋅(yi+yi+1)
损失定义见书
14.为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”,注意:重要的是代价比值而非绝对值。
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”可以达到这个目的。
横轴为取值为[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}=p \times cost_{01}/(p\times cost_{01}+(1-p)\times cost_{10})
P(+)cost=p×cost01/(p×cost01+(1−p)×cost10)
其中
p
p
p是样例为正例的概率,纵轴是取值为[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}=(FNR\times p\times cost_{01}+FPR\times (1-p)\times cost_{10})/(p\times cost_{01}+(1-p)\times cost_{10})
costnorm=(FNR×p×cost01+FPR×(1−p)×cost10)/(p×cost01+(1−p)×cost10)
15.假设检验
假设检验中的“假设”是对学习器泛化错误率分布的某种判断或猜想
书中使用二项检验和双边
t
t
t检验,概率论有提及,较为简易不阐述。
16.交叉验证
t
t
t检验
基于
k
k
k折交叉验证分别得到测试错误率
基本思想:若是两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应该相同,即
ϵ
i
A
=
ϵ
i
B
\epsilon^{A}_{i}=\epsilon^{B}_{i}
ϵiA=ϵiB。
先对每对结果求差,
Δ
i
=
ϵ
i
A
−
ϵ
i
B
\Delta_{i}=\epsilon^{A}_{i}-\epsilon^{B}_{i}
Δi=ϵiA−ϵiB;若两个学习器性能相同,则差值均值应为零。可以根据差值
Δ
1
,
Δ
2
,
.
.
.
,
Δ
k
\Delta_{1},\Delta_{2},...,\Delta_{k}
Δ1,Δ2,...,Δk来对“学习器A与B的性能相同”这个假设做
t
t
t检验。
后续McNemar检验,Friedman检验以及Nemenyi后续检验均使用概率论知识,理解较易不阐述。
17.偏差-方差分解是解释学习算法泛化性能的重要工具
使用样本数相同的不同训练集产生的方差为
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
其中
y
D
y_{D}
yD为
x
x
x在数据集中的标记,
y
y
y为
x
x
x的真实标记,
f
(
x
;
D
)
f(x;D)
f(x;D)为训练集
D
D
D上学得模型
f
f
f在
x
x
x上的预测输出。
假定噪声期望为0,通过对算法的期望泛化误差分解得到
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
泛化误差可分解为偏差、方差与噪声之和。
偏差-方差窘境:偏差与方差有冲突。
课后习题答案
自己写的,如有错误,请不吝赐教
1.尽量采用分层采样保证训练集和测试集数据分布的一致性,依题意得
(
500
150
)
2
({500}\\{150})^{2}
(500150)2
2.10折交叉验证法为50%,因为交叉验证法需要分层采样。
留一法为100%,留一法不受随机样本划分方式的影响。
3.不一定。想象一下学习器A对样本输出值均为学习器B的两倍,两者BEP值是相同的,A的输出在(0,1)之间,而B的输出在(0,0.5)之间,此时B的 F1 值为0,A的 F1 值是在0-1之间。所以原命题不成立。
4.由它们的定义,得
TPR=R,其他的无必然联系
5.之后证
6.错误率是在阈值固定的情况下得出的,ROC曲线是在阈值随着样本预测值变化的情况下得出的。ROC曲线上的每一个点,都对应着一个错误率。
后面以后再更新