深入研究多项式回归和过度拟合
在本文中,我们表明多项式回归的问题不是过度拟合,而是数值精度。即使做得正确,数值精度仍然是不可克服的挑战。我们在这里集中于逐步多项式回归,它应该比传统模型更稳定。在逐步回归中,我们使用经典的最小二乘技术一次估计一个系数。
即使要估计的函数非常平滑,由于机器的精度,也只能精确计算前三个或四个系数。以无限的精度,所有系数都可以正确计算而不会过度拟合。在下一节中,我们首先从数学的角度探讨这个问题,然后在上一节中为实际模型的实现提供建议。
对于具有数学背景的专业人员来说,这也是一本好书,他们对学习更多有关数据科学的知识感兴趣,因为我们从一些简单的数学开始,然后讨论它与数据科学的关系。而且,这是一篇原始文章,不是您在大学课程或数据营中将学到的东西,它甚至提供了解决涉及无限数量变量的回归问题的方法。
1.泰勒级数的多项式回归
在这里,我们展示了多项式回归背后的数学机制如何带来巨大挑战,即使在响应行为良好且已知精确理论模型的理想环境中也是如此。在下一节中,我们将展示这些发现如何在统计多项式回归的背景下应用,以为数据科学家和统计人员设计更好的建模工具。
让我们考虑一个可以由泰勒级数表示的函数f(x):
在这里,我们假设系数是有界的,尽管该理论还可以使用较少限制的假设,但前提是系数的增加不要太快。在大多数情况下,例如指数函数,连续系数实际上越来越接近于0,至少在 x | <1.函数f(x)不需要可微;它甚至无处可区分,例如Weierstrass函数。因此,这里的上下文比标准泰勒级数框架更笼统。
逐步多项式回归:算法
在上面的泰勒级数中,我们在这里介绍一种迭代算法来一次估计一个系数b(k)。请注意,我们正在处理具有无限数量的变量的回归问题。仍然可以使用经典的最小二乘近似来解决。我们集中于值X,它们位于在0。此间隔被表示为中心的对称的小间隔小号。所估计的系数被表示为一个(?)。我们引入以下符号:
在这里,E(n)在估计n个系数后称为均方误差 。它衡量我们在n步之后接近目标函数f(x)的程度。选择系数a(n)(b(n)的估计值)以使上述公式中的均方误差E(n)最小。注意,均方误差是n的递减函数。我们从n = 0开始迭代进行。与标准最小二乘框架一样,取E(?)相对于一个(?),并找到它的根,以确定一个(?)。结果是
收敛定理
我们得到以下显着结果:
随着以0为中心的间隔S越来越小,并且趋于S = {0},估计系数a(k)趋于真实值b(k)。
例如,如果f(x)= exp(x),也就是说,如果b(k)= 1 / k!,则估计值a(k)也趋于1 / k!。因此,即使不存在f(x)的导数,此框架也提供了一种计算泰勒级数系数的替代方法。这也意味着在这种情况下,逐步回归与完全回归一样有效,但是所涉及的计算却少得多。全面的回归将涉及对无限矩阵的求逆。
该定理的证明非常简单,并且通过归纳法进行。首先,检查a(0)= b(0)。然后,如果一个(?)= b(?)的所有?小于或等于?,我们还必须有一个(? 1)= b(? +1)。为了证明这一点,请注意,在此假设下,我们具有:
当S趋于{0}时,上述系列中除第一个(对应于k = 0)之外的所有项都消失了。因此,在极限处,a(n +1)= b(n +1)。因此,所有估计的系数都与真实的系数匹配。
2.在现实生活中的回归模型
上一节中的收敛定理似乎可以解决所有问题,甚至可以处理回归问题中的无数变量,但仍可以为因过拟合问题而闻名的问题提供平稳,可靠的理论解决方案。它必须太好才能真实。尽管理论结果是正确的,但我们将在本节中探讨如何将其转换为应用程序,例如使用多项式模型拟合实际数据。它虽然不漂亮,但也没有您想像的那么糟糕。
在实际应用中,S是对观察值进行重新缩放以使其以0为中心且都非常接近0之后的集合观察值(独立变量),而不是间隔。然后,您将积分替换为您所有重新缩放的数据点。其他一切保持不变。
我使用相同的完全指数响应f(x)= exp(x)进行了测试,使用m = 1
S非常集中在0附近
结果,较高的项(k = 3、4等)对响应几乎没有影响,
结果,即使完全错误,获得更高阶的估计值a(k)也不会对第一部分中讨论的误差E(n)产生影响,
显然,超出k = 3或k = 4时,误差非常小,如此之小以至于小于机器精度,并且稳定并且没有如预期的那样上升。
最令人惊讶的结果如下,我在所有测试中都注意到了这种现象:
典型值:a(0)= 0.999999995416665,a(1)= 0.999999965249988,a(2)= 3.55555598019368。正确的分别是1、1,和1/2。
更换(0)=由0.999999995416665一个回归模型(0)= 1,现在你会得到一个(1)= 1, 一(2)= 0.50000086709697,非常接近理论值的1/2。如此小的差异如何产生如此大的影响?
答案是因为标准算术中的机器精度通常约为15位小数,并且误差E(n)迅速降至1/10 ^ 25,这在很大程度上是因为独立的观测值高度集中,因此接近于0。是使用高精度计算。它使您可以处理数千个正确的小数(如果需要,可以使用十亿个小数,但期望它非常慢),而不是15个。
实用模型实施建议
以下是我的实验的一些总结:
通常应避免多项式回归。如果要执行此操作,请按照本文所述使用逐步多项式回归:它更稳定,并且更易于解释。
重新缩放自变量,以使此变量的所有数据点都适合[-1,1],甚至甚至适合[-0.01,0.01],以获得更可靠的结果。用于内插,而不是外推。
避免在x的任何大于1或小于-1的值之外进行预测。
从标准线性回归开始,以使您的前两个估计系数a(0)和a(1)尽可能准确。然后执行逐步多项式回归以获取多项式模型中的第三和第四系数,其中前两个系数估计值设置为在线性回归中获得的值。
如果在添加新系数并增加n时误差E(n)没有改善,请停止添加它们。这应该是迭代式逐步多项式回归算法的停止点,除非您使用本文中介绍的技术(高精度计算等),否则通常在n = 3或4时发生。
同样,使用蒙特卡洛模拟很容易计算逐步线性回归中系数的置信区间。将随机噪声添加到数据中,用不同的噪声进行一千次,然后根据添加的噪声查看估计的a(k)的波动:这将帮助您建立估计的置信带。
最后,我找到了一篇关于逐步多项式回归的文章,作者的结论与我的相似。它的标题为逐步多项式回归:皇家之路还是弯路?,您可以在这里找到它。结论是我们在这里处理一个病态的问题。在我即将进行的研究中,我将研究用 更笼统的术语g _ k(x)替换泰勒级数中的x ^ k。收敛定理可以很容易地推广,如果我找到一个合适的函数g _ k避免了与多项式回归相关的问题,我将分享结果。
题库