1. 训练误差和泛化误差
把学习器的实际预测输出与样本真实输出值之间的差异称为“误差”。
训练误差:学习器在训练数据上的误差,可做为模型调参的依据。
泛化误差:学习器在新样本上的误差,反映了学习器对未知数据的预测能力。将学习器对未知数据的预测能力称为泛化能力,泛化误差越小,泛化能力越强,越是符合我们的期望。
2. 过拟合与欠拟合
过拟合:学习器对已知数据学习的太好了,以至于把训练样本特有的一些性质当作了所有样本都具有的性质,即:模型的复杂度高于实际“真模型”,在已知数据上表现很好,在未知数据上表现很差。
欠拟合:学习器连已知样本的一般性质都没有学好,即:模型复杂度低于实际“真模型”,导致学习能力不足,在已知数据和未知数据的预测表现都较差。
从图中可以看到,当模型复杂度增加时,训练误差不断下降,而测试误差先降低后增加,这是因为在模型复杂度过高时发生了过拟合造成的,因此在实际模型训练中,我们需要选择复杂度适当的模型,以达到测试误差最小、泛化能力最强的目的。而过拟合是无法避免的,只能通过早停、正则化等方法进行缓解,而欠拟合可以通过增加模型复杂度克服。
3. 常用的模型评估方法
可以通过实验测试的方式评估学习器的泛化能力选择恰当的模型复杂度。在实际中,未知样本我们是事先不知道的,因此无法直接计算泛化误差。通常可将已有数据划分为互斥的两部分,一部分作为训练集,进行学习器的学习,另一部分对于学习过程是不可见的,称为测试集,利用学习器在测试集上的测试误差衡量学习器的泛化能力,进行学习器的选择。常见的划分数据集的方法有留出法、交叉验证、自助法。
(1) 留出法
留出法是将数据集划分成两个完全互斥的集合,一个作为训练集,一个作为测试集,利用训练集进行学习器的训练,利用测试集估计泛化误差。一般训练样本数量占全部数据的比例在2/3~4/5之间,在数据类别不均衡时,可采用分层抽样避免因采样带来的误差,保证训练集/测试集中数据分布与原始数据集的分布一致。单次使用留出法划分数据集得到的结果可能存在数据集划分造成的误差,结果往往缺乏可靠性和稳定性,因此一般采用多次划分试验后取平均值作为最终结果。留出法可通过sklearn中的train_test_split实现ÿ