绪论就先略过了qaq
1.经验误差与过拟合
错误率(error rate):分类错误的样本数占样本总数的比例 (E=a/m),相应的1−a/m称为精度
训练误差 (training error) :学习器在训练集上的误差
泛化误差 (generalization error) : 学习器在新样本上的误差
过拟合 (overfitting) : 学习器把训练样本学得太好,将训练样本自身的一些特点当作潜在样本具有的一般性质,使得泛化的性能下降
欠拟合 (underfitting) : 训练样本的一般性质尚未学好
关键障碍:过拟合(若P≠NP 则不可避免)
2.评估方法
我们可以设置一个测试集(testing set) 来测量学习器对新数据的判别能力
然后以测试集上的测试误差(testing error) 作为泛化误差的接近
我们假定测试样本是从样本真实分布中独立同分布采样得到的,但是要注意测试集尽可能和训练集互斥(可以联想自己的考试)
当我们仅有一个包含m个样例数据集D={(x1,y1),(x2,y2),...,(xm,ym)}
现在需要考虑如何从D中划分出训练集S和测试集T
采用如下几种方法
2.1留出法(hold-out)
直接将数据集D划分为两个互不相交的集合,记为S与T
容易知道S∩T=∅, S∪T=D
注意训练集和测试集要尽可能保持数据分布的一致性,避免数据划分的过程引入额外的偏差对最终结果产生影响(分层采样)
同时需要注意,给定训练集和测试集的样本比例后,仍然有多种划分方式对初始数据集D进行分割
使用留出法的时候一般是若干随机划分进行试验后得到结果的平均值作为结果返回
(比如100次实验得到100个结果,留出法返回的就是这100个结果的平均值)
留出法的缺陷(需要控制S和T的大小,T过小评估不够准确,T过大难以学习更接近D的模型)
一般情况下将23到45 样本训练,其余用来测试
2.2交叉验证法(cross validation)
先将数据集D划分为k个大小相似的互斥子集,有D=D1∪D2∪...∪Dk,Di∩Dj=∅
Di 尽可能保持数据分布的一致性
每次用k−1子集并集作为训练集,余下子集作为测试集,最后结果为k次均值
稳定性和保真性很大程度与k相关,一般将该方法称为k折交叉验证(k-fold cross validation)
常用的k为10(也有5或20等等)
示意图如下:
注意,需要使用随机不同的划分重复p次
如果k=m则会有交叉验证的一个特例,留一法(Leave-One-Out,简称LOC)
绝大多数情况评估与D相似,但是数据集大的时候时间空间开销难以忍受
2.3自助法(bootstrapping)
目的:减少训练样本规模不同的影响(一般训练集规模比D要小),同时高效的进行实验估计
思路:每次从D中挑选一个样本,拷贝到D′中,再将其放回到D中,重复m次,就会得到含有m个元素的数据集D′
容易知道D中有一部分样本会在D′中多次出现,而另一部分不出现,假设样本在m次采样的过程中均不被采到的概率为(1−1m)m,取极限得到limm→∞(1−1m)m=1e≈0.368
这样我们用D′作为训练集 D\D'作为测试集,可以发现实际评估模型与期望评估模型使用m个样本,但仍然有13,没在训练集的样本用于测试
一般用于难以划分情况,便于集成学习
2.4调参与最终模型
设定算法参数的过程,记为调参(parameter tuning),分为算法参数(超参数,比如神经网络层数)或者模型参数(比如θ和b)
注意,测试集(testing set)一般用于估计模型在实际应用的泛化能力
验证集(validation set)进行模型选择和调参
3.性能度量(performance measure)
衡量模型泛化能力的评估标准
给定数据集D,要评估学习器f的功能,需要将学习器预测结果f(x)和真实结果y比较
下面介绍常用的性能度量
3.1错误率与精度
错误率定义: E(f;D)=1m∑mi=1I(f(xi)≠yi)
其中x为真则I(x)为1,否则为0
精度定义: acc(f;D)=1m∑mi=1I(f(xi)=yi)=1−E(f;D)
积分形式:
E(f;D)=∫x∼DI(f(x)≠y)p(x)dx
acc(f;D)=∫x∼DI(f(x)=y)p(x)dx=1−E(f;D)