J'imagine que plus le coefficient d'une variable est grand, plus le modèle doit pouvoir "basculer" dans cette dimension, ce qui augmente les possibilités d'adaptation au bruit. Bien que je pense avoir une idée raisonnable de la relation entre la variance dans le modèle et les coefficients élevés, je ne comprends pas aussi bien pourquoi ils se produisent dans des modèles surévalués. Est-il incorrect de dire qu'ils sont un symptôme de surajustement, et que le coefficient de contraction est plus une technique permettant de réduire la variance dans le modèle? La régularisation par réduction de coefficient semble reposer sur le principe que les coefficients élevés sont le résultat d’un modèle suréquipé, mais j’interprète peut-être mal la motivation de la technique.
Mon intuition que des coefficients élevés soient généralement un symptôme de surajustement provient de l'exemple suivant:
Disons que nous voulions ajuster points qui se situent tous sur l'axe des x. Nous pouvons facilement construire un polynôme dont les solutions sont les points suivants: . Disons que nos points sont à . Cette technique donne tous les coefficients> = 10 (sauf un coefficient). Au fur et à mesure que nous ajouterons plus de points (et augmenterons ainsi le degré du polynôme), la magnitude de ces coefficients augmentera rapidement.f ( x ) = ( x - x 1 ) ( x - x 2 ) . . . . ( x - x n - 1 ) ( x - x n ) x = 1 , 2 , 3 , 4
Cet exemple montre comment je relie actuellement la taille des coefficients de modèle à la "complexité" des modèles générés, mais je crains que ce cas ne soit trop stérile pour véritablement indiquer un comportement réel. J'ai délibérément construit un modèle suréquipé (un ajustement MLS polynomial au 10ème degré sur des données générées à partir d'un modèle d'échantillonnage quadratique) et j'ai été surpris de voir la plupart du temps de petits coefficients dans mon modèle:
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
On retiendra peut-être de cet exemple que deux tiers des coefficients sont inférieurs à 1 et que, par rapport aux autres coefficients , il existe trois coefficients anormalement élevés (et les variables associées à ces coefficients sont également celles qui sont le plus proches). liés au modèle d'échantillonnage réel).
La régularisation (L2) est-elle simplement un mécanisme permettant de réduire la variance dans un modèle et ainsi "lisser" la courbe afin de mieux ajuster les données futures, ou tire-t-il parti d'une heuristique dérivée de l'observation selon laquelle les modèles surchargés tendent à afficher des coefficients élevés? Est-ce une affirmation précise que les modèles suralimentés ont tendance à présenter des coefficients élevés? Dans l’affirmative, peut-on expliquer un peu le mécanisme à l’origine du phénomène et / ou me diriger vers des ouvrages?