(なぜ)オーバーフィットモデルは大きな係数を持つ傾向がありますか?


33

変数の係数が大きいほど、モデルはその次元で「スイング」する能力が大きくなり、ノイズに適合する機会が増えると思います。モデルの分散と大きな係数との関係については合理的な意味を持っていると思いますが、オーバーフィットモデルでそれらが発生する理由についてはあまり意味がありません。それらが過剰適合の症状であり、係数の収縮はモデルの分散を減らすための技術であると言うのは間違っていますか?係数の縮小による正則化は、大きな係数は過剰適合モデルの結果であるという原則に基づいているようですが、おそらくこの手法の背後にある動機を誤解しているのでしょう。

大きな係数は一般に過剰適合の症状であるという私の直感は、次の例から得られます。

すべてがx軸上にある点をフィットさせたいとしましょう。これらの点がある多項式を簡単に構築できます。私たちのポイントがでているとしましょう。この手法は、10以上のすべての係数を提供します(1つの係数を除く)。さらにポイントを追加すると(したがって、多項式の次数が増加します)、これらの係数の大きさは急速に増加します。f x = x x 1x x 2X - X N - 1X - X Nのx = 1 2 3 4nfバツ=バツバツ1バツバツ2バツバツn1バツバツnバツ=1234

この例は、現在、モデル係数のサイズと生成されたモデルの「複雑さ」をどのように結びつけているのかを示していますが、実際の動作を実際に示すためにこのケースが不毛になることを心配しています。私は意図的にオーバーフィットモデル(2次サンプリングモデルから生成されたデータにフィットする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

この例から得られることは、係数の3分の2が1未満であり、他の係数比較して、異常に大きい3つの係数があることです(これらの係数に関連付けられている変数も、最も近いものです真のサンプリングモデルに関連しています)。

(L2)正則化は、モデルの分散を小さくし、それにより将来のデータにより良く適合するように曲線を「滑らかにする」メカニズムですか、それとも過剰なモデルが大きな係数を示す傾向があるという観測から得られた発見的手法を利用していますか?過剰適合モデルは大きな係数を示す傾向があるというのは正確な記述ですか?もしそうなら、誰もがおそらく現象の背後にあるメカニズムを少し説明したり、いくつかの文献に私を導くことができますか?


4
「大きい」係数とはどういう意味ですか?結局、(パーセクからフェムトメーターに)従属変数を表現する単位を変更するだけであれば、係数の値を任意に大きくしたり小さくしたりできます。
whuber

1
そのための良い答えがありません。私の理解では、「大きな」係数への攻撃はL2正規化の背後にある動機付けのヒューリスティックであるということでした。しかし、係数の大きさを総合的に増やすには、モデル内のさまざまな大きさを補正するために正則化定数も変更する必要がありますよね?ここでの「大きい」という概念は、たとえそれを非常にうまく特徴付けることができなくても、あなたがそれを見せかけているほど曖昧であるとは思わない。
デビッドマルクス

@DavidMarx:L2正規化が「大きな」係数の後に続くとは思いませんか?むしろ、おそらく比較的大きくなかった係数をゼロにプッシュする傾向があり、ある意味では、2つの間の妥協点を見つけるのではなく、選択を余儀なくされます。
ウェイン

@ウェインああ、私は後方にそれを持っていたと思う。大きな係数を縮小するか、すべての係数を比例的に縮小すると考えていました。L2正規化により、より小さな係数の変数がモデルから押し出される場合、それはより意味があります。
デビッドマルクス

1
8回の編集の後、私は答えを書き留めていると思います。シーシュ。
香港大井

回答:


15

正則化のコンテキストでは、「大きな」係数は、固定モデル仕様が使用されていた場合、推定値の大きさがそれよりも大きいことを意味します。データから推定値だけでなくモデルの仕様を取得することの影響です。

与えられた変数に対して、ステップワイズ回帰のような手順が何をするかを考えてください。その係数の推定値が標準誤差に比べて小さい場合、モデルから削除されます。これは、真の値が実際に小さいためか、単にランダムエラー(または2つの組み合わせ)が原因である可能性があります。削除された場合は、注意を払う必要がなくなります。一方、推定値がその標準誤差に比べて大きい場合、推定値は保持されます。不均衡に注意してください。係数の推定値が小さい場合、最終モデルは変数を拒否しますが、推定値が大きい場合は変数を保持します。したがって、その価値を過大評価する可能性があります。

別の言い方をすれば、過剰適合とは、特定の予測変数セットが応答に与える影響を過大評価していることを意味します。ただし、影響を過大評価できる唯一の方法は、推定係数が大きすぎる場合です(逆に、除外された予測子の推定値が小さすぎる場合)。

stepβ3β10

これが私が話していることの例です。

repeat.exp <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(step(lm(y ~ x1, data=d), y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10, trace=0))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z <- repeat.exp(M=1000)

# some time later...
rowMeans(abs(z), na.rm=TRUE)

(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    3.162100    6.533642    3.108974    3.204341    3.131208    3.118276    3.217231    3.293691    3.149520    3.073062 

β3β10

repeat.exp.base <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(lm(y ~ ., data=d))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z2 <- repeat.exp.base(M=1000)

rowMeans(abs(z2))
(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    1.676066    6.400629    1.589061    1.648441    1.584861    1.611819    1.607720    1.656267    1.583362    1.556168 

β1β2


変更した例に少し混乱しています。「変数選択を使用しない場合と比較すると、係数β3〜β10の推定値はすべて体系的に大きすぎることがわかります」と言いますがstep、2回目の実験よりも最初の実験(で) (「ブラインド」フィッティング値)。これは、あなたが提案することに反することではないでしょうか?
デビッドマルクス

また、ここであなたと他の人は、私の例で変数を標準化することを提案しました。理由はわかりましたが、それを行う良い方法がわかりません。Xの各累乗の列を含めるようにサンプルデータを拡張し、それらの値を標準化する必要がありますか?または、私が呼び出すモデル式で変数を直接標準化する方法はありpolyますか?
デビッドマルクス

?ステップワイズを使用すると、ステップワイズを使用しない場合と比較して、絶対偏差が大きくなります。あなたが何を求めているのか分かりません。標準化に関しては、私が投稿したとおりに行う場合、つまり、段階的アプローチと非段階的アプローチの比較を行う場合は不要です。各変数は、他の変数ではなく、ある処理から他の処理と比較されています。
香港大井

6

詳細を検討せずに非常に簡単な答えを1つ挙げます。過剰適合の場合、パラメーター推定器は大きな分散を取得する傾向があり、大きな分散では大きな値が期待どおりです。


あなたが正しく理解していれば、モデルが「大きな」係数で構成される理由ではなく、モデルが「大きな」値を予測する理由を説明できます。
デビッドマルクス

いいえ、それは間違っています!少なくともいくつかの個々の係数推定器には大きな分散があるため、これらの係数の推定値は大きくなる傾向があります。(私たちの場合、オーバーフィッティングの場合でも、一部の係数は安定ではありますが、すべてではありません)また、予測の不偏性の特性を維持するために、独立した係数推定量の間にいくつかの大きな負の共分散がある傾向があります。
kjetil bハルヴォルセン

1
ただし、これは質問に完全には答えません。単に大きな分散の問題である場合、小さな推定値は大きな推定値と同じくらい頻繁に得られます(非公式に言えば)。問題は、(標準誤差に比べて)小さい推定値が「重要でない」と仮定し、モデルからこれらの変数を削除する場合です。その結果、残っている推定値は大きなものだけになります。
大井紅

0

デビッド。あなたの例の問題は、データを正規化していないことだと思います(つまり、X ^ 10 >> X.

だから、デビッドは正しいので、大きな係数をさらに縮小します(そのため、L1正則化では1つが大きく残りは0になる可能性がありますが、多くの小さな係数になります)

したがって、基本的には、小さな変更が小さな影響を与えるはずであることをカプセル化しています(そしてもちろん、どのくらい小さいかという問題に戻ります-データの正規化など)。しかし、重要なのは、相関が作用する高次元です。2つの変数x、yが高度に相関し(両方とも分散1に正規化されている)、それらの差が小さい= "ノイズ"であると想像してください。このノイズに適合しないようにします(yとxの係数をほぼキャンセルして非常に大きくなります)。

この例は、任意の線形関係(y = mx)でも有効です。

尾根回帰を調べる


1
davidすべての変数x、x ^ 2、...、x ^ nをゼロ平均と標準偏差1に正規化した例をやり直してみてください。そして、得られる結果を見てください。あなたの入力変数が大きい場合の係数が小さい
seanv507

0

オーバーフィットデモ

この画像はAndrew NgのDLコースのメモからです。質問がある場合はお知らせください


1
ニューラルネットワークの正則化に関するこのノートが係数サイズとオーバーフィッティングに関する質問に答えていると思う理由を説明していただけますか?
whuber

3つすべてがリンクされているオーバーフィットは、正則化が防止しようとするものであり、上記の理由により高い係数にペナルティを課すことによって試行されます
Pradi KL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.