Saya agak mengerti apa arti "overfitting", tetapi saya perlu bantuan tentang bagaimana menghasilkan contoh dunia nyata yang berlaku untuk overfitting.
Saya agak mengerti apa arti "overfitting", tetapi saya perlu bantuan tentang bagaimana menghasilkan contoh dunia nyata yang berlaku untuk overfitting.
Jawaban:
Berikut adalah contoh model seri waktu pemilihan presiden dari xkcd:
Hanya ada 56 pemilihan presiden dan 43 presiden. Tidak banyak data untuk dipelajari. Ketika ruang prediktor meluas untuk memasukkan hal-hal seperti memiliki gigi palsu dan nilai titik Scrabble nama, cukup mudah bagi model untuk beralih dari mencocokkan fitur data yang dapat digeneralisasikan (sinyal) dan untuk mulai mencocokkan kebisingan. Ketika ini terjadi, kecocokan pada data historis dapat meningkat, tetapi model akan gagal total ketika digunakan untuk membuat kesimpulan tentang pemilihan presiden di masa depan.
Favorit saya adalah contoh Matlab tentang populasi sensus AS versus waktu:
(Setidaknya saya sangat berharap ini adalah contoh overfitting)
http://www.mathworks.com/help/curvefit/examples/polynomial-curve-fitting.html#zmw57dd0e115
Studi tentang Chen et al. (2013) cocok dua kubik dengan diskontinuitas yang diharapkan dalam harapan hidup sebagai fungsi garis lintang.
Chen Y., Ebenstein, A., Greenstone, M., dan Li, H. 2013. Bukti tentang dampak paparan polusi udara yang berkelanjutan pada harapan hidup dari kebijakan Sungai Huai Tiongkok. Prosiding National Academy of Sciences 110: 12936-12941. abstrak
Terlepas dari publikasi dalam jurnal yang luar biasa, dll., Dukungan diam-diam oleh orang-orang terkemuka, dll. Saya masih akan menyajikan ini sebagai contoh prima facie dari over-fitting.
Sebuah tanda adalah kisah yang tidak masuk akal dari kubik. Menyesuaikan kubik secara implisit mengasumsikan ada beberapa alasan mengapa harapan hidup akan bervariasi sebagai polinomial derajat ketiga dari garis lintang tempat Anda tinggal. Kelihatannya agak tidak masuk akal: tidak mudah membayangkan mekanisme fisik yang masuk akal yang akan menyebabkan efek seperti itu.
Lihat juga posting blog berikut untuk analisis yang lebih rinci dari makalah ini: Bukti tentang dampak penggunaan regresi polinomial yang berkelanjutan pada inferensial kausal (klaim bahwa pemanasan batubara mengurangi umur 5 tahun hingga setengah miliar orang) .
Dalam sebuah artikel pada 14 Maret 2014 di Science , David Lazer, Ryan Kennedy, Gary King, dan Alessandro Vespignani mengidentifikasi masalah di Google Pantau Flu Dunia yang mereka anggap overfitting.
Inilah cara mereka menceritakan kisah itu, termasuk penjelasan mereka tentang sifat overfitting dan mengapa hal itu menyebabkan algoritma gagal:
Pada bulan Februari 2013, ... Nature melaporkan bahwa GFT memperkirakan lebih dari dua kali lipat proporsi kunjungan dokter untuk penyakit mirip influenza (ILI) daripada Pusat Pengendalian dan Pencegahan Penyakit (CDC) .... Ini terjadi terlepas dari kenyataan bahwa GFT dibangun untuk memprediksi laporan CDC. ...
Pada dasarnya, metodologi ini adalah untuk menemukan kecocokan terbaik di antara 50 juta istilah pencarian agar sesuai dengan 1152 poin data. Peluang menemukan istilah pencarian yang sesuai dengan kecenderungan flu tetapi secara struktural tidak terkait, dan karenanya tidak memprediksi masa depan, cukup tinggi. Pengembang GFT, pada kenyataannya, melaporkan menyingkirkan istilah pencarian musiman yang tidak terkait dengan flu tetapi berkorelasi kuat dengan data CDC, seperti yang berhubungan dengan bola basket sekolah menengah. Ini seharusnya menjadi peringatan bahwa big data terlalu banyak digunakan dalam jumlah kecil kasus — suatu keprihatinan standar dalam analisis data. Metode ad hoc ini membuang istilah pencarian aneh gagal ketika GFT benar-benar melewatkan pandemi influenza A – H1N1 2009 nonseasonal.
[Penekanan ditambahkan.]
Saya melihat gambar ini beberapa minggu yang lalu dan berpikir itu agak relevan dengan pertanyaan yang ada.
Alih-alih cocok secara linier urutannya, ia dilengkapi dengan polinomial kuartik, yang sangat cocok, tetapi menghasilkan jawaban yang jelas konyol.
Bagi saya contoh terbaik adalah sistem Ptolema dalam astronomi. Ptolemy berasumsi bahwa Bumi berada di pusat alam semesta, dan menciptakan sistem canggih orbit melingkar bersarang, yang akan menjelaskan pergerakan benda di langit dengan cukup baik. Para astronom harus terus menambahkan lingkaran untuk menjelaskan penyimpangan, sampai suatu hari menjadi begitu rumit sehingga orang-orang mulai meragukannya. Saat itulah Copernicus datang dengan model yang lebih realistis.
Ini adalah contoh terbaik dari overfitting kepada saya. Anda tidak dapat menyesuaikan proses pembuatan data (DGP) dengan data. Anda hanya bisa mengenakan model yang salah ditentukan. Hampir semua model kita dalam ilmu-ilmu sosial tidak ditentukan secara spesifik, jadi kuncinya adalah mengingat ini, dan menjaga mereka tetap kikir. Bukan untuk mencoba menangkap setiap aspek dari kumpulan data, tetapi mencoba untuk menangkap fitur-fitur penting melalui penyederhanaan.
Katakanlah Anda memiliki 100 titik pada grafik.
Anda bisa mengatakan: hmm, saya ingin memprediksi yang berikutnya.
Di sini Anda dapat melihat ilustrasi yang disederhanakan untuk contoh ini:
Semakin tinggi urutan polinomial, semakin baik sesuai dengan titik-titik yang ada.
Namun, polinomial orde tinggi, meskipun tampak seperti model yang lebih baik untuk titik-titik, sebenarnya overfitting mereka. Ini memodelkan kebisingan daripada distribusi data yang sebenarnya.
Sebagai konsekuensinya, jika Anda menambahkan titik baru ke grafik dengan kurva yang pas, Anda mungkin akan lebih jauh dari kurva daripada jika Anda menggunakan polinomial orde rendah yang lebih sederhana.
Analisis yang mungkin berkontribusi pada bencana Fukushima adalah contoh overfitting. Ada hubungan yang dikenal luas dalam Ilmu Bumi yang menggambarkan probabilitas gempa bumi dengan ukuran tertentu, mengingat frekuensi yang diamati dari gempa "yang lebih rendah". Ini dikenal sebagai hubungan Gutenberg-Richter, dan menyediakan log garis lurus selama beberapa dekade. Analisis risiko gempa bumi di sekitar reaktor (diagram ini dari buku bagus Nate Silver "The Signal and the Noise") menunjukkan "ketegaran" dalam data. Mengabaikan kekusutan mengarah pada perkiraan risiko tahunan gempa berkekuatan 9 sekitar 1 banding 300 - jelas sesuatu yang harus dipersiapkan. Namun, overfitting garis kemiringan ganda (seperti yang tampaknya dilakukan selama penilaian risiko awal untuk reaktor) mengurangi prediksi risiko menjadi sekitar 1 dalam 13.000 tahun. Orang tidak dapat menyalahkan para insinyur karena tidak merancang reaktor untuk menahan peristiwa yang tidak mungkin - tetapi orang harus benar-benar menyalahkan para ahli statistik yang mengenakan (dan kemudian mengekstrapolasi) data ...
"Agh! Pat meninggalkan perusahaan. Bagaimana kita bisa menemukan penggantinya?"
Posting Pekerjaan:
Dicari: Insinyur Listrik. Orang berusia 21 tahun dengan gelar di bidang Teknik Listrik, matematika, dan peternakan. Harus setinggi 68 inci dengan rambut cokelat, tahi lalat di atas mata kiri, dan rentan terhadap cacian yang panjang lebar terhadap angsa dan penyalahgunaan kata 'nasihat'.
Dalam pengertian matematika, overfitting sering merujuk pada pembuatan model dengan lebih banyak parameter daripada yang diperlukan, menghasilkan kecocokan yang lebih baik untuk set data tertentu, tetapi tanpa menangkap detail yang relevan yang diperlukan agar sesuai dengan set data lain dari kelas yang diminati.
Dalam contoh di atas, poster tidak dapat membedakan yang relevan dari karakteristik yang tidak relevan. Kualifikasi yang dihasilkan kemungkinan hanya dipenuhi oleh satu orang yang sudah mereka kenal tepat untuk pekerjaan itu (tetapi tidak lagi menginginkannya).
Yang ini dibuat-buat, tapi saya harap ini akan menggambarkan kasusnya.
Contoh 1
set.seed(123)
k <- 100
data <- replicate(k, rnorm(100))
colnames(data) <- make.names(1:k)
data <- as.data.frame(data)
Sekarang, mari kita masukkan regresi linier ke dalamnya:
fit <- lm(X1 ~ ., data=data)
Dan di sini adalah ringkasan untuk sepuluh prediksi pertama:
> summary(fit)
Call:
lm(formula = X1 ~ ., data = data)
Residuals:
ALL 100 residuals are 0: no residual degrees of freedom!
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.502e-01 NA NA NA
X2 3.153e-02 NA NA NA
X3 -6.200e-01 NA NA NA
X4 7.087e-01 NA NA NA
X5 4.392e-01 NA NA NA
X6 2.979e-01 NA NA NA
X7 -9.092e-02 NA NA NA
X8 -5.783e-01 NA NA NA
X9 5.965e-01 NA NA NA
X10 -8.289e-01 NA NA NA
...
Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: NaN
F-statistic: NaN on 99 and 0 DF, p-value: NA
hasilnya terlihat sangat aneh, tapi mari kita plot itu.
> sum(abs(data$X1-fitted(fit)))
[1] 0
Ini nol, jadi plotnya tidak berbohong kepada kami: modelnya sangat cocok. Dan seberapa tepat klasifikasi itu?
> sum(data$X1==fitted(fit))
[1] 100
Contoh 2
Satu lagi contoh. Mari kita membuat lebih banyak data:
data2 <- cbind(1:10, diag(10))
colnames(data2) <- make.names(1:11)
data2 <- as.data.frame(data2)
jadi terlihat seperti ini:
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11
1 1 1 0 0 0 0 0 0 0 0 0
2 2 0 1 0 0 0 0 0 0 0 0
3 3 0 0 1 0 0 0 0 0 0 0
4 4 0 0 0 1 0 0 0 0 0 0
5 5 0 0 0 0 1 0 0 0 0 0
6 6 0 0 0 0 0 1 0 0 0 0
7 7 0 0 0 0 0 0 1 0 0 0
8 8 0 0 0 0 0 0 0 1 0 0
9 9 0 0 0 0 0 0 0 0 1 0
10 10 0 0 0 0 0 0 0 0 0 1
dan sekarang mari kita masukkan regresi linier untuk ini:
fit2 <- lm(X1~., data2)
jadi kami mendapatkan taksiran berikut:
> summary(fit2)
Call:
lm(formula = X1 ~ ., data = data2)
Residuals:
ALL 10 residuals are 0: no residual degrees of freedom!
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 10 NA NA NA
X2 -9 NA NA NA
X3 -8 NA NA NA
X4 -7 NA NA NA
X5 -6 NA NA NA
X6 -5 NA NA NA
X7 -4 NA NA NA
X8 -3 NA NA NA
X9 -2 NA NA NA
X10 -1 NA NA NA
X11 NA NA NA NA
Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: NaN
F-statistic: NaN on 9 and 0 DF, p-value: NA
Cukup jelas. Anda dapat menganggap Contoh 1 mirip dengan Contoh 2 tetapi dengan beberapa "noise" ditambahkan. Jika Anda memiliki data yang cukup besar dan menggunakannya untuk "memprediksi" sesuatu maka kadang-kadang satu "fitur" dapat meyakinkan Anda bahwa Anda memiliki "pola" yang menggambarkan variabel dependen Anda dengan baik, sementara itu bisa saja hanya kebetulan. Dalam Contoh 2 tidak ada yang benar-benar diprediksi, tetapi persis sama telah terjadi pada Contoh 1 hanya nilai-nilai variabel yang berbeda.
Contoh kehidupan nyata
Contoh kehidupan nyata untuk ini adalah memprediksi serangan teroris pada 11 September 2001 dengan menonton "pola" dalam jumlah yang secara acak ditarik oleh generator nomor pseudorandom komputer oleh Global Consciousness Project atau "pesan rahasia" dalam "Moby Dick" yang mengungkap fakta tentang pembunuhan orang-orang terkenal (Terinspirasi oleh temuan serupa dalam Alkitab )
Kesimpulan
Jika Anda terlihat cukup keras, Anda akan menemukan "pola" untuk apa pun. Namun, pola-pola itu tidak akan membiarkan Anda belajar apa pun tentang alam semesta dan tidak akan membantu Anda mencapai kesimpulan umum. Mereka akan cocok dengan data Anda, tetapi akan sia-sia karena mereka tidak akan cocok dengan data lainnya. Mereka tidak akan membiarkan Anda membuat prediksi out-of-sample yang masuk akal, karena apa yang akan mereka lakukan, adalah mereka lebih suka meniru daripada menggambarkan data.
Masalah umum yang mengakibatkan overfitting dalam kehidupan nyata adalah bahwa selain istilah untuk model yang ditentukan dengan benar, kami mungkin telah menambahkan sesuatu yang tidak relevan: kekuatan yang tidak relevan (atau transformasi lainnya) dari istilah yang benar, variabel yang tidak relevan, atau interaksi yang tidak relevan.
Ini terjadi dalam regresi berganda jika Anda menambahkan variabel yang seharusnya tidak muncul dalam model yang ditentukan dengan benar tetapi tidak ingin menjatuhkannya karena Anda takut mendorong bias variabel yang dihilangkan . Tentu saja, Anda tidak memiliki cara untuk mengetahui bahwa Anda salah memasukkannya, karena Anda tidak dapat melihat seluruh populasi, hanya sampel Anda, jadi tidak dapat mengetahui dengan pasti apa spesifikasi yang benar. (Seperti yang ditunjukkan @Scortchi dalam komentar, mungkin tidak ada spesifikasi model yang "benar" - dalam hal itu, tujuan pemodelan adalah menemukan spesifikasi "cukup baik"; untuk menghindari overfitting melibatkan menghindari kompleksitas model. lebih besar daripada yang bisa dipertahankan dari data yang tersedia.) Jika Anda ingin contoh nyata dunia overfitting, ini terjadi setiap kaliAnda membuang semua prediktor potensial ke dalam model regresi, jika ada di antara mereka yang sebenarnya tidak memiliki hubungan dengan respons begitu efek dari orang lain tersingkir.
Dengan jenis overfitting ini, kabar baiknya adalah bahwa penyertaan istilah yang tidak relevan ini tidak menimbulkan bias bagi penaksir Anda, dan dalam sampel yang sangat besar koefisien dari istilah yang tidak relevan harus mendekati nol. Tetapi ada juga berita buruk: karena informasi yang terbatas dari sampel Anda sekarang digunakan untuk memperkirakan lebih banyak parameter, itu hanya dapat melakukannya dengan kurang presisi - sehingga kesalahan standar pada istilah yang benar-benar relevan meningkat. Itu juga berarti mereka cenderung lebih jauh dari nilai sebenarnya daripada perkiraan dari regresi yang ditentukan dengan benar, yang pada gilirannya berarti bahwa jika diberi nilai baru dari variabel penjelas Anda, prediksi dari model overfitted akan cenderung kurang akurat daripada untuk model yang ditentukan dengan benar.
Berikut adalah plot PDB log terhadap populasi log untuk 50 negara bagian AS pada tahun 2010. Sampel acak dari 10 negara dipilih (disorot dengan warna merah) dan untuk sampel tersebut kami mencocokkan model linier sederhana dan polinomial derajat 5. Untuk sampel poin, polinomial memiliki derajat kebebasan ekstra yang membuatnya "menggeliat" lebih dekat ke data yang diamati daripada garis lurus bisa. Tetapi 50 negara secara keseluruhan mematuhi hubungan yang hampir linier, sehingga kinerja prediktif model polinomial pada 40 titik out-of-sample sangat buruk dibandingkan dengan model yang kurang kompleks, terutama ketika ekstrapolasi. Polinomial secara efektif menyesuaikan beberapa struktur acak (noise) dari sampel, yang tidak menyamaratakan populasi yang lebih luas. Itu sangat buruk dalam ekstrapolasi di luar kisaran yang diamati dari sampel.revisi jawaban ini.)
R
require(MASS) #for multivariate normal simulation
nsample <- 25 #sample to regress
nholdout <- 1e6 #to check model predictions
Sigma <- matrix(c(1, 0.5, 0.4, 0.5, 1, 0.3, 0.4, 0.3, 1), nrow=3)
df <- as.data.frame(mvrnorm(n=(nsample+nholdout), mu=c(5,5,5), Sigma=Sigma))
colnames(df) <- c("x1", "x2", "x3")
df$y <- 5 + 2 * df$x1 + rnorm(n=nrow(df)) #y = 5 + *x1 + e
holdout.df <- df[1:nholdout,]
regress.df <- df[(nholdout+1):(nholdout+nsample),]
overfit.lm <- lm(y ~ x1*x2*x3, regress.df)
correctspec.lm <- lm(y ~ x1, regress.df)
summary(overfit.lm)
summary(correctspec.lm)
holdout.df$overfitPred <- predict.lm(overfit.lm, newdata=holdout.df)
holdout.df$correctSpecPred <- predict.lm(correctspec.lm, newdata=holdout.df)
with(holdout.df, sum((y - overfitPred)^2)) #SSE
with(holdout.df, sum((y - correctSpecPred)^2))
require(ggplot2)
errors.df <- data.frame(
Model = rep(c("Overfitted", "Correctly specified"), each=nholdout),
Error = with(holdout.df, c(y - overfitPred, y - correctSpecPred)))
ggplot(errors.df, aes(x=Error, color=Model)) + geom_density(size=1) +
theme(legend.position="bottom")
Ini adalah hasil saya dari sekali jalan, tetapi yang terbaik adalah menjalankan simulasi beberapa kali untuk melihat efek dari berbagai sampel yang dihasilkan.
> summary(overfit.lm)
Call:
lm(formula = y ~ x1 * x2 * x3, data = regress.df)
Residuals:
Min 1Q Median 3Q Max
-2.22294 -0.63142 -0.09491 0.51983 2.24193
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 18.85992 65.00775 0.290 0.775
x1 -2.40912 11.90433 -0.202 0.842
x2 -2.13777 12.48892 -0.171 0.866
x3 -1.13941 12.94670 -0.088 0.931
x1:x2 0.78280 2.25867 0.347 0.733
x1:x3 0.53616 2.30834 0.232 0.819
x2:x3 0.08019 2.49028 0.032 0.975
x1:x2:x3 -0.08584 0.43891 -0.196 0.847
Residual standard error: 1.101 on 17 degrees of freedom
Multiple R-squared: 0.8297, Adjusted R-squared: 0.7596
F-statistic: 11.84 on 7 and 17 DF, p-value: 1.942e-05
> summary(correctspec.lm)
Call:
lm(formula = y ~ x1, data = regress.df)
Residuals:
Min 1Q Median 3Q Max
-2.4951 -0.4112 -0.2000 0.7876 2.1706
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.7844 1.1272 4.244 0.000306 ***
x1 1.9974 0.2108 9.476 2.09e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.036 on 23 degrees of freedom
Multiple R-squared: 0.7961, Adjusted R-squared: 0.7872
F-statistic: 89.8 on 1 and 23 DF, p-value: 2.089e-09
> with(holdout.df, sum((y - overfitPred)^2)) #SSE
[1] 1271557
> with(holdout.df, sum((y - correctSpecPred)^2))
[1] 1052217
(dan memiliki lebih banyak derajat kebebasan untuk melakukannya daripada model yang ditentukan dengan benar, sehingga dapat menghasilkan kecocokan "lebih baik"). Lihatlah jumlah kesalahan kuadrat untuk prediksi pada set ketidaksepakatan, yang kami tidak gunakan untuk memperkirakan koefisien regresi dari, dan kita dapat melihat seberapa buruk kinerja model overfitted. Pada kenyataannya, model yang ditentukan dengan benar adalah model yang membuat prediksi terbaik. Kami tidak seharusnya mendasarkan penilaian kami terhadap kinerja prediktif pada hasil dari set data yang kami gunakan untuk memperkirakan model. Berikut adalah plot kepadatan kesalahan, dengan spesifikasi model yang benar menghasilkan lebih banyak kesalahan mendekati 0:
Simulasi ini dengan jelas mewakili banyak situasi kehidupan nyata yang relevan (bayangkan saja respons kehidupan nyata yang bergantung pada satu prediktor, dan bayangkan memasukkan "prediktor" yang tidak lazim ke dalam model) tetapi memiliki manfaat yang dapat Anda mainkan dengan proses pembuatan data , ukuran sampel, sifat dari model overfitted dan sebagainya. Ini adalah cara terbaik Anda dapat memeriksa efek overfitting karena untuk data yang diamati Anda umumnya tidak memiliki akses ke DGP, dan itu masih data "nyata" dalam arti bahwa Anda dapat memeriksa dan menggunakannya. Berikut adalah beberapa ide berharga yang harus Anda coba:
n <- 1e6
Sigma
. Hanya ingat untuk tetap positif semi-pasti (yang termasuk menjadi simetris). Anda harus menemukan jika Anda mengurangi multikolinieritas, model overfitted tidak berkinerja sangat buruk. Namun perlu diingat bahwa prediktor yang berkorelasi memang terjadi dalam kehidupan nyata.df$y <- 5 + 2*df$x1 + rnorm(n=nrow(df))
df$y <- 5 + 2 * df$x1 + 0.1*df$x2 + 0.1*df$x3 + rnorm(n=nrow(df))
nsample <- 25
nsample <- 1e6
, dapat memperkirakan efek yang lebih lemah dengan cukup baik, dan simulasi menunjukkan model kompleks memiliki kekuatan prediksi yang mengungguli yang sederhana. Ini menunjukkan bagaimana "overfitting" adalah masalah kompleksitas model dan data yang tersedia.Ketika saya mencoba untuk memahami ini sendiri, saya mulai berpikir dalam hal analogi dengan menggambarkan objek nyata, jadi saya kira itu sebagai "dunia nyata" yang bisa Anda dapatkan, jika Anda ingin memahami ide umum:
Katakanlah Anda ingin menjelaskan kepada seseorang konsep kursi, sehingga mereka mendapatkan model konseptual yang memungkinkan mereka untuk memprediksi jika objek baru yang mereka temukan adalah kursi. Anda pergi ke Ikea dan mendapatkan sampel kursi, dan mulai menggambarkannya dengan menggunakan dua variabel: itu adalah objek dengan 4 kaki di mana Anda bisa duduk. Nah, itu mungkin juga menggambarkan bangku atau tempat tidur atau banyak hal lainnya. Model Anda kurang cocok, sama seperti jika Anda ingin mencoba dan memodelkan distribusi yang kompleks dengan variabel yang terlalu sedikit - banyak hal yang bukan kursi akan diidentifikasi sebagai kursi. Jadi, mari kita tambahkan jumlah variabel, tambahkan bahwa objek harus memiliki back, misalnya. Sekarang Anda memiliki model yang cukup dapat diterima yang menggambarkan set kursi Anda, tetapi cukup umum untuk memungkinkan objek baru diidentifikasi sebagai satu. Model Anda menjelaskan data, dan dapat membuat prediksi. Namun, katakan Anda kebetulan punya satu set di mana semua kursi berwarna hitam atau putih, dan terbuat dari kayu. Anda memutuskan untuk memasukkan variabel-variabel itu dalam model Anda, dan tiba-tiba itu tidak akan mengidentifikasi kursi kuning plastik sebagai kursi. Jadi, Anda telah melengkapi model Anda, Anda telah memasukkan fitur-fitur dataset Anda seolah-olah mereka adalah fitur kursi secara umum, (jika Anda mau, Anda telah mengidentifikasi "noise" sebagai "signal", dengan menafsirkan variasi acak dari sampel Anda sebagai fitur dari seluruh "kursi dunia nyata"). Jadi, Anda menambah sampel dan berharap untuk memasukkan beberapa bahan dan warna baru, atau mengurangi jumlah variabel dalam model Anda. t mengidentifikasi kursi kuning plastik sebagai kursi. Jadi, Anda telah melengkapi model Anda, Anda telah memasukkan fitur-fitur dataset Anda seolah-olah mereka adalah fitur kursi secara umum, (jika Anda mau, Anda telah mengidentifikasi "noise" sebagai "signal", dengan menafsirkan variasi acak dari sampel Anda sebagai fitur dari seluruh "kursi dunia nyata"). Jadi, Anda menambah sampel dan berharap untuk memasukkan beberapa bahan dan warna baru, atau mengurangi jumlah variabel dalam model Anda. t mengidentifikasi kursi kuning plastik sebagai kursi. Jadi, Anda telah melengkapi model Anda, Anda telah memasukkan fitur-fitur dataset Anda seolah-olah mereka adalah fitur kursi secara umum, (jika Anda mau, Anda telah mengidentifikasi "noise" sebagai "signal", dengan menafsirkan variasi acak dari sampel Anda sebagai fitur dari seluruh "kursi dunia nyata"). Jadi, Anda menambah sampel dan berharap untuk memasukkan beberapa bahan dan warna baru, atau mengurangi jumlah variabel dalam model Anda.
Ini mungkin analogi sederhana dan gangguan di bawah pengawasan lebih lanjut, tapi saya pikir ini berfungsi sebagai konseptualisasi umum ... Beritahu saya jika ada bagian yang perlu diklarifikasi.
Dalam pemodelan prediktif, idenya adalah menggunakan data yang ada untuk menemukan tren yang ada dan yang dapat digeneralisasikan ke data masa depan. Dengan memasukkan variabel dalam model Anda yang memiliki pengaruh kecil dan tidak signifikan, Anda mengabaikan ide ini. Apa yang Anda lakukan adalah mempertimbangkan tren spesifik dalam sampel spesifik Anda yang hanya ada karena kebisingan acak dan bukan tren yang mendasarinya. Dengan kata lain, model dengan variabel terlalu banyak cocok dengan noise daripada menemukan sinyal.
Inilah ilustrasi berlebihan tentang apa yang saya bicarakan. Di sini titik-titik adalah data yang diamati dan garis adalah model kami. Lihatlah itu sangat cocok - model yang hebat! Tapi apakah kita benar-benar menemukan tren atau kita hanya cocok dengan kebisingan? Mungkin yang terakhir.
Suatu bentuk overfitting cukup umum dalam olahraga, yaitu untuk mengidentifikasi pola untuk menjelaskan hasil masa lalu oleh faktor-faktor yang tidak memiliki atau paling tidak memiliki kekuatan samar untuk memprediksi hasil di masa depan. Fitur umum dari "pola" ini adalah bahwa mereka sering didasarkan pada sangat sedikit kasus sehingga kesempatan murni mungkin adalah penjelasan yang paling masuk akal untuk pola tersebut.
Contohnya termasuk hal-hal seperti ("kutipan" dibuat oleh saya, tetapi sering terlihat serupa)
Tim A telah memenangkan semua pertandingan X sejak pelatih mulai mengenakan jaket merah magisnya.
Serupa:
Kami tidak akan mencukur diri kami sendiri selama playoff, karena itu telah membantu kami memenangkan X pertandingan terakhir.
Kurang percaya takhayul, tetapi juga bentuk overfitting:
Borussia Dortmund tidak pernah kalah dalam pertandingan kandang Liga Champions dari lawan Spanyol ketika mereka telah kehilangan pertandingan tandang Bundesliga sebelumnya dengan lebih dari dua gol, setelah mencetak setidaknya satu gol sendiri.
Serupa:
Roger Federer telah memenangkan semua penampilannya di Piala Davis untuk lawan-lawan Eropa ketika ia setidaknya mencapai semi-final di Australia Terbuka tahun itu.
Dua yang pertama adalah omong kosong yang cukup jelas (setidaknya bagi saya). Dua contoh terakhir mungkin benar berlaku dalam sampel (yaitu, di masa lalu), tapi saya akan sangat senang bertaruh melawan lawan yang akan membiarkan "informasi" ini secara substansial mempengaruhi peluangnya untuk Dortmund mengalahkan Madrid jika mereka kalah 4: 1 di Schalke pada hari Sabtu sebelumnya atau Federer mengalahkan Djokovic, bahkan jika ia memenangkan Australia Terbuka tahun itu.
Berikut adalah contoh "dunia nyata" bukan dalam arti bahwa seseorang kebetulan menemukannya dalam penelitian, tetapi dalam arti bahwa ia menggunakan konsep sehari-hari tanpa banyak istilah statistik spesifik. Mungkin cara mengatakan ini akan lebih bermanfaat bagi beberapa orang yang pelatihannya di bidang lain.
Bayangkan Anda memiliki database dengan data tentang pasien dengan penyakit langka. Anda adalah seorang mahasiswa pascasarjana kedokteran dan ingin melihat apakah Anda dapat mengenali faktor risiko untuk penyakit ini. Ada 8 kasus penyakit di rumah sakit ini, dan Anda telah mencatat 100 informasi acak tentang mereka: usia, ras, urutan kelahiran, apakah mereka menderita campak sebagai anak, apa pun. Anda juga telah mencatat data untuk 8 pasien tanpa penyakit ini.
Anda memutuskan untuk menggunakan heuristik berikut untuk faktor-faktor risiko: jika suatu faktor mengambil nilai tertentu pada lebih dari satu pasien Anda yang sakit, tetapi pada 0 kontrol Anda, Anda akan menganggapnya sebagai faktor risiko. (Dalam kehidupan nyata, Anda akan menggunakan metode yang lebih baik, tetapi saya ingin membuatnya tetap sederhana). Anda mengetahui bahwa 6 pasien Anda adalah vegetarian (tetapi tidak ada kontrol yang vegetarian), 3 memiliki leluhur Swedia, dan dua dari mereka memiliki gangguan bicara gagap. Dari 97 faktor lainnya, tidak ada yang terjadi pada lebih dari satu pasien, tetapi tidak ada di antara kontrol.
Bertahun-tahun kemudian, orang lain tertarik dengan penyakit anak yatim ini dan mereplikasi penelitian Anda. Karena dia bekerja di rumah sakit yang lebih besar, yang memiliki kerjasama berbagi data dengan rumah sakit lain, dia dapat menggunakan data sekitar 106 kasus, berbeda dengan 8 kasus Anda. Dan dia menemukan bahwa prevalensi penderita gagap adalah sama pada kelompok pasien dan kelompok kontrol; gagap bukan merupakan faktor risiko.
Apa yang terjadi di sini adalah bahwa kelompok kecil Anda memiliki 25% penderita gagap secara acak. Heuristik Anda tidak memiliki cara untuk mengetahui apakah ini relevan secara medis atau tidak. Anda memberikan kriteria untuk memutuskan kapan Anda menganggap suatu pola dalam data "cukup" untuk dimasukkan dalam model, dan menurut kriteria ini, kegagapan itu cukup menarik.
Model Anda telah dilengkapi secara berlebihan, karena keliru memasukkan parameter yang tidak benar-benar relevan di dunia nyata. Ini cocok dengan sampel Anda - 8 pasien + 8 kontrol - sangat baik, tetapi tidak cocok dengan data dunia nyata. Ketika sebuah model menggambarkan sampel Anda lebih baik daripada menggambarkan realitas, itu disebut overfitted.
Jika Anda memilih ambang 3 dari 8 pasien yang memiliki fitur, itu tidak akan terjadi - tetapi Anda memiliki peluang lebih tinggi untuk melewatkan sesuatu yang benar-benar menarik. Terutama di bidang kedokteran, di mana banyak penyakit hanya terjadi di sebagian kecil orang yang menunjukkan faktor risiko, itu merupakan trade-off yang sulit dilakukan. Dan ada metode untuk menghindarinya (pada dasarnya, bandingkan dengan sampel kedua dan lihat apakah kekuatan yang menjelaskan tetap sama atau jatuh), tetapi ini adalah topik untuk pertanyaan lain.
Ini adalah contoh nyata dari overfitting yang saya bantu lakukan dan kemudian mencoba (gagal) untuk menghindarinya:
Saya memiliki beberapa ribu independen, deret waktu bivariat, masing-masing dengan tidak lebih dari 50 titik data, dan proyek pemodelan melibatkan pemasangan vektor autoregresi (VAR) untuk masing-masing. Tidak ada upaya yang dilakukan untuk mengatur seluruh pengamatan, memperkirakan komponen varian, atau semacamnya. Poin waktu diukur selama satu tahun, sehingga data tunduk pada semua jenis efek musiman dan siklus yang hanya muncul sekali dalam setiap rangkaian waktu.
Satu subset dari data menunjukkan tingkat kausalitas Granger yang sangat tinggi dibandingkan dengan data lainnya. Pemeriksaan spot mengungkapkan bahwa lonjakan positif terjadi satu atau dua jeda terpisah dalam subset ini, tetapi jelas dari konteks bahwa kedua lonjakan disebabkan secara langsung oleh sumber eksternal dan bahwa satu lonjakan tidak menyebabkan yang lain. Perkiraan out-of-sample menggunakan model ini mungkin akan sangat salah, karena model yang dilengkapi: daripada "menghaluskan" paku dengan rata-rata ke dalam sisa data, ada beberapa pengamatan yang cukup bahwa paku sebenarnya mengemudi estimasi.
Secara keseluruhan, saya tidak berpikir proyek berjalan buruk tetapi saya tidak berpikir itu menghasilkan hasil yang sedekat mungkin. Bagian dari alasan untuk ini adalah bahwa prosedur banyak-independen-VAR, bahkan dengan hanya satu atau dua kelambatan, mengalami kesulitan untuk membedakan antara data dan kebisingan, dan begitu cocok untuk yang terakhir dengan mengorbankan memberikan wawasan tentang bekas.
Banyak orang cerdas di utas ini --- banyak yang lebih berpengalaman dalam statistik daripada saya. Tetapi saya masih belum melihat contoh yang mudah dipahami oleh orang awam. Contoh Presiden tidak cukup sesuai dengan ketentuan overfitting, karena meskipun secara teknis overfitting di masing-masing klaim liar, biasanya model overfitting overfits - SEMUA - kebisingan yang diberikan, bukan hanya satu elemen saja.
Saya sangat suka bagan dalam penjelasan tradeoff bias-varians di wikipedia: http://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff
(Grafik paling bawah adalah contoh overfitting).
Saya sulit sekali memikirkan contoh dunia nyata yang tidak terdengar seperti omong kosong lengkap. Idenya adalah bahwa data merupakan bagian yang disebabkan oleh variabel yang dapat diukur dan dapat dipahami --- bagian dari derau acak. Mencoba memodelkan derau ini sebagai suatu pola memberi Anda ketidaktepatan.
Contoh klasik adalah pemodelan berbasis SOLELY pada R ^ 2 di MS Excel (Anda berusaha menyesuaikan persamaan / model secara harfiah sedekat mungkin dengan data menggunakan polinomial, tidak peduli seberapa tidak masuk akal).
Katakanlah Anda sedang mencoba memodelkan penjualan es krim sebagai fungsi suhu. Anda memiliki data "dunia nyata". Anda memplot data dan mencoba memaksimalkan R ^ 2. Anda akan menemukan menggunakan data dunia nyata, persamaan kecocokan terdekat tidak linier atau kuadratik (yang masuk akal secara logis). Seperti hampir semua persamaan, istilah polinomial lebih tidak masuk akal yang Anda tambahkan (x ^ 6 -2x ^ 5 + 3x ^ 4 + 30x ^ 3-43.2x ^ 2-29x) - semakin dekat cocok dengan data. Jadi bagaimana hal itu secara wajar menghubungkan suhu dengan penjualan es krim? Bagaimana Anda menjelaskan polinomial yang konyol itu? Sebenarnya, itu bukan model yang sebenarnya. Anda sudah menyesuaikan data.
Anda menerima kebisingan yang tidak terhitung - yang mungkin disebabkan oleh promosi penjualan atau variabel lain atau "kebisingan" seperti kupu-kupu yang mengepakkan sayapnya di kosmos (sesuatu yang tidak pernah dapat diprediksi) --- dan berusaha memodelkannya berdasarkan suhu. Sekarang biasanya jika noise / error Anda tidak rata-rata nol atau auto-berkorelasi, dll, itu berarti ada lebih banyak variabel di luar sana --- dan kemudian pada akhirnya Anda mendapatkan noise yang terdistribusi secara acak, tapi tetap saja, itu yang terbaik yang saya bisa jelaskan itu.
Favorit saya adalah "formula 3964" yang ditemukan sebelum kompetisi sepak bola Piala Dunia 1998:
Brasil memenangkan kejuaraan pada tahun 1970 dan 1994. Jumlahkan 2 angka ini dan Anda akan mendapatkan 3964; Jerman menang pada 1974 dan 1990, bertambah lagi menjadi 3964; hal yang sama dengan kemenangan Argentina pada 1978 dan 1986 (1978 + 1986 = 3964).
Ini adalah fakta yang sangat mengejutkan, tetapi semua orang dapat melihat bahwa tidak disarankan untuk mendasarkan prediksi masa depan pada aturan itu. Dan memang, aturannya menyatakan bahwa pemenang Piala Dunia 1998 seharusnya adalah Inggris sejak 1966 + 1998 = 3964 dan Inggris menang pada 1966. Ini tidak terjadi dan pemenangnya adalah Prancis.
Agak intuitif, tapi mungkin itu akan membantu. Katakanlah Anda ingin belajar bahasa baru. Bagaimana kamu belajar? alih-alih mempelajari aturan dalam suatu kursus, Anda menggunakan contoh. Secara khusus, acara TV. Jadi Anda suka acara kriminal, dan Anda menonton beberapa seri acara polisi. Kemudian, Anda mengambil acara kejahatan lain dan menonton beberapa seri dari yang satu itu. Dengan pertunjukan ketiga yang Anda lihat - Anda tahu hampir segalanya, tidak ada masalah. Anda tidak perlu terjemahan bahasa Inggris.
Tetapi kemudian Anda mencoba bahasa yang baru Anda pelajari di jalan pada kunjungan Anda berikutnya, dan Anda menyadari Anda tidak dapat membicarakan hal lain selain mengatakan "petugas! Orang itu mengambil tas saya dan menembak wanita itu!". Sementara 'kesalahan pelatihan' Anda nol, 'kesalahan pengujian' Anda tinggi, karena 'overfitting' bahasa, mempelajari hanya sebagian kecil kata-kata dan menganggapnya cukup.