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:
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.
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.
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.