模型评估
训练集和测试集
训练集就是训练模型的样本,测试集就是在我们训练好一个模型后,需要去评价这个模型的好坏。最直接的方法就是拿着这个模型去做实际的判断。
例如,垃圾邮件过滤,就看看能否把垃圾邮件都筛选出来,如果没有识别出垃圾邮件,或者把正常的邮件错认为是垃圾邮件而过滤掉,那么都是出现了误判,或者说是错误。出现错误过多的模型显然就不是好的模型。
模型评估
误差(error)
学习器的预测输出和样本的真实标记之间的差异称为误差。
训练误差(traning error)
在训练集上的误差。
泛化误差(generalization error)
在新样本上的误差。
过拟合
在训练模型时,如果一味地追求使训练误差尽量达到最小,就有可能会出现一种现象(学习过度,在训练集上表现很好,在新样本上泛化误差很大)。
机器学习就是通过对样本数据的学习,希望尽可能学习到适应于所有潜在样本的本质特征和普遍规律,从而能够对未知的数据进行预测或者分类。但是由于训练样本的数量有限,如果学习器的学习能力过于强大,就会发生过度学习,把训练样本中特有的特性都当成是所有样本都必须具备的普遍特征学到了,导致泛化能力降低。
例如,设计一个识别树叶的程序,希望它能够认识所有的树叶,但是我们采集的用来训练模型的树叶的样本是有限的,假如在这些树叶上面,恰好都有一些细微的划痕或者斑点,或者树叶的边缘恰好都是锯齿形状的,如果过度学习,学习器就会学习到所有这些细微的特征。认为必须具备这样的特征才是树叶。如果给它看一片完美的、没有划痕和斑点的树叶,它就识别不出来。
在上述例子中,模型就好像是一个记忆能力超群的高手,它记住了训练集上所有样本的属性和标签,因此,在训练集上的正确率可以达到或者接近100%,但是,当出现没有见过的样本时,却不具备举一反三的能力,出现很多错误。
欠拟合
和过拟合相对的是欠拟合,产生欠拟合的原因是学习器的学习能力低下,没有学习到样本中的通用的特征。例如:学习器无法学习到所有树叶共同的特征。那么给它一片新的树叶,它也识别不出来,这就是欠拟合。
测试误差
可以看出来,我们希望模型在新的、没有见过的数据上表现的很好,而不仅仅是在训练集上表现优异,也就是说,在机器学习中,我们的目标不仅仅是模型的训练误差小,而更希望它的泛化误差小。但是,新的样本是无限多的,在实际中,我们不可能测试无限多样本的数据集,因此,实际上是无法得到泛化误差的。
为了评价模型在没有见过的数据上的效果,我们就把数据样本集划分为训练集(training set)和测试集(testing set),首先使用训练集训练模型,训练完成之后,再在测试集上运行模型,测试学习器对新样本的预测或者判断能力,使用这个测试集上的测试误差来作为泛化误差的近似,为了得到泛化性能强的模型,测试集中的样本最好是没有在训练集中出现过的。也就是说,测试集应该尽可能和训练集是互斥的。