Zbiory treningowe i testowe: dzielenie danych

W poprzednim module wspomnieliśmy o podziale zbioru danych na 2 podzbiory:

  • treningowy zbiór – podzbiór do trenowania modelu.
  • test set – podzbiór do testowania wytrenowanego modelu.

Możesz sobie wyobrazić, że podzielisz zbiór danych w ten sposób:

Poziomy pasek podzielony na 2 części: 80% zbioru do trenowania i 20% zbioru testowego.

Rysunek 1. wycinanie pojedynczego zbioru danych w zbiór treningowy i testowy.

Upewnij się, że zestaw testowy spełnia te 2 warunki:

  • Jest wystarczająco duże, aby uzyskać miarodajne wyniki statystyczne.
  • Reprezentuje cały zbiór danych. Innymi słowy, nie wybieraj zbioru testowego o innych cechach niż zestaw do trenowania.

Zakładając, że zbiór testowy spełnia 2 poprzednie warunki, celem jest stworzenie modelu, który dobrze uogólnia w przypadku nowych danych. Nasz zbiór testowy służy jako pośrednik dla nowych danych. Przeanalizujmy tę ilustrację. Zwróć uwagę, że model nauczony dla danych treningowych jest bardzo prosty. Ten model nie sprawdza się idealnie – kilka prognoz jest błędnych. Jednak ten model działa podobnie jak na danych testowych i treningowych. Innymi słowy, ten prosty model nie przewyższa danych treningowych.

2 modele: jeden na danych treningowych, a drugi na danych testowych.  Model jest bardzo prosty, jedyna linia, która dzieli pomarańczowe kropki od niebieskich punktów.  Utrata danych treningowych jest podobna do utraty danych testowych.

Rysunek 2. Weryfikuję wytrenowany model z danymi testowymi.

Nigdy nie trenuj na danych testowych. Jeśli widzisz zaskakująco dobre wyniki we wskaźnikach oceny, może to oznaczać, że przypadkowo trenujesz na zbiorze testowym. Wysoka dokładność może na przykład oznaczać, że dane testowe wyciekły do zbioru treningowego.

Rozważmy na przykład model, który przewiduje, czy e-mail jest spamem, używając jako funkcji wiersza tematu, treści e-maila i adresu e-mail nadawcy. Dane są dzielone między zbiory treningowe i testowe w podziale 80–20. Po wytrenowaniu model osiąga 99% precyzję zarówno w zbiorze treningowym, jak i testowym. Spodziewamy się mniejszej precyzji w zbiorze testowym, więc jeszcze raz przyjrzymy się danym i odkryliśmy, że wiele przykładów w zestawie testowym to duplikaty przykładów z zestawu treningowego (przed podziałem danych nie usunęliśmy z naszej wejściowej bazy danych zduplikowanych wpisów dotyczących tego samego spamu). Nieumyślnie przeszkoliliśmy niektóre nasze dane testowe i w rezultacie nie jesteśmy już w stanie dokładnie mierzyć, w jakim stopniu nasz model uogólnia się na nowe dane.