Set data: Membagi set data asli

Semua proyek rekayasa perangkat lunak yang baik mengalokasikan energi yang cukup untuk menguji aplikasi mereka. Demikian pula, sebaiknya uji ML untuk menentukan keakuratan prediksinya.

Set pelatihan, validasi, dan pengujian

Anda harus menguji model terhadap kumpulan contoh yang berbeda dari yang yang digunakan untuk melatih model. Yang akan Anda pelajari nanti, menguji berbagai contoh lebih kuat untuk membuktikan kebugaran model Anda dibandingkan pengujian dengan kumpulan contoh yang sama. Di mana Anda mendapatkan contoh-contoh yang berbeda tersebut? Biasanya dalam machine learning, Anda akan mendapatkan berbagai contoh tersebut dengan memisahkan {i>dataset<i} asli. Anda mungkin mengasumsikan, oleh karena itu, Anda harus membagi {i>dataset<i} asli menjadi dua {i>subset<i}:

Gambar 8. Bilah horizontal dibagi menjadi dua bagian: ~80% di antaranya
            adalah set pelatihan dan ~20% adalah set pengujian.
Gambar 8. Bukan pemisahan yang optimal.

 

Latihan: Periksa intuisi Anda

Misalkan Anda melatih set pelatihan dan mengevaluasi set pengujian dalam beberapa putaran. Di setiap babak, Anda menggunakan hasil set pengujian untuk memandu cara memperbarui hyperparameter dan set fitur. Dapatkah Anda menemukan kesalahan dengan pendekatan ini? Pilih satu jawaban saja.
Melakukan banyak putaran prosedur ini dapat menyebabkan model agar secara implisit menyesuaikan dengan keunikan set pengujian.
Ya. Semakin sering Anda menggunakan set pengujian yang sama, semakin besar kemungkinan model tersebut cocok dengan set pengujian. Seperti seorang pengajar "mengajarkan ujian", model secara tidak sengaja sesuai dengan set pengujian, yang mungkin membuat model semakin sulit agar sesuai dengan data yang ada di dunia nyata.
Pendekatan ini sudah cukup. Lagi pula, Anda melatih set pelatihan dan evaluasi pada set pengujian terpisah.
Sebenarnya, ada sedikit masalah di sini. Pikirkan tentang hal-hal yang mungkin secara bertahap menjadi salah.
Pendekatan ini tidak efisien secara komputasi. Jangan ubah hyperparameter atau set fitur setelah setiap putaran pengujian.
Pengujian yang sering memerlukan biaya mahal, tetapi penting. Namun, sering jauh lebih murah daripada pelatihan tambahan. Mengoptimalkan hyperparameter dan set fitur dapat meningkatkan kualitas model, jadi selalu atur waktu dan sumber daya komputasi untuk mengerjakannya.

Membagi {i>dataset<i} menjadi dua set adalah ide yang bagus, tetapi pendekatan yang lebih baik adalah membagi set data menjadi tiga subset. Selain set pelatihan dan set pengujian, subset ketiga adalah:

  • Set validasi melakukan pengujian awal pada model saat sedang dilatih.
Gambar 9. Bilah horizontal dibagi menjadi tiga bagian: 70% di antaranya
            adalah set pelatihan, 15% set validasi, dan 15%
            set pengujian
Gambar 9. Pemisahan yang jauh lebih baik.

Gunakan set validasi untuk mengevaluasi hasil dari set pelatihan. Setelah penggunaan berulang set validasi menunjukkan bahwa model Anda membuat prediksi yang baik, gunakan set pengujian untuk memeriksa ulang model Anda.

Gambar berikut menunjukkan alur kerja ini. Pada gambar, "Tweak model" menyesuaikan apa pun tentang model, —mulai dari mengubah kecepatan pembelajaran, hingga menambah atau menghapus fitur baru, hingga merancang model yang benar-benar baru dari awal. Di akhir alur kerja ini, Anda akan memilih model yang memiliki performa terbaik pada set pengujian.

Gambar 10. Diagram alur kerja yang terdiri dari tahapan berikut:
            Akun Layanan 1. Latih model di set pelatihan.
            2. Evaluasi model di set validasi.
            3. Sesuaikan model sesuai dengan hasil di set validasi.
            4. Melakukan iterasi pada 1, 2, dan 3, yang pada akhirnya memilih model yang
               terbaik di set validasi.
            5. Konfirmasi hasilnya di set pengujian.
Gambar 10. Alur kerja yang baik untuk pengembangan dan pengujian.

Alur kerja yang ditunjukkan di Gambar 10 sudah optimal, tetapi bahkan dengan alur kerja tersebut, set pengujian dan set validasi masih "aus" pada penggunaan berulang. Artinya, semakin banyak Anda menggunakan data yang sama untuk membuat keputusan tentang setelan hyperparameter atau peningkatan model lainnya, tingkat keyakinan yang lebih rendah bahwa model akan membuat prediksi yang baik pada data baru. Oleh karena itu, sebaiknya kumpulkan lebih banyak data untuk "diperbarui" tes dan validasi. Memulai yang baru adalah pengaturan ulang yang bagus.

Latihan: Periksa intuisi Anda

Anda mengocok semua contoh dalam {i>dataset<i} dan membagi contoh yang diacak ke dalam pelatihan, validasi, dan pengujian yang sudah ditetapkan. Namun, nilai kerugian di set pengujian Anda sangat rendah Anda mencurigai adanya kesalahan. Apa yang mungkin salah?
Banyak contoh dalam set pengujian merupakan duplikat contoh dalam set pelatihan.
Ya. Ini bisa menjadi masalah dalam {i>dataset <i}dengan banyak kelebihan contoh. Sebaiknya hapus contoh duplikat dari set pengujian sebelum pengujian.
Pelatihan dan pengujian tidak menentukan. Terkadang, secara kebetulan, kerugian pengujian Anda sangat rendah. Jalankan kembali pengujian untuk mengonfirmasi hasil pengujian tersebut.
Meskipun kerugian sedikit berbeda di setiap sesi, kerugiannya tidak boleh bervariasi. di mana Anda merasa memenangkan lotre {i>machine learning<i}.
Secara kebetulan, set pengujian kebetulan berisi contoh yang model berperforma baik.
Contoh diacak dengan baik, jadi ini sangat tidak mungkin.

Masalah tambahan dengan set pengujian

Seperti yang diilustrasikan dalam pertanyaan sebelumnya, contoh duplikat dapat memengaruhi evaluasi model. Setelah membagi set data menjadi set pelatihan, validasi, dan pengujian, menghapus contoh di set validasi atau set pengujian yang merupakan duplikat dari dalam set pelatihan. Satu-satunya pengujian model yang adil terhadap contoh baru, bukan duplikasi.

Misalnya, perhatikan model yang memprediksi apakah email adalah spam, menggunakan baris subjek, isi email, dan alamat email pengirim sebagai fitur. Misalkan Anda membagi data menjadi set pelatihan dan pengujian, dengan pembagian 80-20. Setelah pelatihan, model mencapai presisi 99% pada set pelatihan dan set pengujian. Anda mungkin mengharapkan presisi yang lebih rendah pada set pengujian, jadi Anda lihat kembali data dan temukan bahwa banyak contoh yang adalah duplikat contoh dalam set pelatihan. Masalahnya adalah Anda lalai menghapus entri duplikat untuk email spam yang sama dari masukan {i>database<i} sebelum memisahkan data. Anda secara tidak sengaja melatih beberapa data uji Anda.

Singkatnya, set pengujian atau set validasi yang baik memenuhi semua kriteria berikut:

  • Cukup besar untuk memberikan hasil pengujian yang signifikan secara statistik.
  • Representatif set data secara keseluruhan. Dengan kata lain, jangan memilih set pengujian dengan karakteristik yang berbeda dari set pelatihan.
  • Representatif data dunia nyata yang akan ditemui model sebagai bagian dari tujuan bisnisnya.
  • Tidak ada contoh yang diduplikasi dalam set pelatihan.

Latihan: Menguji pemahaman Anda

Dengan satu set data dengan jumlah contoh yang tetap, Manakah dari pernyataan berikut yang benar?
Setiap contoh yang digunakan dalam pengujian model mengurangi satu contoh yang digunakan dalam melatih model.
Membagi contoh ke dalam set pelatihan/pengujian/validasi dianggap tidak sia-sia. Ini adalah kompromi utama.
Jumlah contoh dalam set pengujian harus lebih dari jumlah contoh di set validasi.
Secara teori, set validasi dan uji pengujian harus berisi jumlah contoh atau hampir sama.
Jumlah contoh dalam set pengujian harus lebih dari jumlah contoh di set validasi atau set pelatihan.
Jumlah contoh dalam set pelatihan biasanya lebih besar dari jumlah contoh di set validasi atau set pengujian; namun, tidak ada persyaratan persentase untuk kumpulan yang berbeda.
Misalkan set pengujian Anda berisi cukup contoh untuk melakukan pengujian yang signifikan secara statistik. Selain itu, pengujian terhadap set pengujian menghasilkan kerugian yang rendah. Namun, model ini menjalankan buruk di dunia nyata. Apa yang perlu Anda lakukan?
Tentukan perbedaan antara {i>dataset<i} asli dengan data aktual.
Ya. Bahkan {i>dataset<i} terbaik hanyalah cuplikan dari data di kehidupan nyata; dasar dari kebenaran dasar cenderung berubah dari waktu ke waktu. Meskipun set pengujian Anda sesuai dengan set pelatihan cukup baik untuk menyarankan kualitas model yang baik, mungkin tidak cocok dengan data yang ada di dunia nyata. Anda mungkin harus melatih ulang dan menguji ulang terhadap {i>dataset<i} baru.
Uji ulang pada set pengujian yang sama. Hasil pengujiannya mungkin pernah menjadi anomali.
Meskipun pengujian ulang mungkin memberikan hasil yang sedikit berbeda, taktik ini mungkin tidak terlalu membantu.
Berapa banyak contoh yang harus ada dalam set pengujian?
Cukup banyak contoh untuk menghasilkan pengujian yang signifikan secara statistik.
Ya. Berapa banyak contohnya? Anda harus bereksperimen.
Setidaknya 15% dari set data asli.
15% contoh mungkin tidak cukup.