Set data: Membagi set data asli

Semua project software engineering yang baik mencurahkan banyak energi untuk menguji aplikasi mereka. Demikian pula, sebaiknya uji model ML Anda untuk menentukan kebenaran prediksinya.

Set pelatihan, validasi, dan pengujian

Anda harus menguji model terhadap kumpulan contoh yang berbeda dengan yang digunakan untuk melatih model. Seperti yang akan Anda pelajari nanti, pengujian pada contoh yang berbeda adalah bukti yang lebih kuat tentang kesesuaian model Anda daripada pengujian pada kumpulan contoh yang sama. Dari mana Anda mendapatkan berbagai contoh tersebut? Secara tradisional dalam machine learning, Anda mendapatkan contoh yang berbeda tersebut dengan memisahkan set data asli. Oleh karena itu, Anda mungkin menganggap bahwa Anda harus membagi set data asli menjadi dua subset:

Gambar 8. Garis horizontal dibagi menjadi dua bagian: ~80% di antaranya adalah set pelatihan dan ~20% adalah set pengujian.
Gambar 8. Pemisahan anggaran tidak optimal.

 

Latihan: Periksa intuisi Anda

Misalkan Anda melakukan pelatihan pada set pelatihan dan mengevaluasi pada set pengujian selama beberapa putaran. Pada setiap putaran, Anda menggunakan hasil set pengujian untuk memandu cara memperbarui hyperparameter dan set fitur. Dapatkah Anda melihat ada yang salah dengan pendekatan ini? Pilih hanya satu jawaban.
Melakukan banyak perulangan prosedur ini mungkin menyebabkan model secara implisit menyesuaikan dengan keunikan set pengujian.
Ya. Makin sering Anda menggunakan set pengujian yang sama, makin besar kemungkinan model akan sangat cocok dengan set pengujian. Seperti guru yang "mengajar untuk ujian", model secara tidak sengaja cocok dengan set pengujian, yang mungkin mempersulit model untuk menyesuaikan dengan data dunia nyata.
Pendekatan ini tidak masalah. Lagi pula, Anda melakukan pelatihan pada set pelatihan dan mengevaluasi pada set pengujian terpisah.
Sebenarnya, ada masalah kecil di sini. Pikirkan hal-hal yang mungkin berangsur-angsur salah.
Pendekatan ini tidak efisien secara komputasi. Jangan mengubah hyperparameter atau kumpulan fitur setelah setiap putaran pengujian.
Pengujian yang sering dilakukan memang mahal, tetapi penting. Namun, pengujian yang sering dilakukan jauh lebih murah daripada pelatihan tambahan. Mengoptimalkan hyperparameter dan kumpulan fitur dapat meningkatkan kualitas model secara drastis, jadi selalu alokasikan waktu dan resource komputasi untuk mengerjakannya.

Membagi set data 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 dilatih.
Gambar 9. Garis horizontal dibagi menjadi tiga bagian: 70% di antaranya adalah set pelatihan, 15% set validasi, dan 15% set pengujian
Gambar 9. Pembagian 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 kembali model Anda.

Gambar berikut menunjukkan alur kerja ini. Pada gambar 1, "Menyesuaikan model" berarti menyesuaikan apa pun terkait model —dari mengubah kecepatan pembelajaran, menambahkan, atau menghapus fitur, hingga mendesain model baru mulai dari awal. Di akhir alur kerja ini, Anda akan memilih model yang berperforma terbaik pada set pengujian.

Gambar 10. Diagram alur kerja yang terdiri dari tahap-tahap berikut:
            1. Latih model di set pelatihan.
            2. Mengevaluasi model di set validasi.
            3. Ubah model sesuai dengan hasil di set validasi.
            4. Lakukan iterasi pada tahap 1, 2, dan 3, yang pada akhirnya memilih model dengan performa terbaik pada set validasi.
            5. Konfirmasi hasil pada set pengujian.
Gambar 10. Alur kerja yang baik untuk pengembangan dan pengujian.

Alur kerja yang ditampilkan pada Gambar 10 bersifat optimal, tetapi meskipun dengan alur kerja tersebut, set pengujian dan set validasi masih "aus" dengan penggunaan berulang. Artinya, semakin sering Anda menggunakan data yang sama untuk membuat keputusan tentang setelan hyperparameter atau peningkatan model lainnya, semakin kecil keyakinan bahwa model akan membuat prediksi yang baik pada data baru. Oleh karena itu, sebaiknya kumpulkan lebih banyak data untuk "menyegarkan" set pengujian dan set validasi. Memulai dari awal adalah reset yang bagus.

Latihan: Periksa intuisi Anda

Anda mengacak semua contoh dalam set data dan membagi contoh yang diacak menjadi set pelatihan, validasi, dan pengujian. Namun, nilai loss pada set pengujian Anda sangat rendah sehingga Anda mencurigai adanya kesalahan. Apa yang mungkin salah?
Banyak contoh dalam set pengujian yang merupakan duplikat dari contoh dalam set pelatihan.
Ya. Hal ini dapat menjadi masalah dalam set data dengan banyak contoh yang redundan. Sebaiknya hapus contoh duplikat dari set pengujian sebelum pengujian.
Pelatihan dan pengujian bersifat nondeterministik. Terkadang, secara kebetulan, kerugian pengujian Anda sangat rendah. Jalankan kembali pengujian untuk mengonfirmasi hasilnya.
Meskipun kerugian sedikit bervariasi pada setiap pengoperasian, kerugian tidak boleh bervariasi begitu banyak sehingga Anda merasa telah memenangkan lotre machine learning.
Secara kebetulan, set pengujian kebetulan berisi contoh yang berperforma baik pada model.
Contoh-contoh tersebut telah diacak dengan baik, sehingga hal ini sangat tidak mungkin terjadi.

Masalah tambahan terkait set pengujian

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

Misalnya, pertimbangkan 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 rasio pembagian 80-20. Setelah dilatih, model mencapai presisi 99% pada set pelatihan dan set pengujian. Anda mungkin mengharapkan presisi yang lebih rendah pada set pengujian, jadi Anda perlu melihat kembali data dan menemukan bahwa banyak contoh dalam set pengujian adalah duplikat dari contoh dalam set pelatihan. Masalahnya adalah Anda lupa menghapus entri duplikat untuk email spam yang sama dari database input sebelum memisahkan data. Anda secara tidak sengaja telah melatih beberapa data pengujian.

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

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

Latihan: Periksa pemahaman Anda

Dengan satu set data dengan jumlah contoh tetap, manakah dari pernyataan berikut yang benar?
Setiap contoh yang digunakan dalam menguji model adalah satu contoh yang tidak digunakan dalam melatih model.
Membagi contoh menjadi set pelatihan/pengujian/validasi adalah permainan zero-sum. Ini adalah konsekuensi utamanya.
Jumlah contoh dalam set pengujian harus lebih besar dari jumlah contoh dalam set validasi.
Secara teori, set validasi dan pengujian harus berisi jumlah contoh yang sama atau hampir sama.
Jumlah contoh dalam set pengujian harus lebih besar dari jumlah contoh dalam set validasi atau set pelatihan.
Jumlah contoh dalam set pelatihan biasanya lebih besar daripada jumlah contoh dalam set validasi atau set pengujian; tetapi, tidak ada persyaratan persentase untuk berbagai set.
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, performa model tersebut buruk di dunia nyata. Apa yang perlu Anda lakukan?
Tentukan perbedaan antara set data asli dan data nyata.
Ya. Bahkan set data terbaik hanyalah ringkasan data nyata; kebenaran dasar yang mendasarinya cenderung berubah dari waktu ke waktu. Meskipun set pengujian Anda cocok dengan set pelatihan Anda cukup baik untuk menyarankan kualitas model yang baik, set data Anda mungkin tidak cocok dengan data dunia nyata. Anda mungkin harus melatih ulang dan menguji ulang dengan set data baru.
Uji ulang pada set pengujian yang sama. Hasil pengujian mungkin merupakan anomali.
Meskipun pengujian ulang mungkin menghasilkan hasil yang sedikit berbeda, taktik ini mungkin tidak terlalu membantu.
Berapa banyak contoh yang harus ada dalam set pengujian?
Contoh yang cukup untuk menghasilkan pengujian yang signifikan secara statistik.
Ya. Berapa banyak contohnya? Anda harus bereksperimen.
Setidaknya 15% dari set data asli.
15% mungkin atau mungkin tidak cukup contoh.