
38
|
第
1
章
•
如果训练集的数据太少或数据代表性不够,包含太多噪声或者被一些无关特征污
染(垃圾进,垃圾出),那么系统将无法很好地工作。最后,你的模型既不能太简单
(会导致欠拟合),也不能太复杂(会导致过拟合)。
还有最后一个要讲的重要主题是:一旦训练了一个模型,你就不能只是“希望”它可以
正确地对新的场景做出泛化,你还需要评估它,必要时做出一些调整。现在我们看看怎
么做到这一点。
1.6 测试与验证
了解一个模型对于新场景的泛化能力的唯一办法就是让模型真实地去处理新场景。做法
之一是将其部署在生产环境中,然后监控它的输出。这种做法不错,不过如果模型非常
糟糕,你的用户就会抱怨,所以这显然不是最好的办法。
更好的选择是将数据分割成两部分:训练集和测试集。顾名思义,你可以用训练集的数
据来训练模型,然后用测试集的数据来测试模型。应对新场景的误差率称为泛化误差
(或者样例外误差),通过测试集来评估你的模型,就可以得到对这个误差的评估。这个
估值可以告诉你模型在处理新场景时的能力如何。
如果训练误差很低(模型对于训练集来说很少出错),但是泛化误差很高,那么说明你的
模型对于训练数据存在过拟合。
通常将 80% 的数据用于训练,而保持 20% 供测试用。但是,这取决于数据
集的大小。如果数据包含 1000 万个实例,那么保留 1% 意味着包含 100 000
个实例作为你的测试集,可能足以很好地估计泛化误差。
1.6.1 超参数调整和模型选择
评估一个模型很简单:用测试集就行了。现在假设你在两个模型(一个线性模型和一个 ...