前言
本文重点介绍泛化与过拟合模型。
为了能理解泛化这一概念,首先观察3张图。假设这些图中的每个点代表一棵树在森林中的位置。
图中的两种颜色分别代表以下含义:
- 蓝点代表生病的树
- 橙点代表健康的树
上图中有生病和健康的树,分别对应蓝点、橙点。
需要设计一个模型来区分出那些是生病的树,那些是健康的树。模型的效果如下:
表面一看,感觉该模型能很出色地区分出那些是生病的树,那些是健康的树。
实际上该模型有些过拟合了!!
如果用该模型预测一些新数据,效果如下:
该模型在处理新数据方面效果很差,对大部分新数据的分类都不正确。
过拟合
简介
过拟合模型在训练过程产生的损失很低,但在预测新数据时表现得很差。
产生原因
过拟合是训练数据太小,模型的复杂程度超出所需程度而造成,即:模型结构太过复杂,但任务本来需要表达的规律或含义不需这么复杂。
机器学习的目标
机器学习的目标是对真实概率分布中抽取的新数据做出良好的预测;即:对未见过的新数据做出良好预测。
奥卡姆的威廉
奥卡姆的威廉是 14 世纪一位崇尚简单的修士和哲学家。他认为科学家应该优先采用更简单(而非更复杂)的公式或理论。奥卡姆剃刀定律在机器学习方面的运用如下:
机器学习模型越简单,良好的实证结果就越有可能不仅仅基于样本的特征。
现今,我们已将奥卡姆剃刀定律正式应用于统计学习理论和计算学习理论领域。这些领域已经形成了泛化边界,即统计化描述模型根据以下因素泛化到新数据的能力:
- 模型的复杂程度
- 模型在处理训练数据方面的表现
虽然理论分析在理想化假设下可提供正式保证,但在实践中却很难应用。
例如,上面的模型,如果是简单拟合数据,用一根线简单地区分那些是生病的树,那些是健康的树,模型不再过拟合;虽然没有很精准地区分,但大部分的都能区分正确了。
数据集拆分
机器学习模型旨在根据以前未见过的新数据做出良好预测。但是,如果要根据数据集构建模型,如何获得以前未见过的数据呢?一种方法是将数据集分成两个子集:
- 训练集 - 用于训练模型的子集。
- 测试集 - 用于测试模型的子集。
一般来说,在测试集上表现是否良好是衡量能否在新数据上表现良好的有用指标,前提是:
- 测试集足够大。
- 不会反复使用相同的测试集来作假。
机器学习--泛化细则
以下三项基本假设阐明了泛化:
- 我们从分布中随机抽取独立同分布 (i.i.d) 的样本。换言之,样本之间不会互相影响。(另一种解释:i.i.d. 是表示变量随机性的一种方式)。
- 分布是平稳的;即分布在数据集内不会发生变化。
- 我们从同一分布的数据划分中抽取样本。
在实践中,我们有时会违背这些假设。例如:
- 想象有一个选择要展示的广告的模型。如果该模型在某种程度上根据用户以前看过的广告选择广告,则会违背 i.i.d. 假设。
- 想象有一个包含一年零售信息的数据集。用户的购买行为会出现季节性变化,这会违反平稳性。
参考:https://developers.google.cn/machine-learning/crash-course/generalization/peril-of-overfitting
小结
- 如果某个模型尝试紧密拟合训练数据,但却不能很好地泛化到新数据,就会发生过拟合。
- 如果不符合监督式机器学习的关键假设,那么我们将失去对新数据进行预测这项能力的重要理论保证。
关键词
泛化(generalization),是指模型依据训练时采用的模型,针对未见过的新数据做出争取预测的能力。
过拟合(overfitting),创建的模型与训练数据过于匹配,以至于模型无法根据新数据做出正确的预测。
预测(perdition),模型在收到数据样本后的输出。
平稳性(stationarit),数据集中数据的一种属性,表示数据分布在一个或多个维度保持不变。这种维度最常见的是时间,即:表明平稳性的数据不随时间而变化。
训练集(training set),数据集的子集,用于训练模型。与验证集和测试集相对。
验证集(validation set),数据集的一个子集,从训练集分离而来,用于调整超参数。与训练集和测试集相对。
测试集(test set),数据集的子集,用于在模型经过验证集的初步验证后,进行测试模型。与训练集和验证集相对。