Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
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.
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.
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 adalah 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 telah diacak dengan baik, sehingga hal ini sangat tidak mungkin.
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 pelatihan, 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 di dunia nyata.
Ya. Bahkan set data terbaik hanyalah ringkasan data dunia nyata;
kebenaran dasar
yang mendasarinya cenderung berubah seiring 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.
[null,null,["Terakhir diperbarui pada 2025-01-03 UTC."],[[["\u003cp\u003eMachine learning models should be tested against a separate dataset, called the test set, to ensure accurate predictions on unseen data.\u003c/p\u003e\n"],["\u003cp\u003eIt's recommended to split the dataset into three subsets: training, validation, and test sets, with the validation set used for initial testing during training and the test set used for final evaluation.\u003c/p\u003e\n"],["\u003cp\u003eThe validation and test sets can "wear out" with repeated use, requiring fresh data to maintain reliable evaluation results.\u003c/p\u003e\n"],["\u003cp\u003eA good test set is statistically significant, representative of the dataset and real-world data, and contains no duplicates from the training set.\u003c/p\u003e\n"],["\u003cp\u003eIt's crucial to address discrepancies between the dataset used for training and testing and the real-world data the model will encounter to achieve satisfactory real-world performance.\u003c/p\u003e\n"]]],[],null,["# Datasets: Dividing the original dataset\n\nAll good software engineering projects devote considerable energy to\n*testing* their apps. Similarly, we strongly recommend testing your\nML model to determine the correctness of its predictions.\n\nTraining, validation, and test sets\n-----------------------------------\n\nYou should test a model against a *different* set of examples than those\nused to train the model. As you'll learn\n[a little later](#additional_problems_with_test_sets), testing\non different examples is stronger proof of your model's fitness than testing\non the same set of examples.\nWhere do you get those different examples? Traditionally in machine learning,\nyou get those different examples by splitting the original dataset. You might\nassume, therefore, that you should split the original dataset into two subsets:\n\n- A [**training set**](/machine-learning/glossary#training-set) that the model trains on.\n- A [**test set**](/machine-learning/glossary#test-set) for evaluation of the trained model.\n\n**Figure 8.** Not an optimal split.\n\n### Exercise: Check your intuition\n\nSuppose you train on the training set and evaluate on the test set over multiple rounds. In each round, you use the test set results to guide how to update hyperparameters and the feature set. Can you see anything wrong with this approach? Pick only one answer. \nDoing many rounds of this procedure might cause the model to implicitly fit the peculiarities of the test set. \nYes! The more often you use the same test set, the more likely the model closely fits the test set. Like a teacher \"teaching to the test,\" the model inadvertently fits the test set, which might make it harder for the model to fit real-world data. \nThis approach is fine. After all, you're training on the training set and evaluating on a separate test set. \nActually, there's a subtle issue here. Think about what might gradually go wrong. \nThis approach is computationally inefficient. Don't change hyperparameters or feature sets after each round of testing. \nFrequent testing is expensive but critical. However, frequent testing is far less expensive than additional training. Optimizing hyperparameters and the feature set can dramatically improve model quality, so always budget time and computational resources to work on these.\n\nDividing the dataset into two sets is a decent idea, but\na better approach is to divide the dataset into *three* subsets.\nIn addition to the training set and the test set, the third subset is:\n\n- A [**validation set**](/machine-learning/glossary#validation-set) performs the initial testing on the model as it is being trained.\n\n**Figure 9.** A much better split.\n\nUse the **validation set** to evaluate results from the training set.\nAfter repeated use of the validation set suggests that your model is\nmaking good predictions, use the test set to double-check your model.\n\nThe following figure suggests this workflow.\nIn the figure, \"Tweak model\" means adjusting anything about the model\n---from changing the learning rate, to adding or removing\nfeatures, to designing a completely new model from scratch.\n**Figure 10.** A good workflow for development and testing. **Note:** When you transform a feature in your training set, you must make the *same* transformation in the validation set, test set, and real-world dataset.\n\nThe workflow shown in Figure 10 is optimal, but even with that workflow,\ntest sets and validation sets still \"wear out\" with repeated use.\nThat is, the more you use the same data to make decisions about\nhyperparameter settings or other model improvements, the less confidence\nthat the model will make good predictions on new data.\nFor this reason, it's a good idea to collect more data to \"refresh\" the test\nset and validation set. Starting anew is a great reset.\n\n### Exercise: Check your intuition\n\nYou shuffled all the examples in the dataset and divided the shuffled examples into training, validation, and test sets. However, the loss value on your test set is so staggeringly low that you suspect a mistake. What might have gone wrong? \nMany of the examples in the test set are duplicates of examples in the training set. \nYes. This can be a problem in a dataset with a lot of redundant examples. We strongly recommend deleting duplicate examples from the test set before testing. \nTraining and testing are nondeterministic. Sometimes, by chance, your test loss is incredibly low. Rerun the test to confirm the result. \nAlthough loss does vary a little on each run, it shouldn't vary so much that you think you won the machine learning lottery. \nBy chance, the test set just happened to contain examples that the model performed well on. \nThe examples were well shuffled, so this is extremely unlikely.\n\nAdditional problems with test sets\n----------------------------------\n\nAs the previous question illustrates, duplicate examples can affect model evaluation.\nAfter splitting a dataset into training, validation, and test sets,\ndelete any examples in the validation set or test set that are duplicates of\nexamples in the training set. The only fair test of a model is against\nnew examples, not duplicates.\n\nFor example, consider a model that predicts whether an email is spam, using\nthe subject line, email body, and sender's email address as features.\nSuppose you divide the data into training and test sets, with an 80-20 split.\nAfter training, the model achieves 99% precision on both the training set and\nthe test set. You'd probably expect a lower precision on the test set, so you\ntake another look at the data and discover that many of the examples in the test\nset are duplicates of examples in the training set. The problem is that you\nneglected to scrub duplicate entries for the same spam email from your input\ndatabase before splitting the data. You've inadvertently trained on some of\nyour test data.\n\nIn summary, a good test set or validation set meets all of the\nfollowing criteria:\n\n- Large enough to yield statistically significant testing results.\n- Representative of the dataset as a whole. In other words, don't pick a test set with different characteristics than the training set.\n- Representative of the real-world data that the model will encounter as part of its business purpose.\n- Zero examples duplicated in the training set.\n\n### Exercises: Check your understanding\n\nGiven a single dataset with a fixed number of examples, which of the following statements is true? \nEvery example used in testing the model is one less example used in training the model. \nDividing examples into train/test/validation sets is a zero-sum game. This is the central trade-off. \nThe number of examples in the test set must be greater than the number of examples in the validation set. \nIn theory, the validation set and test test should contain the same number of examples or nearly so. \nThe number of examples in the test set must be greater than the number of examples in the validation set or training set. \nThe number of examples in the training set is usually greater than the number of examples in the validation set or test set; however, there are no percentage requirements for the different sets. \nSuppose your test set contains enough examples to perform a statistically significant test. Furthermore, testing against the test set yields low loss. However, the model performed poorly in the real world. What should you do? \nDetermine how the original dataset differs from real-life data. \nYes. Even the best datasets are only a snapshot of real-life data; the underlying [ground truth](/machine-learning/glossary#ground-truth) tends to change over time. Although your test set matched your training set well enough to suggest good model quality, your dataset probably doesn't adequately match real-world data. You might have to retrain and retest against a new dataset. \nRetest on the same test set. The test results might have been an anomaly. \nAlthough retesting might yield slightly different results, this tactic probably isn't very helpful. \nHow many examples should the test set contain? \nEnough examples to yield a statistically significant test. \nYes. How many examples is that? You'll need to experiment. \nAt least 15% of the original dataset. \n15% may or may not be enough examples.\n| **Key terms:**\n|\n| - [Test set](/machine-learning/glossary#test-set)\n| - [Training set](/machine-learning/glossary#training-set)\n- [Validation set](/machine-learning/glossary#validation_set) \n[Help Center](https://support.google.com/machinelearningeducation)"]]