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.
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.
Wybierz odpowiedź i pewność.
Odpowiedz, żeby odblokować lab.
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.
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 znaczyz ≥ ln(t / (1 − t)). - Dla
t = 0,5prawa strona to 0, więc granica to prostaw·x + b = 0. Dlat = 0,3jest to−0,85: ten sam kierunek, przesunięty w stronę klasy 0. wwyznacza kierunek granicy.ttylko ją przesuwa.- Pewna błędna odpowiedź kosztuje dużo przy stracie logarytmicznej, bo
−ln prośnie bez ograniczeń, gdypdąż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.
Pobierz notebook (.ipynb). Otwórz go w Jupyterze albo wgraj do Google Colab; brakujące dane pobierze sam.
Dla praktyka
predict()zawsze używa 0,5. Żeby użyć innego progu, weźpredict_probai porównaj samodzielnie, jak wyżej, albo opakuj model wFixedThresholdClassifier(stały próg) lubTunedThresholdClassifierCV(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.
LogisticRegressiondomyś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.
Czy to było pomocne?
Dzięki! To pomaga nam poprawiać Atlas.
Więcej w Atlasie
Hasła encyklopedii o pojęciach z tej lekcji: