1:提出问题
- 学习器在训练集上的误差成为“训练误差”或“经验误差”,在新样本上的误差成为“泛化误差”,显然我们希望得到泛化误差小的学习器,然而,我们并不知道新样本,实际能做的是努力是经验误差最小化,但实际情况下,训练误差很小、在训练集上表现很好的学习器,未必在新样本上表现好,一般无法避免过度拟合现象。那么问题来了:我们无法直接获得泛化误差,而训练误差又由于过度拟合现象的存在不适合作为标准,那么在现实中,我们如何进行模型选择和评估?
2:评估方法
- 我们可以通过实验测试来对学习器的泛化误差进行评估并进而作出选择,为此需要一个“测试集”测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。测试集应该尽可能与训练集互斥,即测试集尽量不再训练集中出现、未在训练过程中被使用过。
2.1:如何选择测试集
- 留出法:
将数据集划分为两个互斥的集合,其中一个集合作为训练集,另一个作为测试集。单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果,常见的做法时将大约2/3~4/5的样本用于训练,剩余样本用于测试。 - 交叉验证法
先将数据集划分未k个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性,然后使用K-1个子集的并集作为训练集,余下的那个子集作为测试集。交叉验证法评估结果的稳定性和保真性在很大程度上却取决于k值。
- 自助法
每次随机从样本数据中挑选一个样本放入训练样本,然后将该样本放回初始样本集,使得该样本下次采样时仍有可能被采到,这个过程重复m次,我们就得到包含m个样本的训练样本。初始样本中的某些样本会在训练样本中出现多次,但另一部分样本则不会出现,样本在m次采样中始终不被采到的概率为:limm→∞(1−1m)m≈1e=0.368\lim_{m\rightarrow \infty }\left ( 1-\frac{1}{m}{} \right )^{m}\approx \frac{1}{e}= 0.368m→∞lim(1−m1)m≈e1=0.368
初始训练集中约有36.8%的样本为出现在采样数据集中,可以u把采样数据集作为训练集,初始数据集减去采样数据集作为测试集。
3: 性能度量
性能度量用于衡量模型泛化能力的评价标准,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评价结果,这意味着模型的"好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求。
- 错误率与精度
对于样本集D,分类错误率定义为:E(f;D)=1m∑i=1m∏(f(xi)≠yi)E\left ( f;D \right )= \frac{1}{m}\sum_{i=1}^{m}\prod\left ( f\left ( x_{i} \right )\neq y_{i} \right ) E(f;D)=m1