2.1 经验误差与过拟合
错误率与精度
错误率E=a/m,a为分类错误的样本个数,m为测试样本总数。
精度=1-错误率
学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。
过拟合:学习器把训练样本学的“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降。无法彻底避免,只能够减小过拟合的风险。
欠拟合:对训练样本的一般性质尚未学好。
2.2 评估方法
(在现实任务中往往还会考虑时间开销、存储开销、可解释性等方面的因素,这里暂且只考虑泛化误差。)
使用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。需要将数据集D进行适当的处理,从中产生训练集S和测试集T。
2.2.1留出法
将D划分为两个互斥的集合,S为训练集,T为测试集。
两个数据集采用分层采样的方式保留类别比列,例如D包含500个正例,500反例。分层采样获得含70%样本的S,有350正例,350反例;30%样本的T,有150正例,150反例。
一般采用若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。
弊端:T比较小,评估结果不够稳定准确,偏差大。
常见将大约2/3~4/5的样本用于训练,剩余样本用于测试。
2.2.2交叉验证法
将数据集D划分为k个大小相似的互斥子集(D通过分层采样得到每个子集Di,保持数据分布一致性),每次用k-1个子集的并集作为训练集,余下那个作测试集。即可获得K组训练/测试集,进行K次训练和测试,最终返回k个测试结果的均值。也称”k折交叉验证”。
为减小因样本划分不同而引入的差别,k折交叉验证要随机使用不同的划分重复p次,最终评估结果是这p次k折交叉验证结果的均值,即进行p*k次训练/测试。
留一法:m个样本划分成m个子集,每个子集包含一个样本。留一法中被实际评估的模型与期望评估的用D训练出来的模型很相似,因此,留一法的评估结果往往被认为比较准确。
留一法缺陷:数据集较大,例如,数据集包含100w个样本,则需训练100w个模型。且留一法的估计结果未必比其他评估法准确(NFL定理)。
2.2.3自助法
从m个样本的数据集D,随机采样(选)一个样本,拷贝入训练D’,放回,继续随机挑选,直至m次。
样本在m次采样中始终不被踩到的概率(1-1/m)^m。