我一直在模拟一些带有一些噪声(所有点都是常数)的二次数据。我用岭回归的多项式拟合这些数据。为了找到最好的超参数,我使用了交叉验证,然后我得到了一个很好的模型。我的错误函数是:
我的问题是,当我试图适应只是为了好玩,我没有得到 0 的值。我期待 0 的值,因为在我看来,由于岭因子作为一个约束,它迫使解决方案远离最小二乘,所以我的误差函数中的最小二乘因子变得更大,而且我们还有一个额外的误差项,使整体误差更大。因此,我期待去 0 恢复最小二乘解,但这根本不是我得到的。这里有一些图来说明。
这是我在没有岭因子的情况下将我的 10 度多项式拟合到我的数据集的时候。灰色区域是 1 sigma 范围(我正在做贝叶斯分析)。红线是真实模型。
这是我适合的时候同时作为我的多项式系数。这 通过交叉验证检索并拟合非常相似,从图中可以看出
我们可以看到最后两个情节非常相似。我对将我的预测推广到远离这个区域并不感兴趣,我只对检索最接近真实模型的模型感兴趣。为了量化这一点,我使用 L2 范数,在哪里是检索到的模型,并且是真实的模型。正如预期的那样,从交叉验证中获得了与真实模型差异最小的模型,但是具有合身也非常接近。
如上所述,我不明白为什么不去 0 并且我在拟合时没有从第一个图中检索解决方案.
一种可能的解释来自我使用的确切误差函数。如上所述,我进行了贝叶斯分析,因此我上面描述的“错误”函数并不完全是我正在使用的函数。对于那些熟悉的人,我的 Log 后验的函数形式是:
在哪里是我对数据的高斯噪声。它是在贝叶斯分析期间拟合的。 是在权重上以 0 为中心的高斯先验标准差. 是通常的岭因子。
在拟合我的数据时,我可以看到两个日志项之间的一些奇怪的相互作用,这可以解释为什么不会去0,但我真的不买它。
作为参考,我正在通过将 x 的每个幂视为一个特征并对其中的每一个进行归一化来进行回归,以避免在进行 Ridge 时出现缩放问题。
无论如何,感谢您的帮助!