Overfitting: Tidak ada peluru perak?

21

Pemahaman saya adalah bahwa bahkan ketika mengikuti prosedur validasi silang dan pemilihan model yang tepat, overfitting akan terjadi jika seseorang mencari model dengan cukup keras , kecuali jika seseorang memaksakan pembatasan pada kompleksitas model, titik. Selain itu, sering kali orang mencoba mempelajari hukuman pada model kompleksitas dari data yang merusak perlindungan yang dapat mereka berikan.

Pertanyaan saya adalah: Seberapa banyak kebenaran dari pernyataan di atas?

Saya sering mendengar praktisi ML berkata: " Di perusahaan / lab saya, kami selalu mencoba setiap model yang tersedia (mis. Dari perpustakaan seperti caret atau scikit-belajar ) untuk melihat mana yang terbaik ". Saya sering berargumen bahwa pendekatan ini dapat dengan mudah dikenakan bahkan jika mereka serius tentang cross-validasi dan tetap bertahan dengan cara apa pun yang mereka inginkan. Terlebih lagi semakin sulit mereka mencari, semakin besar kemungkinan mereka mengenakan pakaian. Dengan kata lain, optimasi berlebihan adalah masalah nyata dan tidak ada heuristik yang dapat membantu Anda melawannya secara sistematis. Apakah saya salah berpikir seperti ini?

Amelio Vazquez-Reina
sumber
Apakah Anda bertanya tentang ML secara khusus atau model multivariat secara umum?
rumtscho
@rumtscho semuanya dalam ML.
Amelio Vazquez-Reina
1
Terima kasih @CagdasOzgenc: "semakin besar ruang pencarian (model dipertimbangkan), semakin buruk hasilnya" . Tidak yakin pada tingkat "ruang pencarian" abstraksi apa yang Anda maksudkan di sini, tetapi dengan "berusaha cukup keras" Tentu saja saya berarti mencari melalui semakin banyak model, dan dengan demikian meningkatkan kompleksitas / ruang pencarian "model-meta" (jika Anda mau) yang kami coba pas.
Amelio Vazquez-Reina

Jawaban:

8

Bukan seluruh jawaban, tetapi satu hal yang diabaikan orang dalam diskusi ini adalah apa yang dimaksud dengan Validasi Lintas (misalnya), mengapa Anda menggunakannya, dan apa yang dicakupnya?

Masalah yang saya lihat dengan mencari terlalu keras adalah bahwa CV yang dilakukan orang sering dalam satu model. Mudah dilakukan dengan menetapkan folds=argumen prosedur pemasangan model. Tetapi ketika Anda pergi ke beberapa model, dan bahkan beberapa prosedur untuk membuat beberapa model, Anda menambahkan satu atau dua lapisan yang belum Anda bungkus dalam CV.

Jadi mereka harus menggunakan CV bersarang. Dan mereka juga harus menggunakan "Target Shuffling" (pengujian resampling / permutasi) melilit seluruh proses mereka untuk melihat seberapa baik prosedur mereka akan lakukan jika Anda memutuskan hubungan antara variabel dependen dan independen - yaitu seberapa jauh Anda lebih baik daripada acak mempertimbangkan seluruh proses Anda?

Wayne
sumber
1
+1. Melakukan pemilihan model dengan lapisan tunggal (atau terlalu sedikit) dari CV yang menjalankan pencarian kotak (pemilihan model) pasti dapat menyebabkan overfitting (untuk siapa pun yang tertarik, saya sarankan misalnya ini dan sumber-sumber di dalamnya). Saya telah membaca tentang "Target Shuffling" (untuk pembaca lain, saya merekomendasikan penjelasan ini ), tetapi tidak pernah menggunakannya sendiri; Saya bertanya-tanya apakah itu juga dapat disalahgunakan, (misalnya melakukan beberapa tes yang akhirnya mengarah ke positif palsu, dan dengan demikian lagi mencari "cukup keras" (?)).
Amelio Vazquez-Reina
7

Dalam pengalaman 4 atau lebih tahun saya, saya telah menemukan bahwa mencoba setiap model yang tersedia di caret (atau scikit-belajar) tidak selalu mengarah pada overfitting. Saya telah menemukan bahwa jika Anda memiliki dataset yang cukup besar (10.000 + baris) dan keseimbangan kelas yang lebih atau kurang (yaitu, tidak ada ketidakseimbangan kelas seperti dalam risiko kredit atau masalah pemasaran), maka overfitting cenderung minimal. Perlu dicatat bahwa pencarian grid saya pada parameter tuning cenderung tidak lebih dari 30 permutasi per model. Pada akhirnya, jika Anda menggunakan 100 atau 1.000 permutasi per model, Anda mungkin akan berpakaian berlebihan.

Cara Anda mengucapkan pertanyaan Anda membuat jawabannya cukup mudah: pada ekstrem, ya, overfitting mungkin jika tidak pasti. Tidak ada peluru perak, dan saya ragu ada yang menyarankan sebaliknya. Namun, masih ada spektrum yang cukup luas di mana tingkat overfitting cukup minimal untuk dapat diterima. Memiliki jumlah data tak terlihat yang sehat di set perangkat validasi Anda pasti membantu. Memiliki beberapa set ketidaksepakatan validasi yang tidak terlihat bahkan lebih baik. Saya cukup beruntung bekerja di bidang di mana saya memiliki sejumlah besar data baru yang datang setiap hari.

Jika saya dalam posisi di mana saya terjebak dengan dataset statis kurang dari 2.000-3.000 pengamatan (mis: data medis yang sulit didapat), saya biasanya hanya menggunakan model linier karena saya sering melihat overfitting dengan gradien meningkatkan dan mendukung mesin vektor pada dataset yang cukup kecil. Di sisi lain, saya sudah bicara dengan seorang Kaggler top (5% teratas) yang mengatakan dia membuat puluhan ribu model untuk setiap kompetisi dan kemudian meng-ensemble mereka, menggunakan beberapa ribu model dalam ansambel terakhirnya. Dia mengatakan ini adalah alasan utama keberhasilannya di papan peringkat akhir.

Ryan Zotti
sumber
1
Ya. Saya telah bekerja dengan data yang memiliki jutaan pengamatan. Tidak peduli apa validasi yang saya coba (kfold, bootstrap dan bahkan ketidaksepakatan sederhana), ada sedikit variasi dalam model. Ketika data Anda meningkat, semakin sedikit perhatian yang Anda butuhkan tentang bagaimana Anda memvalidasi.
Ricardo Cruz
Dengan kata lain, tidak ada model yang memiliki derajat kebebasan yang cukup untuk "menghafal" jutaan pengamatan.
Ricardo Cruz
5

Sangat tergantung pada skala. Saya berharap saya dapat mengandalkan memiliki lebih dari 2.000-3.000 kasus seperti @RyanZotti biasanya; Saya jarang memiliki 1/10 yang banyak. Itu perbedaan besar dalam perspektif antara orang yang mempelajari mesin "big data" dan mereka yang bekerja di bidang-bidang seperti biomedis, yang mungkin menjelaskan beberapa perspektif berbeda yang akan Anda temukan di situs ini.

Saya akan memberikan penjelasan heuristik tentang pendapat saya tentang masalah ini. Masalah mendasar dalam overfitting, seperti yang dijelaskan pada halaman Wikipedia , adalah hubungan antara jumlah kasus dan jumlah parameter yang Anda evaluasi. Jadi mulailah dengan gagasan kasar bahwa jika Anda memiliki model M Anda memilih di antara dan parameter p per model maka Anda mengevaluasi sesuatu pada urutan parameter Mp secara total.

Jika ada bahaya overfitting ada dua cara umum untuk menarik kembali ke model yang lebih umum: mengurangi jumlah parameter atau menghukum mereka dalam beberapa cara.

Dengan set data yang cukup besar Anda mungkin tidak akan pernah mendekati overfitting. Jika Anda memiliki 20.000 casing dan 20 model berbeda dengan 100 parameter per model, maka Anda mungkin tidak akan mengalami kesulitan bahkan tanpa penalti karena Anda masih memiliki 10 case per parameter efektif. Jangan coba strategi pemodelan itu hanya dengan 200 kasus.

Rata-rata model dapat dianggap sebagai bentuk hukuman. Dalam contoh Kaggler yang dikutip oleh @RyanZotti, jumlah kasus mungkin sangat besar dan masing-masing model "beberapa ribu" dalam ansambel akhir secara individual hanya menyumbang sebagian kecil dari model akhir. Setiap overfitting spesifik untuk model kontribusi tertentu tidak akan memiliki pengaruh besar pada hasil akhir, dan jumlah kasus yang sangat besar dalam kompetisi Kaggler semakin mengurangi bahaya overfitting.

Jadi, seperti halnya banyak masalah di sini, satu-satunya jawaban yang masuk akal adalah: "Tergantung." Dalam hal ini, itu tergantung pada hubungan antara jumlah kasus dan jumlah efektif parameter yang diperiksa, bersama dengan berapa banyak hukuman yang diterapkan.

EdM
sumber
2

Saya pikir ini adalah pertanyaan yang sangat bagus. Saya selalu ingin mengamati kurva bentuk "U" dalam percobaan validasi silang dengan data nyata. Namun, pengalaman saya dengan data dunia nyata (~ 5 tahun dalam transaksi kartu kredit dan data pendidikan) tidak memberi tahu saya bahwa pemasangan terlalu mudah dapat terjadi dalam jumlah besar (miliar baris) data dunia nyata .

Saya sering mengamati bahwa Anda dapat mencoba yang paling sesuai dengan set pelatihan, tetapi Anda tidak dapat melakukan terlalu banyak (mis., Kurangi kerugian menjadi 0), karena set pelatihan sangat besar dan berisi banyak informasi dan kebisingan.

Pada saat yang sama, Anda dapat mencoba model yang paling rumit (tanpa regularisasi) pada pengujian data, dan tampaknya baik dan bahkan lebih baik daripada beberapa dengan regularisasi.

Akhirnya, saya pikir pernyataan saya mungkin benar hanya dengan syarat Anda memiliki miliaran poin data dalam pelatihan. Secara intuitif, data jauh lebih kompleks daripada model Anda sehingga Anda tidak akan terlalu bugar. Untuk miliar baris data, bahkan Anda menggunakan model dengan ribuan parameter, tidak masalah. Pada saat yang sama Anda tidak mampu membayar perhitungan untuk membangun model dengan jutaan parameter gratis.

Menurut saya ini juga mengapa jaringan saraf dan pembelajaran yang dalam menjadi populer akhir-akhir ini. Dibandingkan dengan miliaran gambar di Internet, model apa pun yang Anda mampu untuk pelatihan tidak cukup memadai.

Haitao Du
sumber
1

Saya setuju dengan @ ryan-Zotti yang mencari cukup keras tidak selalu menyebabkan overfitting - atau setidaknya tidak untuk jumlah sehingga kita akan menyebutnya overfitting. Biarkan saya mencoba menyatakan pandangan saya tentang ini:

Box pernah berkata:

Ingat bahwa semua model salah; pertanyaan praktisnya adalah seberapa salah mereka harus tidak berguna.

(Menjadi sempurna akan membutuhkan semua data, yang pada gilirannya akan menghilangkan kebutuhan akan model di tempat pertama).

Model yang salah juga terdiri atas kelebihan dan kekurangan . Tetapi kita tidak perlu peduli atau bahkan menyadarinya. Pertanyaannya adalah berapa banyak model yang menyimpang dari kenyataan yang dapat kita a) ukur sama sekali dan b) dapat diterima untuk tidak menyebutnya over- atau underfitting - karena keduanya akan selalu berlaku sedikit untuk semua model yang akan kita bangun. Jika model kami pada akhirnya memenuhi persyaratan tapi misalnya berlebihan / underfit hanya minimal, atau over / underfit pada bagian-bagian (mungkin) data yang tidak dipertimbangkan dalam hal permohonan kami, kami akan menerimanya - hal itu belum tentu tentang mencegah semua lebih - / kekurangan.1

Ini bermuara pada pengaturan yang tepat untuk mengukur / mendeteksi kesalahan model untuk memutuskan apakah ini yang ingin kita miliki. Jadi yang dapat kita lakukan adalah membuat proses sekuat mungkin dengan mencoba mendapatkan data dengan noise minimal dan representatif + sampel yang cukup, untuk memodelkan, mengevaluasi dan memilih sebaik mungkin, dan melakukan semua ini dengan cara yang masuk akal (misalnya beberapa sampel, banyak fitur model kurang kompleks; pilih model paling kompleks dengan kinerja yang dapat diterima, dll).

Karena: pada akhirnya kita akan selalu memiliki kesalahan model / kelebihan / kekurangan - kemampuan untuk mendeteksi / mengukur kesalahan ini dalam fokus minat kita untuk membuat pilihan yang masuk akal yang penting.


1 a) masing-masing model memiliki bias dan masalah varians pada saat yang sama (kita biasanya mencoba untuk menemukan kanan trade-off untuk memenuhi kebutuhan kita). Model yang memenuhi persyaratan kami tentu masih memiliki bias dan varian. b) Pertimbangkan data berisik dan sampel yang tidak representatif sebagai alasan overfitting. Setiap model tentu akan model kebisingan serta model hubungan yang bagian dari informasi yang hilang, jadi sekitar yang asumsi yang salah tentu akan dibuat.

geekoverdosis
sumber