ML Atlas

Kurs uczenia maszynowego od zera · Lekcja 2.1 · 8 z 33 gotowych lekcji · 10 min

Klasyfikacja: rysowanie granicy

W skrócie

Klasyfikator zamienia pomiary w kategorię. Regresja logistyczna daje prawdopodobieństwo i granicę decyzji; lekcja pokazuje je na dwóch gatunkach pingwinów.

Rozgrzewka Dwa pytania z wcześniejszych lekcji. Minuta, a lekcji nie blokuje.
Z lekcji 1.6: Spadek gradientu: nauka małymi krokami Dlaczego w sieciach neuronowych używa się spadku gradientu zamiast dokładnego wzoru?

Pokaż odpowiedź

Poprawna odpowiedź: Bo wzoru na najlepsze parametry zwykle nie ma, a gradient da się policzyć

Spadek gradientu potrzebuje tylko nachylenia straty w bieżącym punkcie, a to jest dostępne nawet przy miliardach parametrów.

Z lekcji 1.5: Regresja liniowa: dopasowanie prostej Dlaczego regresja liniowa podnosi reszty do kwadratu, zamiast je po prostu dodać?

Pokaż odpowiedź

Poprawna odpowiedź: Żeby pudła w obie strony się nie znosiły, a duże kosztowały więcej

Kwadraty są zawsze dodatnie i szybko rosną, więc ocena uwzględnia każde pudło i surowo karze duże.

Biolożka na Antarktydzie mierzy pingwinowi dziób i płetwy. Jaki to gatunek? To inny rodzaj pytania niż „jak bardzo postąpi choroba?”. Odpowiedzią nie jest liczba na skali, tylko wybór jednej z kategorii. Czy proste i kroki w dół z poprzednich lekcji sobie z tym poradzą? Poradzą — z jednym sprytnym dodatkiem.

Przewidź, potem sprawdź Model odróżnia pingwiny Adelie od Chinstrap, a domyślny próg decyzji to 0,5. Który próg z suwaka da najwyższą trafność: 0,1; 0,3; 0,5 czy 0,9?
Jak bardzo jesteś pewny(-a)?

Eksperyment

Ten interaktywny eksperyment działa w przeglądarce z włączonym JavaScriptem. Tekst wokół opisuje, co w nim widać.

Pokaż odpowiedź

Poprawna odpowiedź: 0,3

Przy progu 0,3 trafność wynosi 98,6% (3 pomyłki), przy 0,5 tylko 96,8% (7 pomyłek), przy 0,9 92,2%, a przy 0,1 90,4%. Próg 0,5 nie jest święty: najlepszy próg zależy od proporcji klas i od tego, który błąd kosztuje więcej.

Spróbuj

  • Najpierw przyjrzyj się granicy. Znajdź pingwiny po złej stronie: to przypadki, w których model myli się nawet przy swojej najlepszej prostej.
  • Przesuń suwak progu prawdopodobieństwa w stronę jednego końca i patrz, jak granica przesuwa się ku jednemu z gatunków. Zauważ, że prosta się przesuwa, ale nie obraca.
  • Ustaw próg blisko skrajnej wartości i policz, jak zmieniają się pomyłki: jeden gatunek prawie nigdy nie zostaje przeoczony, kosztem drugiego.
  • Znajdź pingwiny tuż przy granicy i porównaj je z tymi daleko od niej. Które sprawdziłbyś jeszcze ręcznie?

Gdy już sprawdzisz to w labie, zobaczmy, co się tam właściwie działo.

Pomysł w prostych słowach

Przewidywanie kategorii nazywamy klasyfikacją. W tej lekcji korzystamy ze zbioru Palmer Penguins: 344 pingwiny trzech gatunków z wysp w pobliżu stacji Palmer na Antarktydzie, każdy z pomiarami dzioba, płetwy i masy ciała. Żeby wszystko zmieściło się na płaszczyźnie, bierzemy dwa gatunki i dwa pomiary, więc każdy pingwin to punkt: jeden pomiar w poziomie, drugi w pionie, a do tego znany gatunek.

Klasyfikator ma podzielić tę płaszczyznę na dwa obszary: „tu gatunek A, tam gatunek B”. Linia między obszarami to granica decyzji. Regresja logistyczna, wbrew nazwie, jest modelem klasyfikacji, a jej granica to prosta.

Sprytny dodatek polega na tym, że regresja logistyczna nie odpowiada po prostu „A” albo „B”. Odpowiada prawdopodobieństwem: „ten pingwin to gatunek B z prawdopodobieństwem 0,9”. Pomyśl o prognozie pogody. Synoptyk mówi „80% szans na deszcz”, a to ty decydujesz, czy to wystarczy, żeby wziąć parasol. Model gra rolę synoptyka, a próg to twoja reguła parasola.

Dlaczego to działa

Najpierw model liczy wynik dokładnie jak regresja liniowa: ważoną sumę cech plus wyraz wolny, z = w₁x₁ + w₂x₂ + b. Taki wynik może być dowolną liczbą, więc ściska się go do przedziału od 0 do 1 funkcją sigmoidalną:

p = 1 / (1 + e^(−z))

Dlaczego nie wziąć po prostu regresji liniowej i nie czytać jej wyniku jako prawdopodobieństwa? Bo prosta nie zna granic: dla pingwina o skrajnych wymiarach przewidziałaby „prawdopodobieństwo” 1,4 albo −0,3, co nie ma żadnego sensu. Sigmoida rozwiązuje to elegancko — wygina prostą w łagodne S, które nigdy nie wychodzi poza przedział od 0 do 1.

Duży dodatni wynik daje prawdopodobieństwo bliskie 1, duży ujemny — bliskie 0, a wynik równy zeru daje 0,5. Pingwiny daleko od granicy dostają pewne prawdopodobieństwa; pingwiny tuż przy niej — bliskie połowy. Model nie jest pewny i mówi to wprost.

Wagi uczy się spadkiem gradientu, jak w lekcji 4, ale z inną funkcją straty. Zamiast błędu kwadratowego model używa straty logarytmicznej (zwanej też entropią krzyżową). Pewna i trafna odpowiedź prawie nic nie kosztuje, a pewna i błędna kosztuje bardzo dużo. To zmusza model, żeby był pewny tylko wtedy, gdy dane to uzasadniają.

Na końcu próg zamienia prawdopodobieństwo w decyzję: powyżej progu → gatunek B, poniżej → gatunek A. Domyślnie bierze się 0,5, ale nic do tego nie zmusza. Przesunięcie progu przesuwa granicę. Ponieważ prawdopodobieństwo zależy od ważonej sumy, każdemu progowi odpowiada prosta o tym samym kierunku, tylko przesunięta: zdanie modelu o tym, w którą stronę gatunki się różnią, zostaje takie samo, zmienia się tylko twoje wymaganie co do pewności.

Częsty błąd

Dwa błędy zdarzają się często. Pierwszy to traktowanie 0,5 jak prawa natury. Próg to decyzja o kosztach, a nie część modelu; w medycynie można przyjąć wiele fałszywych alarmów, żeby przeoczyć mniej nowotworów. Drugi to czytanie prawdopodobieństwa jako pewności. Prawdopodobieństwo 0,97 znaczy, że model spodziewa się pomyłki w około trzech takich przypadkach na sto — i to tylko wtedy, gdy nowe dane przypominają treningowe. Pingwin z populacji, której model nigdy nie widział, może dostać pewną i błędną odpowiedź.

Granica, która dobrze klasyfikuje większość pingwinów, brzmi świetnie, ale „większość” sporo ukrywa: jakie pomyłki, ile i jak poważne? W następnej lekcji otworzymy pudełko z pomyłkami i nauczymy się je porządnie liczyć.

Quiz

Trzy pytania na sprawdzenie się. Wybierz odpowiedź albo rozwiń odpowiedź pod pytaniem. Z klawiatury: strzałki wybierają, Enter albo spacja zatwierdza.

1. Co zwraca regresja logistyczna, zanim zastosuje się próg?
Pokaż odpowiedź

Poprawna odpowiedź: Liczbę od 0 do 1 — prawdopodobieństwo jednej z klas

Funkcja sigmoidalna zamienia ważoną sumę w prawdopodobieństwo, a próg zamienia je w decyzję.

2. Podnosisz próg z 0,5 do 0,8. Co dzieje się z granicą?
Pokaż odpowiedź

Poprawna odpowiedź: Przesuwa się równolegle, więc do gatunku B trafia mniej pingwinów

Każdemu progowi odpowiada prosta o tym samym kierunku; ostrzejszy próg przesuwa ją tak, że przechodzą tylko pewne przypadki.

3. Dlaczego regresja logistyczna używa straty logarytmicznej zamiast błędu kwadratowego?
Pokaż odpowiedź

Poprawna odpowiedź: Bo mocno karze pewne i błędne odpowiedzi, co pasuje do prawdopodobieństw

Strata logarytmiczna gwałtownie rośnie, gdy prawdopodobieństwo prawdziwej klasy zbliża się do zera, i zniechęca do nieuzasadnionej pewności.

Najważniejsze wnioski

  • Klasyfikacja przewiduje kategorię; granica decyzji oddziela obszary poszczególnych klas.
  • Regresja logistyczna przepuszcza ważoną sumę przez funkcję sigmoidalną i dostaje prawdopodobieństwo.
  • Próg zamienia prawdopodobieństwo w decyzję i jest wyborem co do kosztów, a nie stałym 0,5.
  • Zmiana progu przesuwa granicę regresji logistycznej, ale jej nie obraca.

Głębiej: wzór, kod, praktyka

Matematyka

Model liczy wynik z = w·x + b i zamienia go na prawdopodobieństwo sigmoidą, p = 1 / (1 + e^(−z)). Uczy się przez minimalizację straty logarytmicznej L = −mean( y·ln p + (1 − y)·ln(1 − p) ), której gradient dla każdej wagi to po prostu mean((p − y)·x).

  • Przewidujemy klasę 1, gdy p ≥ t. Ponieważ sigmoida jest rosnąca, to samo znaczy z ≥ ln(t / (1 − t)).
  • Dla t = 0,5 prawa strona to 0, więc granica to prosta w·x + b = 0. Dla t = 0,3 jest to −0,85: ten sam kierunek, przesunięty w stronę klasy 0.
  • w wyznacza kierunek granicy. t tylko ją przesuwa.
  • Pewna błędna odpowiedź kosztuje dużo przy stracie logarytmicznej, bo −ln p rośnie bez ograniczeń, gdy p dąży do 0.
W kodzie (Python)

Model z laba: Adelie kontra Chinstrap według długości i głębokości dzioba, po standaryzacji, oceniany na tych samych pingwinach przy czterech progach:

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

df = pd.read_csv("data/raw/penguins.csv")
df = df[df["species"].isin(["Adelie", "Chinstrap"])].dropna(subset=["bill_length_mm", "bill_depth_mm"])
X, y = df[["bill_length_mm", "bill_depth_mm"]], df["species"] == "Chinstrap"
model = make_pipeline(StandardScaler(), LogisticRegression()).fit(X, y)
p = model.predict_proba(X)[:, 1]  # prawdopodobieństwo Chinstrap
for t in [0.1, 0.3, 0.5, 0.9]:
    wrong = int(((p >= t) != y).sum())  # wołamy Chinstrap, gdy p >= t
    print(f"threshold {t}: {wrong} mistakes, accuracy {1 - wrong / len(y):.1%}")

Wynik

threshold 0.1: 21 mistakes, accuracy 90.4%
threshold 0.3: 3 mistakes, accuracy 98.6%
threshold 0.5: 7 mistakes, accuracy 96.8%
threshold 0.9: 17 mistakes, accuracy 92.2%

Notebook podlinkowany pod wynikiem sam pobierze dane. Najlepszy próg to tu 0,3, a nie domyślne 0,5.

Dla praktyka
  • predict() zawsze używa 0,5. Żeby użyć innego progu, weź predict_proba i porównaj samodzielnie, jak wyżej, albo opakuj model w FixedThresholdClassifier (stały próg) lub TunedThresholdClassifierCV (próg dobrany walidacją krzyżową), oba w scikit-learn 1.5 lub nowszym.
  • Próg wybieraj na danych walidacyjnych, a nie na wierszach, które raportujesz. Wynik 98,6% jest tu zmierzony na tych samych pingwinach, na których dopasowano model, więc jest optymistyczny.
  • Standaryzuj cechy. LogisticRegression domyślnie stosuje regularyzację L2 (C=1.0), a ta kara zależy od skali każdej cechy.
  • Porównuj trafność z punktem odniesienia dla klasy większościowej, a gdy klasy są niezrównoważone albo koszty się różnią, patrz osobno na oba rodzaje pomyłek.
  • Prawdopodobieństwo jest tyle warte, co dane, na których je dopasowano. Dla zwierzęcia z innej populacji pewna odpowiedź nadal może być błędna.

Więcej w Atlasie

Hasła encyklopedii o pojęciach z tej lekcji: