机器学习中的统计思维(Python实现)
上QQ阅读APP看书,第一时间看更新

1.3.3 泛化能力

泛化(Generalization)一词来自于心理学,单从字面来理解就是普适能力。如果情况类似,人类在当前学习下就会参考过去学习的概念(Concept),可以理解为根据过去经验与新经验之间的相似性关联适应世界。举个例子,小明第一次吃阿根廷大红虾,结果出现浑身发痒、呼吸不畅的情况,这让小明强烈地感到身体不适。于是,小明认为自己对海鲜过敏。从而学习到一个概念“对海鲜过敏”。尽管这个概念在某些情况下是正确的,但并不完全正确。假如小明只对虾类过敏,对鱼类不过敏,而学习到的概念使得他即使在美食街闻到了香喷喷的烤鱼味儿,也不敢进去。那么,他过去学习到的概念就使他在生活中错过了所有的海鲜美食。

在机器学习中,可以称这些概念为模型。类似地,泛化能力(Generalization Ability),指的是通过某一学习方法训练所得模型,对未知数据的预测能力。假如训练所得模型记为的泛化能力评价的就是在整个样本空间上的性能。模型在所有未知数据上的平均损失称为的泛化误差(Generalization Error)。如果以测试集作为未知数据,则在测试集上的平均损失称为测试误差(Testing Error)。假如测试集为T′={(x1y1),(x2y2),···,(xN′yN′)},则测试误差表示为

作为度量泛化误差的经验值。

假如现在总体数据都是未知数据,那么对于整个样本空间计算的平均损失,就是泛化误差。这反映模型对总体数据的广泛适应能力,往往模型越简单越容易适应全部数据,这时候也无所谓欠拟合问题了,因为不存在已知数据。俗话说的以不变应万变就是这个道理。

从极端情况回到实际中,一般把收集到的样本分一部分出来作为测试集,将其视作未知数据,计算平均损失,得到测试误差。通常,由于测试数据集包含的样本有限,仅仅通过测试数据集去评价泛化能力并不可靠,此时需要从理论出发,对模型的泛化能力进行评价。

如果通过训练得到两个模型,两个模型对已知数据的预测能力相近,该如何选择模型呢?通过泛化误差比较两者的泛化能力。哪一个模型的泛化误差小,哪一个模型的泛化能力就更强,也就是对未知数据的预测能力更强。这类似于统计学中的参数估计,当两个估计值都是无偏估计时,倾向于选择方差更小的那个。

泛化误差上界对应的是泛化误差的概率上界。在理论上比较两种学习方法所得模型的优劣时,可通过比较两者的泛化误差上界进行。泛化误差上界具有以下两个特点。

· 样本容量的函数:随着训练集样本容量的增大,泛化误差上界趋于0。因为此时相当于用总体训练模型,所得模型自然适用于整个总体。

· 假设空间容量的函数:假设空间容量越大,待选模型越复杂,模型就越难训练,泛化误差上界就越大。这可以通过均值-方差这种思想来理解。待选模型越复杂,模型方差越大,训练所得模型的普适性越差,泛化误差越大。

评价训练所得模型的拟合能力与泛化能力中所涉及的概念比较如图1.12所示。

图1.12 拟合能力与泛化能力相关概念之间的比较

需要注意的是,拟合能力和泛化能力不能分开来看,因为模型既需要对已知数据有一个好的拟合效果,也需要具有对未知数据有较强的适应能力,两者都很重要,需要找到一个平衡点。