Newsletter · kurs „ML w 10 dni” · dzień 2 z 10 · ok. 2 min czytania
Nie sprawdza się ucznia na pytaniach, które zna
W skrócie
Dzień 2 kursu mailowego „ML w 10 dni”: podział danych na trening i test, czyli jak uczciwie sprawdzić model i dlaczego jeden wynik testowy ma w sobie los.
Pojęcie: Trening i test ·
1. Haczyk
Nauczyciel daje na sprawdzianie dokładnie te zadania, które były w pracy domowej. Cała klasa dostaje piątki. Czy to znaczy, że klasa umie matematykę? Wiemy tylko tyle, że zapamiętała pracę domową.
2. Przewidź
Ten sam model, te same dane o biopsjach, 20 losowań podziału. Za każdym razem 30% biopsji, czyli 171 sztuk, trafia do testu. Jak bardzo zmienia się wynik testowy między losowaniami: mniej niż o punkt procentowy, o kilka punktów czy o ponad dwadzieścia?
Zapamiętaj swoją odpowiedź. Rozwiązanie jest niżej.
3. Wyjaśnienie
Przed nauką odkładamy część danych na bok. Model się na nich nie uczy. Na końcu sprawdzamy go właśnie na nich, bo udają nowe przypadki, których model nie widział. To jest zbiór testowy, a reszta to zbiór treningowy.
Rozwiązanie. Wynik testowy waha się od 90,1% do 96,5%, czyli o 6,4 punktu procentowego, choć model i dane są te same. Zmienia się tylko to, które biopsje trafiły do testu. Jeden wynik testowy to więc pomiar z szumem, a nie prawda objawiona.
Gdy chcesz wybierać ustawienia modelu, potrzebujesz jeszcze trzeciej części danych, zbioru walidacyjnego. Test zostaje na sam koniec, jak zaklejona koperta z odpowiedziami.
Sprawdź sam. W lekcji losujesz podział wiele razy i patrzysz, jak skacze wynik.
- Ćwiczenie w kursie: dane, cechy, etykiety i podział zbioru
- Hasło z ilustracją: zbiór treningowy, walidacyjny i testowy
4. Częsty błąd
Zaglądanie do testu wiele razy. Gdy wybierasz model albo jego ustawienia według wyniku na teście, test po cichu staje się częścią treningu i przestaje być uczciwy. Kopertę otwiera się raz.
5. Gdzie ta analogia się psuje
Nauczyciel może ułożyć nowy sprawdzian w każdej chwili. Nowych danych często nie ma: zbiór biopsji liczy 569 przypadków i każda biopsja odłożona do testu to biopsja mniej do nauki. Dlatego podział to zawsze kompromis.
6. Dlaczego to ważne w pracy
W scikit-learn podział robi train_test_split. Parametr random_state sprawia, że ten sam podział da się powtórzyć, a stratify pilnuje proporcji klas. Na Kaggle zbiorem testowym jest ukryta część danych, na której liczy się tabela wyników.
7. Pytanie powtórkowe
Odpowiedź na pytanie z poprzedniego dnia
Regułę programisty wymyśla człowiek, a regułę modelu algorytm wyciąga z przykładów z odpowiedziami. Dlatego model jest dokładnie tak dobry, jak przykłady, na których się uczył.
Nowe pytanie
Dlaczego nie wolno oceniać modelu na tych samych danych, na których się uczył?
Odpowiedź w następnym dniu kursu.