4.4. 模型选择、欠拟合和过拟合
- 作为机器学习科学家目标是发现模式。确定模型是真正发现了一种泛化的模式,而不是简单地记住了数据
- 模式捕捉到训练集中的潜在总体的规律
- 困难:训练模型时仅拥有少量样本数据,当收集到更多的数据时,会发现之前找到的明显关系并不成立
- 将模型在训练数据上拟合得比在潜在分布中更接近的现象称为过拟合(训练结果较好且与测试结果相差较大)
- 用于对抗过拟合的技术称为正则化
4.4.1. 训练误差和泛化误差
- 训练误差:模型在训练数据集上计算得到的误差
- 泛化误差:将模型应用在同样从原始样本的分布中抽取的无限多的数据样本时,模型误差的期望(永远不能准确地计算出泛化误差,因为无限多的数据样本是一个虚构的对象。在实际中,只能通过将模型应用于一个独立的测试集来估计泛化误差,该测试集由随机选取的、未曾在训练集中出现的数据样本构成)
- 随着数据量的增加,误差会一定程度的降低
4.4.1.1. 统计学习理论
- 独立同分布假设:假设训练数据和测试数据都是从相同的分布中独立提取的
4.4.1.2. 模型复杂性
- 具有更多参数的模型可能被认为更复杂
- 参数有更大取值范围的模型可能更为复杂
- 通常对于神经网络,认为需要更多训练迭代的模型比较复杂,而需要“提前停止”(early stopping)的模型(意味着具有较少训练迭代周期)就不那么复杂。
- 很难比较本质上不同大类的模型之间的复杂性(例如,决策树与神经网络)
- 统计学家认为,能够轻松解释任意事实的模型是复杂的,而表达能力有限但仍能很好地解释数据的模型可能更有现实用途
- 在哲学上,与波普尔的科学理论的可证伪性标准密切相关:如果一个理论能拟合数据,且有具体的测试可以用来证明它是错误的,那么它就是好的(因为所有的统计估计都是事后归纳,在观察事实之后进行估计,因此容易受到相关谬误的影响)
- 重点介绍几个倾向于影响模型泛化的因素:
(1)可调整参数的数量。当可调整参数的数量(有时称为自由度)很大时,模型往往更容易过拟合。
(2)参数采用的值。当权重的取值范围较大时,模型可能更容易过拟合。
(3)训练样本的数量。即使你的模型很简单,也很容易过拟合只包含一两个样本的数据集。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。
4.4.2. 模型选择
- 模型选择:通常在评估几个候选模型后选择最终的模型
4.4.2.1. 验证集
- 原则上,在确定所有的超参数之前,不应该用到测试集(在模型选择过程中使用测试数据,可能会有过拟合测试数据的风险)
- 将数据分成三份,除了训练和测试数据集之外,还增加一个验证数据集/验证集
4.4.2.2. K 折交叉验证
当训练数据稀缺时,可能无法提供足够的数据来构成一个合适的验证集,采用 K 折交叉验证,原始训练数据被分成 K 个不重叠的子集。然后执行 K 次模型训练和验证,每次在 K−1 个子集上进行训练,并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。最后,通过对 K 次实验的结果取平均来估计训练和验证误差。
4.4.3. 欠拟合还是过拟合?
-
欠拟合:
训练误差和验证误差都很严重,但它们之间仅有一点差距。
如果模型不能降低训练误差,这可能意味着我们的模型过于简单(即表达能力不足),无法捕获我们试图学习的模式。
由于训练和验证误差之间的泛化误差很小,有理由相信可以用一个更复杂的模型降低训练误差 -
过拟合:
训练误差明显低于验证误差 -
是否过拟合或欠拟合可能取决于模型复杂性和可用训练数据集的大小
4.4.3.1. 模型复杂性
4.4.3.2. 数据集大小
- 训练数据集中的样本越少,越有可能(且更严重地)遇到过拟合
- 随着训练数据量的增加,泛化误差通常会减小
- 对于固定的任务和数据分布,模型复杂性和数据集大小之间通常存在关系。给出更多的数据,可能会尝试拟合一个更复杂的模型。能够拟合更复杂的模型可能是有益的。如果没有足够的数据,简单的模型可能更有用
- 对于许多任务,深度学习只有在有数千个训练样本时才优于线性模型
4.4.4. 多项式回归
4.4.5. 小结
- 由于不能基于训练误差来估计泛化误差,因此简单地最小化训练误差并不一定意味着泛化误差的减小。机器学习模型需要注意防止过拟合,来使得泛化误差最小。
- 验证集可以用于模型选择,但不能过于随意地使用它。
- 欠拟合是指模型无法继续减少训练误差。过拟合是指训练误差远小于验证误差。
- 应该选择一个复杂度适当的模型,避免使用数量不足的训练样本。