(Mengapa) apakah model overfitted cenderung memiliki koefisien yang besar?


33

Saya membayangkan bahwa semakin besar koefisien pada suatu variabel, semakin besar kemampuan model untuk "berayun" dalam dimensi itu, memberikan peluang yang lebih besar untuk menyesuaikan kebisingan. Meskipun saya pikir saya punya perasaan yang wajar tentang hubungan antara varians dalam model dan koefisien besar, saya tidak memiliki alasan yang baik mengapa mereka terjadi dalam model pakaian luar. Apakah salah untuk mengatakan bahwa itu adalah gejala overfitting dan koefisien penyusutan lebih merupakan teknik untuk mengurangi varians dalam model? Regularisasi melalui penyusutan koefisien tampaknya beroperasi pada prinsip bahwa koefisien besar adalah hasil dari model overfitted, tapi mungkin saya salah menafsirkan motivasi di balik teknik ini.

Intuisi saya bahwa koefisien besar umumnya merupakan gejala overfitting berasal dari contoh berikut:

Katakanlah kita ingin memasukkan poin yang semuanya terletak pada sumbu x. Kita dapat dengan mudah membuat polinomial yang solusinya adalah: . Katakanlah poin kita adalah . Teknik ini memberikan semua koefisien> = 10 (kecuali untuk satu koefisien). Ketika kita menambahkan lebih banyak poin (dan dengan demikian meningkatkan derajat polinomial) besarnya koefisien ini akan meningkat dengan cepat.f ( x ) = ( x - x 1 ) ( x - x 2 ) . . . . ( x - x n - 1 ) ( x - x n ) x = 1 , 2 , 3 , 4nf(x)=(x-x1)(x-x2)....(x-xn-1)(x-xn)x=1,2,3,4

Contoh ini adalah bagaimana saya saat ini menghubungkan ukuran koefisien model dengan "kompleksitas" dari model yang dihasilkan, tetapi saya khawatir bahwa kasus ini adalah steril untuk benar-benar menjadi indikasi perilaku dunia nyata. Saya sengaja membangun model overfitted (tingkat polinomial OLS 10 derajat pada data yang dihasilkan dari model sampling kuadratik) dan terkejut melihat sebagian besar koefisien kecil dalam model saya:

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

Mungkin kesimpulan dari contoh ini adalah bahwa dua pertiga dari koefisien kurang dari 1, dan relatif terhadap koefisien lainnya , ada tiga koefisien yang luar biasa besar (dan variabel yang terkait dengan koefisien ini juga merupakan yang paling dekat). terkait dengan model pengambilan sampel yang benar).

Apakah (L2) regularisasi hanya sebuah mekanisme untuk mengurangi varians dalam suatu model dan dengan demikian "memperlancar" kurva agar lebih sesuai dengan data masa depan, atau apakah memanfaatkan heuristik yang diperoleh dari pengamatan bahwa model-model overfiited cenderung menunjukkan koefisien yang besar? Apakah ini pernyataan akurat bahwa model overfitted cenderung menunjukkan koefisien yang besar? Jika demikian, adakah yang bisa menjelaskan mekanisme di balik fenomena sedikit dan / atau mengarahkan saya ke beberapa literatur?


4
Apa sebenarnya yang Anda maksud dengan koefisien "besar"? Lagi pula, jika kita hanya mengubah unit di mana kita mengekspresikan variabel dependen (seperti dari parsecs ke femtometer) kita dapat membuat koefisien secara sewenang-wenang besar atau kecil nilainya.
whuber

1
Saya tidak punya jawaban yang bagus untuk itu. Pemahaman saya adalah bahwa menyerang koefisien "besar" adalah heuristik yang memotivasi di balik regularisasi L2. Tetapi secara sintetis meningkatkan besaran koefisien akan membutuhkan juga mengubah konstanta regularisasi untuk mengimbangi besarnya yang berbeda dalam model sekarang, bukan? Saya tidak berpikir gagasan "besar" di sini sama ambigunya dengan yang Anda buat, bahkan jika saya tidak dapat menggambarkannya dengan baik.
David Marx

@ DavidvidMarx: Saya tidak berpikir bahwa L2-regularisasi mengejar koefisien "besar", bukan? Melainkan cenderung mendorong koefisien yang mungkin tidak relatif besar ke nol, dalam arti memaksa Anda untuk memilih daripada menemukan kompromi di antara keduanya.
Wayne

@ ah, ah, saya pikir saya sudah mundur. Saya berpikir bahwa itu menyusutkan koefisien yang lebih besar atau menyusut semua koefisien secara proporsional. Itu akan lebih masuk akal jika L2-regularisasi mendorong variabel dengan koefisien yang lebih kecil dari model.
David Marx

1
Setelah 8 pengeditan, saya pikir saya sudah menjawab. Sheesh.
Hong Ooi

Jawaban:


15

Dalam konteks regularisasi, koefisien "besar" berarti bahwa besaran estimasi lebih besar daripada seharusnya, jika spesifikasi model tetap telah digunakan. Ini dampak dari memperoleh tidak hanya perkiraan, tetapi juga spesifikasi model, dari data.

Pertimbangkan apa prosedur seperti regresi bertahap akan lakukan untuk variabel yang diberikan. Jika estimasi koefisiennya relatif kecil terhadap kesalahan standar, maka akan dikeluarkan dari model. Ini bisa jadi karena nilai sebenarnya benar-benar kecil, atau hanya karena kesalahan acak (atau kombinasi keduanya). Jika dijatuhkan, maka kami tidak lagi memperhatikannya. Di sisi lain, jika estimasi relatif besar terhadap kesalahan standar, itu akan dipertahankan. Perhatikan ketidakseimbangan: model akhir kami akan menolak variabel ketika estimasi koefisien kecil, tetapi kami akan menyimpannya ketika estimasi besar. Dengan demikian kita cenderung melebih-lebihkan nilainya.

Dengan kata lain, apa artinya overfitting adalah Anda melebih-lebihkan dampak dari serangkaian prediktor yang diberikan pada respons. Tetapi satu-satunya cara Anda dapat melebih-lebihkan dampaknya adalah jika koefisien yang diperkirakan terlalu besar (dan sebaliknya, perkiraan untuk prediktor yang dikecualikan Anda terlalu kecil).

stepβ3β10

Ini adalah contoh dari apa yang saya bicarakan.

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


Saya agak bingung dengan contoh modifikasi Anda. Anda mengatakan bahwa "Anda harus menemukan bahwa semua perkiraan koefisien β3 ke β10 terlalu besar secara sistematis, jika dibandingkan dengan tidak menggunakan pemilihan variabel," tetapi tampaknya Anda mendapat nilai yang lebih besar dalam eksperimen pertama (dengan step) daripada di eksperimen kedua Anda ("membabi buta" nilai-nilai pas). Bukankah ini bertentangan dengan apa yang Anda sarankan seharusnya terjadi?
David Marx

Juga, Anda dan orang lain di sini telah menyarankan saya harus menstandarisasi variabel dalam contoh saya. Saya melihat alasannya, tetapi saya tidak tahu cara yang baik untuk melakukan itu. Haruskah saya meningkatkan data sampel saya untuk memasukkan kolom untuk setiap kekuatan X dan menstandarkan nilai-nilai itu? Atau adakah cara saya dapat menstandarkan variabel secara langsung dalam formula model tempat saya menelepon poly(saya rasa tidak)?
David Marx

? Anda mendapatkan penyimpangan absolut yang lebih besar saat menggunakan stepwise, dibandingkan dengan tidak menggunakan stepwise. Tidak yakin apa yang Anda tanyakan. Adapun standardisasi: tidak perlu jika Anda melakukannya seperti yang saya posting, yaitu membuat perbandingan antara pendekatan stepwise dan non-stepwise. Setiap variabel dibandingkan dari satu perlakuan ke yang lain, bukan dengan variabel lain.
Hong Ooi

6

Satu jawaban yang sangat sederhana tanpa melihat detail Anda: Ketika Anda overfitting, penduga parameter cenderung mendapatkan varians besar, dan dengan varians besar nilai-nilai besar adalah apa yang seharusnya Anda harapkan!


Jika saya memahami Anda dengan benar, ini akan menjelaskan mengapa model akan memprediksi nilai "besar", bukan mengapa model tersebut terdiri dari koefisien "besar".
David Marx

Tidak, itu salah! Paling tidak beberapa dari penduga koefisien individu akan memiliki varians yang besar, sehingga nilai estimasi dari koefisien tersebut akan cenderung besar. (tentu saja, bahkan ketika overfitting, beberapa koefisien bisa stabil, tetapi tidak semua). Juga, untuk menjaga sifat tidak bias dari prediksi, akan cenderung ada beberapa kovarian negatif yang besar antara penaksir koefisien independen.
kjetil b halvorsen

1
Namun, ini tidak sepenuhnya menjawab pertanyaan. Jika itu hanya masalah varians besar, maka Anda akan mendapatkan perkiraan kecil sesering yang besar (berbicara secara informal). Masalahnya adalah ketika kita mengasumsikan estimasi kecil (relatif terhadap kesalahan std) adalah "tidak penting" dan membuang variabel-variabel tersebut dari model. Akibatnya, satu-satunya perkiraan yang tersisa adalah yang besar.
Hong Ooi

0

David. Saya pikir masalah dengan contoh Anda adalah Anda belum menormalkan data Anda (yaitu X ^ 10 >> X.

Jadi david benar sehingga menyusut lebih besar koefisien lebih besar (sehingga Anda dapat berakhir dengan banyak koefisien kecil, sedangkan regularisasi L1 mungkin memberi Anda satu besar dan sisanya nol)

jadi pada dasarnya itu merangkum bahwa perubahan kecil harus memiliki efek kecil (dan tentu saja kita kembali ke masalah seberapa kecil kecil - normalisasi data Anda dll). Tetapi kuncinya adalah dalam dimensi yang lebih tinggi, di mana korelasi berperan: bayangkan Anda memiliki dua variabel x, y yang sangat berkorelasi (keduanya dinormalisasi ke varians 1) maka perbedaannya akan kecil = "noise" - menghukum bobot yang besar karenanya mencegah Anda menyesuaikan diri dengan kebisingan ini (dan menjadi sangat besar hampir membatalkan koefisien untuk y dan x).

Contoh masih berlaku untuk setiap hubungan linier (y = mx)

mencari regresi ridge


1
david kenapa tidak Anda ulangi contoh menormalkan semua variabel x, x ^ 2, ..., x ^ n ke nol rata-rata dan standar deviasi 1, dan kemudian melihat hasil yang Anda dapatkan ... itu tidak terlalu mengejutkan bahwa Anda koefisien kecil ketika variabel input Anda besar
seanv507

0

demo overfitting

Gambar ini dari catatan saya tentang kursus DL Andrew Ng, mohon beri tahu saya jika Anda memiliki pertanyaan


1
Bisakah Anda menjelaskan mengapa Anda pikir catatan tentang regularisasi jaringan saraf ini menjawab pertanyaan tentang ukuran koefisien dan overfitting?
Whuber

ketiganya terkait overfitting adalah apa yang coba dicegah oleh regularisasi dan itu mencoba dengan menghukum koefisien tinggi karena alasan di atas
Pradi KL
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.