第5章 模型比较
“地图并非它所表示的领土,但它们有相似的结构。”
——阿尔弗雷德·科日布斯基(Alfred Korzybski)
模型应该是问题的近似值,可以帮助我们理解特定的或者某类相关的问题。模型不是“真实世界”的副本。即便模型带有先验信息,我们也认为所有的模型都是错误的,当然并不是一样的错误。当描述给定的问题时,有些模型会比其他模型更好。在前面的章节中,我们将注意力集中在推理问题上,即如何从数据中学习参数值。在本章中,我们将关注另一个问题:如何比较用于解释同一数据的两个或多个模型。正如我们将学习的那样,这并不简单,同时它是数据分析中的核心问题。
在本章中,我们将探讨以下主题。
● 后验预测检查。
● 奥卡姆剃刀原理——简单性和准确性。
● 过拟合和欠拟合。
● 信息准则。
● 贝叶斯因子。
● 正则化先验。
5.1 后验预测检查
在第1章中,我们介绍了后验预测检查的概念。在后面的章节中,我们用它来评估模型是否能很好地解释数据。后验预测检查的目的不是指出模型是错误的,这是已知的事实。通过执行后验预测检查,我们希望更好地了解模型的局限性,要么正确地认识它们,要么尝试改进。在前面的陈述中,隐含的事实是,模型通常不会以同样好的效果再现问题的所有方面。当然这不是问题,因为我们建立模型之初就已经有明确的目的了。后验预测检查是基于这个目的评估模型的一种方法。因此,只要我们有多个模型,就可以用后验预测检查进行比较。
让我们加载并绘制一个非常简单的数据集,代码运行结果如图5.1所示。
dummy_data = np.loadtxt('../data/dummy.csv')
x_1 = dummy_data[:, 0]
y_1 = dummy_data[:, 1]
order = 2
Get Python贝叶斯分析(第2版) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.