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