R 的平方总是大于 1

机器算法验证 回归 多重回归 套索 r平方 样本外
2022-04-08 03:09:18

我正在尝试使用以下目标函数(LASSO)实现一个解决线性回归问题的算法:

minβ12||yXβ||22+λ||β||1

对于在不时添加或更改的几个约束条件下的各种λ值。yX是我的训练数据,它们已标准化为均值为 0,并标准化为具有单位l_2 -norm对于我解决的所有回归问题(记住我不时添加一些约束),我想在验证集上计算样本外R^2以比较模型。验证集也已标准化,但我使用了训练集的平均值,而验证集没有标准化。λyXl2R2

当我以下列方式计算R2时,我收到大于 1 的值:

R2=i=1n(yi^yi¯)2i=1n(yiyi¯)2

由于训练集被标准化为具有 0 均值,并且训练集的均值用于计算R2,因此上述术语简化为:

R2=i=1n(yi^)2i=1n(yi)2

我所有的R2值都高于 1(大约 1.5 到 1.6)。即使我在训练集上使用相同的计算,该值也会超过 1(请注意,在训练集的情况下,分母等于 1,因为训练集被标准化为具有单位l2

我感觉到这里出了点问题,但我没能找到错误。我想也许这个R2的标准计算不适用于我的 LASSO 目标函数。如果是这种情况,这里计算R2的正确方法是什么?

2个回答

您的错误不是来自将均值归零,而是来自的一般计算,这不是您写的。使用您的符号,我们有几个值:R2

  • SStot=i(yiy¯)2总平方和
  • SSreg=i(y^iy¯)2解释平方和
  • SSres=i(yiy^i)2残差平方和

现在一般公式是,具体取决于无法解释的方差与数据总方差之间的比率。R2=1SSresSStot

那么一般公式等价于你写的那个:,可以看出作为解释方差与总方差之间的比率。SSres+SSreg=SStotR2=SSregSStot

例如,条件在非正则化线性回归中为真,但在 LASSO 惩罚中可能不为真。SSres+SSreg=SStot

这是一个有趣的问题,请参阅thisthis以获得两个相关的帖子。据我从文献中了解到的,以及从上述引用帖子的答案/评论来看,确定系数的计算和解释以及惩罚估计方法中标准误差的计算是目前悬而未决的问题。

所以我目前对你的问题的回答是:在套索类型的问题中放弃使用和调整后也许,拟合优度测试可以成为的可行替代方案。R2R2R2