我认为变量的系数越大,模型在该维度上“摆动”的能力就越强,从而增加了拟合噪声的机会。尽管我认为我对模型中的方差与大系数之间的关系有一个合理的认识,但是我对为什么它们出现在过拟合模型中却没有很好的认识。说它们是过度拟合的症状是不正确的,系数收缩更是一种减少模型方差的技术吗?通过系数收缩进行正则化的原理似乎是:大系数是过度拟合模型的结果,但也许我误解了该技术背后的动机。
我的直觉是大系数通常是过度拟合的症状,来自以下示例:
假设我们要拟合全部位于x轴上的个点。我们可以很容易地构造一个多项式,其解为这些点:。假设我们的点位于。该技术给出所有大于等于10的系数(一个系数除外)。随着我们添加更多点(从而增加多项式的次数),这些系数的大小将迅速增加。f (x )= (x − x 1)(x − x 2)。。。。(X - X ñ - 1)(X - X Ñ)X = 1 ,2 ,3 ,4
这个示例是我当前如何将模型系数的大小与生成的模型的“复杂性”联系起来的方式,但是我担心这种情况对于实际显示行为是不正确的。我特意建立了一个过拟合模型(对二次抽样模型生成的数据进行了10次多项式OLS拟合),并惊讶地发现模型中的系数很小:
set.seed(123)
xv = seq(-5,15,length.out=1e4)
x=sample(xv,20)
gen=function(v){v^2 + 7*rnorm(length(v))}
y=gen(x)
df = data.frame(x,y)
model = lm(y~poly(x,10,raw=T), data=df)
summary(abs(model$coefficients))
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 0.000001 0.003666 0.172400 1.469000 1.776000 5.957000
data.frame(sort(abs(model$coefficients)))
# model.coefficients
# poly(x, 10, raw = T)10 7.118668e-07
# poly(x, 10, raw = T)9 3.816941e-05
# poly(x, 10, raw = T)8 7.675023e-04
# poly(x, 10, raw = T)7 6.565424e-03
# poly(x, 10, raw = T)6 1.070573e-02
# poly(x, 10, raw = T)5 1.723969e-01
# poly(x, 10, raw = T)3 6.341401e-01
# poly(x, 10, raw = T)4 8.007111e-01
# poly(x, 10, raw = T)1 2.751109e+00
# poly(x, 10, raw = T)2 5.830923e+00
# (Intercept) 5.956870e+00
也许从该示例中得出的结论是,三分之二的系数小于1,并且相对于其他系数,有三个系数异常大(与这些系数相关的变量也恰好是最接近的与真实抽样模型有关)。
(L2)正则化只是减少模型中方差从而“平滑”曲线以更好地拟合未来数据的一种机制,还是利用从过拟合模型倾向于表现出较大系数的观察中得出的启发式方法?过度拟合的模型倾向于表现出较大的系数,这是一个准确的说法吗?如果是这样,有人可以稍微解释一下现象背后的机理和/或将我引向某些文献吗?