Jak sprawdzić, czy model jest dobry? Sama trafność kłamie
W skrócie
Cztery pytania do każdego modelu: nowe dane, punkt odniesienia, rodzaj pomyłek, wszystkie progi. Na biopsjach „zawsze łagodny” ma 99,1% i nikogo nie wykrywa.
Krótka odpowiedź
Model jest dobry dopiero wtedy, gdy wyraźnie bije punkt odniesienia na danych, których nie widział, i to w tych pomyłkach, które naprawdę Cię kosztują. Sama trafność, czyli odsetek dobrych odpowiedzi, tego nie powie. Gdy jedna klasa jest rzadka, „model”, który zawsze odpowiada to samo, ma prawie 100% trafności i nie wykrywa nikogo: na biopsjach z labu „zawsze łagodny” ma 99,1%, a jedynego złośliwego guza przepuszcza.
Poniżej cztery pytania, które zadasz każdemu modelowi. Każde ma lekcję z labem, w którym sprawdzisz je sam, bez instalowania czegokolwiek. Słowa takie jak trafność, precyzja i czułość wyjaśnia słowniczek.
Pytanie 1. Czy wynik jest z danych, których model nie widział?
Wynik na danych do nauki mówi, jak dobrze model je zapamiętał, a nie jak poradzi sobie jutro. Dlatego część danych chowa się przed modelem i dopiero na niej liczy wynik. W pierwszej lekcji kursu drzewo decyzyjne z trzema pytaniami rozpoznaje 97,5% pingwinów, na których się uczyło, ale tylko 93,2% schowanych. Lekcje: Dane, cechy, etykiety i podział zbioru (lekcja 1.2) i Przeuczenie (lekcja 3.1).
Pytanie 2. Z czym porównujesz wynik?
Punkt odniesienia to wynik odpowiedzi, która niczego się nie uczy, np. „zawsze najczęstsza klasa”. W lekcji Punkt odniesienia (lekcja 1.3) na 171 schowanych biopsjach „zawsze łagodny” ma 62,6%, a reguła z jednym pomiarem 91,2%. Dopiero obok 62,6% widać, że 91,2% to dużo.
Teraz zostaw w teście wszystkie łagodne biopsje i tylko 1 złośliwą, razem 108. „Zawsze łagodny” ma 99,1%, reguła 90,7%. Według trafności wygrywa „model”, który niczego nie wykrywa, choć tylko reguła znajduje złośliwy guz. Sama trafność mówi tu głównie o tym, jak rzadka jest druga klasa.
Pytanie 3. Jakie pomyłki robi model?
Pomyłki mają dwa rodzaje: fałszywy alarm (zdrowy oznaczony jako chory) i przeoczenie (chory oznaczony jako zdrowy). Macierz pomyłek liczy je osobno. Z niej bierze się czułość (jaką część chorych model wykrył) i precyzja (jaka część alarmów była trafna). Lekcja: Ocena klasyfikatora (lekcja 2.2).
Jak bardzo trafność potrafi ukryć problem, widać w lekcji Niezrównoważone klasy (lekcja 2.5). Gdy w danych do nauki zostaje 8 złośliwych biopsji zamiast 159, czułość spada z 83,0% do 61,5%, a trafność tylko z 91,5% do 85,6%. Pomaga zbalansowana trafność (średnia czułości obu klas), a wagi klas podnoszą czułość z powrotem do 80,0%.
Pytanie 4. Czy ocena nie zależy od jednego progu?
Model zwykle daje wynik od 0 do 1, a decyzję podejmuje próg. Inny próg to inne pomyłki. Krzywe ROC i precyzja–czułość (PR) pokazują wszystkie progi naraz. Lekcja: Próg, ROC i PR (lekcja 2.3).
Przy progu 0,3 i 212 złośliwych biopsjach model wykrywa 177, a jego precyzja to 55,1%. Gdy złośliwych zostaje 19, wykrywa 17, ale 144 fałszywe alarmy na łagodnych zostają i precyzja spada do 10,6%. Pole pod krzywą ROC prawie się nie zmienia (z 0,773 na 0,772), za to średnia precyzja (AP) spada z 0,591 do 0,137. Wniosek: gdy szukasz czegoś rzadkiego, patrz na krzywą PR, nie tylko na ROC.
Ściąga na koniec
- Wynik tylko z danych, których model nie widział, najlepiej z walidacji krzyżowej, a nie z jednego podziału.
- Zawsze obok punktu odniesienia na tych samych danych.
- Obok trafności czułość i precyzja klasy, na której Ci zależy, albo zbalansowana trafność.
- Próg wybierany pod koszt pomyłek, a przy rzadkiej klasie krzywa PR.
Więcej o doborze miary przeczytasz w haśle jak wybrać metrykę.
Co dalej
- Start tutaj: mapa na pierwsze 15 minut i darmowe materiały z zewnątrz.
- Kurs ML od zera: moduł o klasyfikacji i ocenie odpowiada na pytanie, kiedy wynik jest dobry i dla kogo.
- Newsletter „ML jak dziecku”: jedno pojęcie w mailu, z linkiem do eksperymentu.
Źródła
- Breast Cancer Wisconsin (Diagnostic), UCI Machine Learning Repository, licencja CC BY 4.0, sprawdzone 25.10.2026: https://archive.ics.uci.edu/dataset/17/breast+cancer+wisconsin+diagnostic
- Palmer Penguins, pakiet palmerpenguins (licencja CC0), sprawdzone 25.10.2026: https://allisonhorst.github.io/palmerpenguins/
- Liczby policzył kod labów z lekcji 0.1, 1.3, 2.3 i 2.5, na tych samych danych i podziałach co na stronie. Kod scikit-learn, który powtarza te eksperymenty, jest na końcu każdej z tych lekcji.