根据数据的线性、二次和三次拟合选择最佳模型

机器算法验证 回归 模型选择 最小二乘
2022-03-16 21:22:10

我有一个 Java 代码,它使用 Gauss-Jordan 消元法对一组数据执行线性回归。它使用最小二乘法计算线性、二次和三次函数。

我的问题是从三个最能模拟我的数据的函数中选择一个。这当然是在没有绘制曲线的情况下。所以假设我有一组数据{x:1,2,3,4} {y:3,8,910},我使用最小二乘法得到一个线性、二次和三次函数。

如何选择适合我数据的函数模型?

3个回答

您所询问的通用术语是模型选择您有一组可能的模型,在这种情况下类似于 并且您想确定哪些模型对您的数据最简洁。我们通常担心简约而不是最佳拟合(即最高

y=β1x+β0y=β2x2+β1x+β0y=β3x3+β2x2+β1x+β0
R2) 因为复杂的模型可能会“过度拟合”数据。例如,假设您的时序数据是由二次算法生成的,但是时序中有一点噪音(操作系统的随机分页、时钟不准确、宇宙射线等等)。二次模型可能仍然相当适合,但它不会是完美的。但是,我们可以找到一个(非常高阶的)多项式来遍历每个数据点。这个模型非常适合,但在做出未来预测时会很糟糕,而且显然也不符合潜在的现象。我们希望平衡模型的复杂性和模型的解释力。如何做到这一点?

有很多选择。我最近偶然发现了 Zucchini 的这篇评论,这可能是一个很好的概述。一种方法是计算类似于AIC(Akaike Information Criterion)的东西,它调整每个模型的可能性以考虑参数的数量。这些通常相对容易计算。例如,AIC 是: 其中 L 是给定模型的数据的可能性,k 是参数的数量(例如,2 表示线性,3 表示二次等)。您为每个模型计算此标准,然后选择具有最小 AIC 的模型。

AIC=2k2ln(L)

另一种方法是使用交叉验证(或类似的方法)来证明你的模型都没有过拟合。然后,您可以选择最合适的模型。

这是一般情况。但是,正如@Michelle 上面提到的,如果您对潜在的现象有所了解,您可能根本不想进行模型选择。在这种情况下,如果您有代码或知道底层算法,您应该只跟踪它以确定算法的顺序。

另外,请记住,算法的 Big-O 阶在技术上并不是根据观察到的运行时间的最佳拟合来定义的;它更像是一个限制属性。你可以有一个算法,它的运行时有一个巨大的线性分量和一个小的二次分量,比如 我敢打赌,一个运行时与输入大小的图会很漂亮线性查看您可能测试的范围,但我相信该算法在技术上将被视为

t(N)=0.0000001n2+999999999n
O(n2)

模型选择将导致对残差方差的估计偏低。这将偏向推理的所有其他方面并膨胀的无偏估计在分母中具有,其中不包括截距的预先指定参数的数量。目前尚不清楚模型选择是否会有所帮助。可以只使用具有默认节点位置的回归样条曲线(通常基于预测变量分布的分位数),根据有效样本大小将支持的复杂性选择节点数。R包使这变得简单,课程笔记位于http://biostat.mc.vanderbilt.edu/rmsR2σ2np1prms会有所帮助。删除“不重要”的术语会损害推理。如果建模不是高度结构化的,则使用 AIC 有时会适得其反。个结,我使用 AIC 来告诉我大量预测器的最佳结点数这种结构最大限度地减少了模型不确定性造成的损害。kk

我不是 100% 确定,但如果模型是时候对数据进行排序,你可能应该包括一个或类似的东西(也许是它的),因为我认为这个术语出现在排序数据的理论时间复杂度计算。xlog(x)x2log(x)