当评估模型的质量时,能够准确测量其预测误差至关重要。然而,测量误差的技术常常会给出严重误导的结果。因为可能导致会过拟合,就是模型可以非常好地拟合训练数据,但是对于在模型训练中未使用的新数据预测结果不太好。这里是准确测量模型预测误差的方法的概述。
测量误差
当建立预测模型,首要目标应该是让模型能够准确地预测大多数的新数据。对所使用的模型误差的测量应该是实现这个目标。在实践中,许多建模者报告时代替模型误差的量度不是基于新数据的误差,而是被用于训练模型的非常相同数据的误差。使用这种不正确的误差测量会导致选择较差和不准确的模型。
自然地,任何模型对于其被训练的数据是高度适应的。基于新的数据模型展示的预期误差常比它展示在训练数据上的更高。例如,我们可以去抽样100人,并创建一个回归模型,根据他们的财富预测个人的幸福。 我们可以记录平方误差,说明我们的模型对一百人的训练集的效果如何。如果我们再从人群中抽取不同的100人,并将我们的模型应用于这一新的人群,则在第二种情况下,平方误差总是更高。
用方程说明这个事实是有意义的。我们可以建立一个关于模型对新数据(真实预测误差和我们真正关心的事情)的预测程度以及它对训练数据预测程度(这是许多建模者在事实上测量的)之间的关系。
真正的预测误差=训练误差+训练乐观
这里的训练乐观是我们的模型上的新数据与训练数据之间差多少的量度。我们越乐观,我们的训练误差将与真实误差相比越好,我们的训练误差将越接近真实误差。
过拟合的危险
一般来说,我们希望认为乐观对于给定的训练集是不变的。如果这是真的,我们可以使最小化训练误差的模型的论据也将是最小化新数据的真实预测误差的模型。 因此,即使我们报告的训练误差可能有点乐观,使用它来比较模型将使我们仍然选择我们可用模型中最好的。因此,基于模型选择的目的,我们可以忽略实际误差和训练误差之间的区别。
不幸的是,这不成立。 事实证明,乐观是关于模型复杂性的函数:随着复杂性的增加,乐观也增加了。因此,我们有了下面的公式:
真正的预测误差=训练误差+F(模型复杂)
乐观与模型复杂性有关?随着模型复杂性的增加(例如通过在线性回归中和添加参数项),模型将总是更好地适应训练数据。 这是统计模型的一个基本属性。 在我们的幸福预测模型中,我们可以使用人的中间名字作为预测变量,并且训练误差会下降。我们可以使用1990年1月1日的股票价格作为现在破产的公司,误差会下降。我们甚至可以滚动骰子来获得数据系列,误差仍然会下降。无论如何不相关的附加因素给予一个模型,添加它们都会导致训练误差减少。
但同时,随着我们增加模型的复杂性,我们可以看到真实的预测精度的变化(我们真正关心的)。如果我们建立一个幸福的模型,纳入显然无关的因素,如一个世纪前的股票行情价格,我们可以肯定地说,这样的模型必然比没有股票价格的模型更糟糕。虽然股票价格将降低我们的训练误差 (如果非常小的花),他们反过来也必然增加我们对新数据的预测误差 ,因为它们使得模型的预测再做出新的预测时更糟糕。此外,即使将明显相关的变量添加到模型中,如果这些变量的信噪比较弱,实际上也是增加真实值的预测误差。
让我们看看这在实践中是什么样子的。我们可以执行我们的财富和幸福模型作为一个线性回归。 我们可以使用最简单的回归,其中Happiness=a+b Wealth+ϵ,然后我们可以添加多项式项来模拟非线性效应。 我们添加的每个多项式项都增加了模型复杂性。 因此,我们可以得到复杂的中间水平的二次模型一样Happiness=a+b Wealth+c Wealth2+ϵ或具有较高阶多项式样Happiness=a+b Wealth+c Wealth2+d Wealth3+e Wealth4+f Wealth5+g Wealth6+ϵ。
下图说明了训练误差,真实预测误差和模型的乐观之间的关系。 上面的散点图说明了具有对应于不同水平的模型复杂性的回归线的样本数据。
增加模型复杂性将总是减少模型训练误差。在非常高的复杂度水平下,我们应该能够完全预测训练数据集中的每个单个点,并且训练误差应该接近0。类似地,真实的预测误差刚开始会下降。没有多项式项的线性模型似乎对于这个数据集有点简单了。 然而,一旦我们通过某一点,真实的预测误差开始上升。在这么高的复杂性,我们添加的额外的复杂性帮助我们适应我们的训练数据,但它导致模型对于预测新的数据更差。
这就是过拟合训练数据的情况。在该区域中,模型训练算法太关注于精确地匹配在实际群体中不存在的训练集中的随机性。我们可以在模型中明显地看到这一点,匹配了训练数据的每一个点;显然这对训练数据的拟合太紧。
防止过拟合是建立强壮和准确的预测模型的关键。只看到训练误差曲线时,过拟合是很容易忽略的。要检测过拟合,您需要查看真实值的预测误差曲线。 当然,不可能测量确切的真实值预测曲线(除非您拥有整个人群的完整数据集),但是有许多不同的方法可以尝试精确估计。本工作的第二部分将讨论各种技术来准确估计模型的真实值预测误差。
关于不良测量误差的代价示例
让我们观察一个相当普遍的建模工作流程。我们将从生成100个模拟数据点开始。 每个数据点具有我们试图预测的目标值以及50个不同的参数。例如,该目标值可以是树种的生长速率,参数是降水量,水分水平,压力水平,纬度,经度等。然而,在这种情况下,我们将完全随机地生成每个单个数据点。 数据集中的每个数字都完全独立于所有其他数字,并且它们之间没有任何关系。
对于这个数据集,我们创建了一个线性回归模型,其中使用50个回归变量来预测目标值。不幸的是,情况并非如此,因为我们的数据是纯噪声!但是,我们希望做一个F检验以确认这一结果。这个测试检验整体回归的统计显着性,以确定它是否比预期的更好。 使用F检验,我们发现p值为0.53。 这表明我们的回归是不显着的。
如果我们停这里,一切都会好的,我们会抛弃我们的模型,这将是正确的选择(毕竟它是纯粹的噪音!)。然而,一个常见的下一步是丢弃那些只是不良预测因子的参数,保留那些是相对好的预测因子,并再次运行回归。 让我们假设我们保持在25%水平的显着的参数,在这个例子中有21个。 然后我们重新回归我们的回归。
在第二个回归中我们会发现:
再一次,这个数据是纯噪声的;任何因子互相没有关系。 但是从我们的数据,我们发现了一个非常显著的回归,一个可敬的R 2和6个显著参数(相比那些在社会科学领域的一些发现,这是非常高的)!
这是一个令人不安的结果,这个步骤不是一个罕见的,而是明显导致令人难以置信的误导结果。它显示了如果不采取精确测量误差的方式,统计过程将会如何容易导致严重偏差。
测量误差的方法
调整后的R2
求R2首先,训练过的所做的回归模型,并且计算预测值和观测值之间的差值并求平方。 这些平方误差求和,并将结果与使用空模型产生的误差平方总和比较。空模型是简单地预测的平均目标值而不管该点的输入值的模式。 空模型可以被看作是最简单的模型可能并作为针对其测试其他车型的标杆。 数学:
R2=1−Sum of Squared Errors ModelSum of Squared Errors Null Mode
R 2有着非常直观的特性。当我们的模型并不比空模型更好,因为R 2将是0。当我们的模型做出完美的预测时,R 2是1。R 2是一个很容易理解的错误量度,在原则上可以在所有回归模型应用。
通常而言,R 2仅应用于作为训练误差的量度。不幸的是,因为我们在上面的例子中看到如何可以得到较高的R 2,即使这是纯粹的噪声数据。事实上,有一个分析去确定给定的一组n个观察和p参数值与R2的关系:
E[R2]=pn
所以,如果你在你的模型中包含了足够的数据可以有效地迫使不用去考虑R2的水平。在我们的例子中有着50个参数和100个观测,我们希望50/100或0.5的R 2。
试图去改善这一现象并惩罚额外的复杂性的方法是调整R 2。。随着越来越多的参数被添加到模型中,被调整后的R 2减小R 2。调整和管理R 2之间简单的关系:
Adjusted R2=1−(1−R2)n−1n−p−1
不同于常规的R 2,,通过调整后的R 2的预测误差将会开始增加模型的复杂性。 调整后的R 2会比常规R 2好得多,基于该事实,应当始终使用常规R 2。不过,调整后R 2并不完全与真实的预测误差匹配。事实上,调节R 2一般是欠惩罚的复杂性 。也就是说,它不能通过添加附加的复杂度来减少预测精度。
鉴于此,调整后的R 2的使用仍然可以导致过拟合。此外,调整后的R 2是根据某些参数假设可能会或可能不会在特定的应用程序中存在。
优点
缺点
----未完待续