多项式回归中线性相关性的意义是什么?

机器算法验证 回归 红宝石
2022-04-01 17:58:09

我正在尝试为多项式的幂在 2 到 10 之间的数据集找到最佳多项式回归。所以回归最多可以有一个 x 10项。数据集本身只是一组 x 和 y 对,如下所示:

1,15.3
2,66.0
3,272.5
4,814.8

据我了解,进行多项式回归的正常方法是简单地将幂变换应用于 x 向量(即,将向量中的每个元素的 6 次方),将此向量添加到数据集中,然后处理此变换向量作为另一个自变量。

但是,如果我以足够高的功率(通常为 6 及以上)尝试这种方法,我的回归库(Ruby 的 statsample)会告诉我“回归量是线性相关的”,并引发错误。我知道从技术上讲,x 向量相互依赖,因为它们是相互派生的,但它肯定不是线性依赖(其中一个与另一个相同乘以标量)。这是怎么回事?这是什么意思?

作为一个例子,这是我在 Ruby 中的代码示例(有人告诉我,这个库很像 R,但是对于所有 R 用户来说):

# Read the dataset (like an R data frame??) containing just x and y (see the example above)
ds = CSV.read(file_name)

# For each possible polynomial power between 2 and 10, add a new vector which consists
# of the x vector to that power, and then run a regression
(2..10).each do |i|

  # Add a vector called x2, x3, x4 etc. and apply the power transformation
  ds.add_vector("x#{i}", ds["x"].map{ |x| x**i }.to_scale)

  #Run the regression
  reg = lr(ds,'y')
end
1个回答

回想一下线性代数,线性相关向量是一组向量,可以表示为彼此的线性组合。在执行回归时,这会产生问题,因为矩阵XTX是奇异的,因此没有唯一定义的解决方案来估计您的回归系数。(矩阵XTX很重要,因为它在估计 OLS 回归系数中的作用β^β^=(XTX)1XTy.)

线性依赖是一种技术现象,与您表达的“依赖”的普通用法不同。

因此,在了解了线性相关性之后,我们可以开始研究这个问题的可能根源。

  1. 特征多于行尚不清楚您拥有多少数据,但通过添加多项式项,您可能会无意中产生维度问题:列数多于观察值的普通回归将失败!这是因为您定义的方程组有无限多的解,即每一列中都没有一个枢轴点。这与具有单数的问题相同XTX.

  2. 重复数据即使您的行数多于要素数,重要的是这些行中的每一行都提供了唯一的信息。在这种情况下,重复的行是没有帮助的。根据定义,多项式回归矩阵X(包含由...组成[1,x,x2,...xm]as columns) 是一个Vandermonde 矩阵,所以如果有m+1原始条目中的唯一条目x向量。因此,尽管有 100 个观察值,但也许你有较少数量的独特x条目?

  3. 病态矩阵即使 (1) 和 (2) 都不为真,矩阵也可能在数值上是奇异的,即由于机器精度的原因是奇异的。有很多方法可以解决这个问题,这取决于你愿意做出什么样的妥协。这些包括正交多项式、正则化和样条等。

解决病态矩阵的一般策略X称为岭回归,它通过找到适用于您的问题的最佳正则化量来工作。岭回归在整个网站上都有讨论。一个开始的地方就是这个出色的答案

AndyW 指出,拟合非常高阶的多项式通常是不明智的,因为它会增加过度拟合的风险。在预测设置中,通常建议使用交叉验证来评估给定模型的适合度。根据您的应用程序,您可能会关心不同的样本外测试,但此类问题的典型指标是均方误差。