Saya sedang membaca laporan dari solusi memenangkan kompetisi Kaggle ( Klasifikasi Malware ). Laporan ini dapat ditemukan di posting forum ini . Masalahnya adalah masalah klasifikasi (sembilan kelas, metrik adalah kehilangan logaritmik) dengan 10.000 elemen di set kereta, 10.000 elemen di set tes.
Selama kompetisi, model dievaluasi terhadap 30% dari set tes. Elemen penting lainnya adalah bahwa model yang berkinerja sangat baik (mendekati 100% akurasi)
Para penulis menggunakan teknik berikut:
Teknik lain yang penting kita datang adalah Semisupervised Learning. Kami pertama menghasilkan label palsu dari tes set dengan memilih probabilitas max model terbaik kami. Kemudian kita memprediksi tes diatur lagi dalam validasi mode cross dengan baik data kereta api dan data uji. Misalnya, kumpulan data uji dibagi menjadi 4 bagian A, B, C, dan D. Kami menggunakan seluruh data pelatihan, dan data uji A, B, C dengan label pseudo mereka, bersama-sama sebagai rangkaian pelatihan baru dan kami memperkirakan tes set D.
Metode yang sama digunakan untuk memprediksi A, B dan C. Pendekatan ini, ditemukan oleh Xiaozhou, bekerja sangat baik dan mengurangi kerugian validasi silang lokal, kerugian LB publik dan kerugian LB pribadi. Model pembelajaran Semisupervised terbaik dapat mencapai 0,0023 di LB log kerugian pribadi, yang merupakan skor terbaik atas semua solusi kami.
Saya benar-benar tidak melihat bagaimana hal itu dapat meningkatkan hasil. Apakah karena 30% dari set tes "bocor" dan itu adalah cara untuk menggunakan informasi ini?
Atau adakah alasan teoretis yang menjelaskan mengapa ini berhasil?
Itu tidak terlalu berlebihan (tergantung pada definisi). Informasi target set uji dipertahankan. Semi-diawasi memungkinkan untuk menghasilkan set data sintetis tambahan untuk melatih model. Dalam pendekatan yang dijelaskan, data pelatihan asli dicampur tidak tertimbang dengan sintetis dalam rasio 4: 3. Jadi, jika kualitas data sintetik buruk, pendekatannya akan menjadi bencana. Saya kira untuk masalah di mana prediksi tidak pasti, set data sintetis akan memiliki akurasi yang buruk. Jika struktur yang mendasarinya sangat kompleks dan sistem memiliki noise rendah, mungkin membantu untuk menghasilkan data sintetis, saya kira. Saya pikir pembelajaran semi-diawasi cukup besar dalam pembelajaran mendalam (bukan keahlian saya), di mana representasi fitur harus dipelajari juga.
Saya telah mencoba mereproduksi peningkatan akurasi dengan pelatihan semi-supervisi pada beberapa set data dengan rf dan xgboost tanpa hasil positif. [Jangan ragu untuk mengedit kode saya.] Saya melihat peningkatan akurasi yang sebenarnya menggunakan semi-diawasi cukup sederhana dalam laporan kaggle, mungkin acak?
sumber
Dengan definisi ini: "Overfitting terjadi ketika model statistik menggambarkan kesalahan atau noise acak daripada hubungan yang mendasarinya." (Wikipedia), solusinya tidak overfitting.
Tetapi dalam situasi ini:
- Data uji adalah aliran item dan bukan set item tetap.
ATAU
- Proses prediksi tidak boleh mengandung fase pembelajaran (misalnya karena masalah kinerja)
. Solusi yang disebutkan adalah overfitting. Karena akurasi pemodelan lebih dari situasi nyata.
sumber