[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-train-test-split::en":3,"gloss-cluster-train-test-split::en":26,"gloss-next-train-test-split::en":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"train-test-split","mlops","Train\u002FTest Split","A train\u002Ftest split divides a dataset so that a model learns from one part and is measured on another it has never seen. Usually there are three parts: a training set the model fits, a validation set used while tuning to compare choices, and a held-out test set touched only at the end. The separation exists because a model's score on data it trained on measures memorisation, not generalisation, and a model complex enough will score well on its training set no matter how badly it performs in the world. Two mistakes account for most misleading results. Leakage: information from the test set reaching the training set, whether directly (duplicate rows, an example present in both) or subtly (a feature computed over the whole dataset before splitting, such as a normalisation statistic or a target-derived aggregate). And a split that ignores the structure of the data. If examples are grouped — several tickets from the same customer, several frames from the same video — splitting at random puts near-identical examples on both sides and inflates the score; the split must be made at the group level. Time-ordered data needs the same care in a different form: train on the past and test on the future, because a random split lets the model learn from events that had not happened yet. The same logic governs LLM evaluation sets, where the analogue of leakage is a benchmark whose contents ended up in pretraining data, and the analogue of a grouped split is an evaluation set built from the same prompt templates as the examples used to develop the prompt.","A train\u002Ftest split measures a model on data it never learned from — and how leakage, grouped rows and time order quietly inflate the score if the split is naive.",null,[11,14,17,20,23],{"slug":12,"name":13},"benchmark-contamination","Benchmark Contamination",{"slug":15,"name":16},"cross-validation","Cross-Validation",{"slug":18,"name":19},"golden-dataset","Golden Dataset",{"slug":21,"name":22},"overfitting","Overfitting",{"slug":24,"name":25},"supervised-learning","Supervised Learning",[27,31,35,38,41,45,48,51,52,55,58,61],{"slug":28,"category":5,"name":29,"updated_at":30},"annotation-guidelines","Annotation Guidelines","2026-08-24T03:30:02+00:00",{"slug":32,"category":5,"name":33,"updated_at":34},"baseline-model","Baseline Model","2026-08-24T02:46:38+00:00",{"slug":36,"category":5,"name":37,"updated_at":34},"batch-inference","Batch Inference",{"slug":39,"category":5,"name":40,"updated_at":34},"canary-prompt","Canary Prompt",{"slug":42,"category":5,"name":43,"updated_at":44},"champion-challenger","Champion-Challenger (A\u002FB Model Testing)","2026-08-24T02:46:37+00:00",{"slug":46,"category":5,"name":47,"updated_at":34},"class-imbalance","Class Imbalance",{"slug":49,"category":5,"name":50,"updated_at":34},"continuous-batching","Continuous Batching",{"slug":15,"category":5,"name":16,"updated_at":34},{"slug":53,"category":5,"name":54,"updated_at":34},"data-labeling","Data Labeling",{"slug":56,"category":5,"name":57,"updated_at":44},"drift-detection","Drift Detection",{"slug":59,"category":5,"name":60,"updated_at":44},"eval-harness","Eval Harness",{"slug":62,"category":5,"name":63,"updated_at":44},"experiment-tracking","Experiment Tracking"]