I imagine that the larger a coefficient on a variable is, the more ability the model has to "swing" in that dimension, providing an increased opportunity to fit noise. Although I think I've got a reasonable sense of the relationship between the variance in the model and large coefficients, I don't have as good a sense as to why they occur in overfit models. Is it incorrect to say that they are a symptom of overfitting and coefficient shrinkage is more a technique for reducing the variance in the model? Regularization via coefficient shrinkage seems to operate on the principle that large coefficients are the result of an overfitted model, but perhaps I'm misinterpreting the motivation behind the technique.
My intuition that large coefficients are generally a symptom of overfitting comes from the following example:
Let's say we wanted to fit $n$ points that all sit on the x-axis. We can easily construct a polynomial whose solutions are these points: $f(x) = (x-x_1)(x-x_2)....(x-x_{n-1})(x-x_n)$. Let's say our points are at $x=1,2,3,4$. This technique gives all coefficients >= 10 (except for one coefficient). As we add more points (and thereby increase the degree of the polynomial) the magnitude of these coefficients will increase quickly.
This example is how I'm currently connecting the size of the model coefficients with the "complexity" of the generated models, but I'm concerned that this case is to sterile to really be indicative of real-world behavior. I deliberately built an overfitted model (a 10th degree polynomial OLS fit on data generated from a quadratic sampling model) and was surprised to see mostly small coefficients in my model:
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
Maybe the take-away from this example is that two thirds of the coefficients are less than 1, and relative to the other coefficients, there are three coefficients that are unusually large (and the variables associated with these coefficients also happen to be those most closely related to the true sampling model).
Is (L2) regularization just a mechanism to diminish the variance in a model and thereby "smooth" the curve to better fit future data, or is it taking advantage of a heuristic derived from the observation that overfiited models tend to exhibit large coefficients? Is it an accurate statement that overfitted models tend to exhibit large coefficients? If so, can anyone perhaps explain the mechanism behind the phenomenon a little and/or direct me to some literature?