第2章 模型评估与选择
2.1 经验误差与过拟合
错误率 E=a/m
精度 A=1-E
过拟合:学习能力过强,学到了不具备普遍性的特质
欠拟合:学不到,cjb
过拟合无法彻底避免
误差 实际输出和真实输出的差异
泛化误差 新样本上的误差
训练误差/经验误差 训练集上的误差
所以,经验误差过低不一定是好事,容易过拟合,泛化性能会下降
而我们没法获取泛化误差,那么到底该以什么作为标准呢?
2.2 评估方法
测试集 通常假设测试样本也从样本真实分布中独立同分布采样而得,但又要近似与训练集互斥
测试误差 测试集上的误差,作为泛化误差的近似
数据集D,训练集S和测试集T,D一共包含m个样例
2.2.1留出法
D=S∩T
S和T划分时要保持数据分布一样,否则会引入多余的偏差造成额外的影响。
分层采样
D包含500个正例,500个反例。分层采样的S/T正反例比例应该相同,如S350个正例,350个反例,T150个正例,150个反例。
如果比例差异大,会产生偏差。
多种划分方式
例如在刚刚的例子里我们对500正例进行排序,前350个和后350个放入训练集中,结果自然不一样。
因此,单次留出法的结果不够可靠,一般会使用多次随机划分,如100次得100个结果,最终获得100个结果的平均。
劣势——两难困境
因为D有限
若S过大,S会更接近D,但是T小,评估结果不够稳定精确
若T过大,评估结果会更精确,但S和D的差异也会更大
一般将2/3或4/5样本用于训练
2.2.2交叉验证法
p次k折验证
D=D1∪D2∪…Dk
Di保持数据分布一样
每次都用剩下k-1个D的集合作为训练集S,Di作为测试集T
同理,将D划为k份也有多种划分方式,用不同划分方式重复p次,称为p次k折验证。
留一法
D共有m个样本,k=m,p只能为1
留一法的S与D只差一个样本,相似度极高。
成本过高
2.2.3 自助法 bootstrapping
自助法的目的是排除容量偏差
对有m个样本的D采样,得到D‘
第一步,从D中随机挑一个样本,拷贝,放入D’
第二步,放回
第三步,重复m次
由公式
lim
m
→
∞
(
1
−
1
m
)
m
=
1
e
=
0.368
\lim_{m\to ∞} (1-\frac{1}{m})^m=\frac{1}{e}=0.368
m→∞lim(1−m1)m=e1=0.368
D中约有36.8%样本未出现在D‘中
故D’为训练集,D-D‘为测试集
优势
自助法在数据集较小,难以有效划分数据集和训练集时很有用
集成学习
劣势
改变了数据分布,引入了估计偏差
2.2.4 调参与最终模型
学习算法有参数需要设定,参数不同,性能不同。
参数很多在实数范围内取值,所以,对每种参数配置都训练不可行。
常用步长法,就是分个段。
调参对最终模型性能有关键性影响。
2.3性能度量
性能度量是衡量泛化能力的评价标准
样例集D ={(x1,y1),(x2,y2),…,(xm,ym)}
yi是xi的真实标记,评估性能时,我们把f(x)和y作比较
回归任务常用 “均方误差”其实就是方差捏
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(xi)-yi) ^2
E(f;D)=m1i=1∑m(f(xi)−yi)2
若存在概率密度函数p(.)
则:
E
(
f
;
D
)
=
∫
x
−
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
E(f;D)=\int_{x-D}(f(x)-y) ^2p(x)dx
E(f;D)=∫x−D(f(x)−y)2p(x)dx
2.3.1错误度与精度
错误率为分类错误的样本数占样本总数的比例,精度是正确的巴拉巴拉
分类错误率
E
(
f
;
D
)
=
1
m
∑
i
=
1
I
(
f
(
x
i
)
≠
y
i
)
E(f;D)=\frac{1}{m}\sum_{i=1}I(f(xi)≠yi)
E(f;D)=m1i=1∑I(f(xi)=yi)
精度
a
c
c
(
f
;
D
)
=
1
m
∑
i
=
1
I
(
f
(
x
i
)
=
y
i
)
acc(f;D)=\frac{1}{m}\sum_{i=1}I(f(xi)=yi)
acc(f;D)=m1i=1∑I(f(xi)=yi)
那我们再套上数据分布D和概率密度函数p(.)
分类错误率
E
(
f
;
D
)
=
∫
x
−
D
I
(
f
(
x
)
≠
y
)
p
(
x
)
d
x
E(f;D)=\int_{x-D}I(f(x)≠y)p(x)dx
E(f;D)=∫x−DI(f(x)=y)p(x)dx
精度
a
c
c
(
f
;
D
)
=
∫
x
−
D
I
(
f
(
x
)
=
y
)
p
(
x
)
d
x
acc(f;D)=\int_{x-D}I(f(x)=y)p(x)dx
acc(f;D)=∫x−DI(f(x)=y)p(x)dx
=
1
−
E
(
f
;
D
)
=1-E(f;D)
=1−E(f;D)
2.3.2 查准率 查全率与F1
错误率:一车西瓜中,有多少西瓜被判别错误
精度:一车西瓜中,有多少西瓜被判别正确
查准率:挑出的瓜里有多少个是好瓜
查全率:好瓜中有多少比例被挑了出来
P positive N negative
真正例TP
假正例FP
真反例TN
假反例FN
TP:被模型预测为正类的正样本(实际为正,预测也为正)。
FP:被模型预测为正类的负样本(实际为负,预测为正)。
TN:被模型预测为负类的负样本(实际为负,预测也为负)。
FN:被模型预测为负类的正样本(实际为正,预测为负)。
查准率P
P
=
T
P
T
P
+
F
P
P=\frac{TP}{TP+FP}
P=TP+FPTP
查全率R
R
=
T
P
T
P
+
F
N
R=\frac{TP}{TP+FN}
R=TP+FNTP
P和R是矛盾的度量
混淆矩阵
我们按照学习器预测结果对样例进行排序
最前面是“最可能”为正例的样本
最后面是“最不可能”为正例的样本
按顺序,逐个把样本作为正例,计算P和R,画PR曲线
若一个学习器的P-R曲线完全包住另一个,则性能更优秀
有相对合理的判据是比较P-R曲线包住面积的大小,不容易测算
因此
人们设计了一些性能度量
“平衡点”BEP breaking-even Point,是查准率=查全率时的取值
BEP过于简化,我们引入F1
F1度量 是查准率与查重率的调和平均
F
1
=
2
×
P
×
R
P
+
R
F1=\frac{2×P×R}{P+R}
F1=P+R2×P×R
=
2
×
T
P
样
例
总
数
+
T
P
−
T
N
=\frac{2×TP}{样例总数+TP-TN}
=样例总数+TP−TN2×TP
Fβ度量是查准率和查重率的加权调和平均
β>0,代表查全率旋风对于查准率的相对重要性
β=1时退化为标准F1
β>1时查全率更重要
β<1时查准率更重要
有的时候,我们需要在n个二分类混淆举证上综合考察查准率和查全率。
第一种方法,我们先算出各个矩阵的查准率,查全率
再求和取平均,获得宏查准率,宏查全率和宏F1
第二种方法,我们先对矩阵元素取平均,再计算查准率,查全率和F1
获得微查准率,微查全率和微F1 (micro)
2.3.3 ROC与AUC
ROC曲线,代表了一般情况下泛化性能的好坏
同样,根据学习器预测结果,对样例进行排序,逐个把样本作为正例进行预测,每次计算出TPR和FPR的值,以其为横纵坐标,得到ROC曲线
现实任务中,样例有限,因此只能获得有限个坐标。只能绘出近似ROC曲线(台阶状)
绘图过程如下
(1)给定m+个正例和m-个反例,根据学习器预测结果进行排序
(2)把分类阈值设为最大,所有样例均为反例,TPR=FPR=0
(3)