ML Atlas

Kurs uczenia maszynowego od zera · Lekcja 4.1 · 20 z 33 gotowych lekcji · 12 min

Eksploracja: patrz, zanim modelujesz

W skrócie

Cztery zbiory o tej samej średniej, korelacji 0,82 i prostej wyglądają zupełnie inaczej. Narysuj dane, zanim zaufasz liczbom i zbudujesz model.

Rozgrzewka Dwa pytania z wcześniejszych lekcji. Minuta, a lekcji nie blokuje.
Z lekcji 3.6: Wczesne zatrzymanie Na podstawie czego wczesne zatrzymanie decyduje, kiedy przerwać trening?

Pokaż odpowiedź

Poprawna odpowiedź: Straty walidacyjnej: trening staje, gdy przestaje ona spadać

Strata treningowa spada prawie do końca, nawet gdy sieć uczy się szumu. Strata walidacyjna liczona na danych spoza nauki rośnie, gdy model zaczyna się przeuczać.

Z lekcji 3.5: Strojenie hiperparametrów bez oszukiwania Zwycięzca strojenia ma 93,7% w walidacji krzyżowej. Czego się spodziewać na nowych danych?

Pokaż odpowiedź

Poprawna odpowiedź: Raczej mniej, bo wybór najlepszego z wielu wyników wybiera też szczęście

To klątwa zwycięzcy. W labie zwycięzca 9 ustawień ma na teście 88,3%; w 200 losowaniach jego wynik w walidacji jest wyższy niż na teście za każdym razem.

Moduł 4 zaczyna się przed modelem. Zanim cokolwiek wytrenujesz, popatrz na dane. Eksploracja danych (EDA, od angielskiego exploratory data analysis) to rysowanie danych i liczenie prostych podsumowań, żeby zobaczyć, z czym masz do czynienia: kształt, grupy, punkty daleko od reszty. Średnia czy korelacja to streszczenie, a streszczenie potrafi ukryć to, co najważniejsze. Dziś dwa przykłady: cztery małe zbiory Anscombe'a i pingwiny z lekcji 0.1.

Przewidź, potem sprawdź Cztery zbiory po 11 punktów mają tę samą średnią x i y, tę samą korelację 0,82 i tę samą prostą dopasowania y = 3 + 0,5·x. Jak wyglądają na wykresie?
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ź: Zupełnie inaczej: chmura, łuk, punkt odstający i jeden punkt daleko od reszty

Zupełnie inaczej. Zbiór I to chmura wokół prostej. Zbiór II leży na łuku: parabola wyjaśnia R² = 1,000 zmienności y, prosta tylko 0,666. W zbiorze III dziesięć punktów leży prawie dokładnie na innej, łagodniejszej prostej (nachylenie 0,345), a jeden punkt odstający odciąga ku sobie dopasowaną prostą do nachylenia 0,5. W zbiorze IV dziesięć punktów ma to samo x = 8, a prostą wyznacza jeden punkt w (19; 12,50).

Spróbuj

  • Klikaj zbiory I–IV. Które liczby pod wykresami się zmieniają, a które zostają takie same?
  • W którym zbiorze prostą wyznacza jeden punkt? Co stałoby się z prostą, gdyby go nie było?
  • Przełącz na pingwiny i wybierz długość dzioba × głębokość dzioba. Jaki znak ma korelacja? Potem podziel pingwiny na gatunki.
  • Sprawdź tę samą parę z podziałem na wyspy. Dlaczego obraz jest inny niż przy gatunkach?

Gdy już sprawdzisz to w labie, nazwijmy, co widzisz.

Pomysł w prostych słowach

Statystyki opisowe, czyli średnia, wariancja, korelacja i prosta regresji, streszczają dane w kilku liczbach. Streszczenie zawsze coś gubi. Francis Anscombe w 1973 roku ułożył cztery zbiory po 11 punktów, w których te liczby są prawie identyczne: średnia x to 9, średnia y 7,50, wariancja x 11, wariancja y 4,12–4,13, korelacja 0,816, prosta y = 3,00 + 0,500·x. Na wykresie zbiór I to chmura, II łuk, III prosta z jednym punktem odstającym, IV pionowy słupek i jeden daleki punkt. Regresja liniowa dopasowana do każdego z nich daje tę samą prostą, choć sensownie opisuje tylko pierwszy zbiór.

Pingwiny pokazują to samo na prawdziwych danych. Dla wszystkich 342 pingwinów korelacja długości i głębokości dzioba wynosi −0,235: im dłuższy dziób, tym płytszy. Po podziale na gatunki znak się odwraca: Adelie 0,391, Chinstrap 0,654, Gentoo 0,643. W każdym gatunku dłuższy dziób jest też głębszy. Jedna liczba dla całego zbioru opisuje związek, którego nie ma w żadnej grupie.

Jak to policzono
  • Kwartet: Anscombe (1973), The American Statistician. 4 zbiory po 11 punktów, kopia z repozytorium seaborn-data. Wariancja z dzieleniem przez n − 1.
  • Pingwiny: Palmer Penguins (Gorman, Williams i Fraser, 2014; pakiet palmerpenguins: Horst, Hill i Gorman, 2020), licencja CC0. 342 pingwiny z pomiarami dzioba, 3 gatunki: Adelie 151, Chinstrap 68, Gentoo 123.
  • Korelacja r: współczynnik Pearsona, od −1 do 1; 0 oznacza brak związku liniowego.
  • Proste: metoda najmniejszych kwadratów, osobno dla każdego zbioru i każdej grupy.

Dlaczego to działa

Skąd odwrócony znak u pingwinów? Gentoo mają dzioby długie, ale płytkie: średnio 47,5 mm długości i 15,0 mm głębokości. Adelie mają dzioby krótkie i głębokie: 38,8 i 18,3 mm. Jedna korelacja dla wszystkich porównuje głównie gatunki ze sobą: Gentoo leżą w prawym dolnym rogu wykresu, Adelie w lewym górnym, więc linia przez wszystkie punkty opada. Wewnątrz każdego gatunku związek jest dodatni, bo większy pingwin ma większy dziób w obu kierunkach. To paradoks Simpsona: gdy grupy różnią się średnimi, związek w całości może mieć inny znak niż w każdej z grup.

W kwartecie mechanizm jest jeszcze prostszy. Średnia, wariancja i korelacja to sumy po punktach, a różne układy punktów dają te same sumy, tak jak różne zestawy liczb mają tę samą średnią. Najmocniej ciągną punkty dalekie od reszty. W zbiorze IV punkt na x = 19 sam ustala nachylenie, bo pozostałe 10 punktów ma to samo x = 8 i nie mówi nic o kierunku.

Czy u pingwinów to nie przypadek tej jednej próbki? W kodzie niżej losujemy pingwiny ze zwracaniem 1000 razy: tyle samo pingwinów, część dwa razy, część wcale. W 1000 z 1000 losowań korelacja dla wszystkich jest ujemna, a w każdym gatunku dodatnia.

Częsty błąd

Prawda czy fałsz: „statystyki opisowe wystarczą; jeśli dwa zbiory mają tę samą średnią, wariancję i korelację, to wyglądają podobnie”. Fałsz. W labie cztery zbiory Anscombe'a mają te same liczby do dwóch miejsc po przecinku, a wyglądają zupełnie inaczej. Liczby streszczają: nie pokazują kształtu, grup ani pojedynczych punktów, które ciągną wynik. U pingwinów jedna korelacja −0,235 mówi „dłuższy dziób, płytszy dziób”, a w każdym gatunku jest odwrotnie.

Dla modelu to ma konkretne skutki. Regresja liniowa dopasowana do zbioru II przewiduje prostą tam, gdzie dane leżą na łuku. Model na pingwinach, który nie zna gatunku, nauczy się ujemnego związku, którego nie ma w żadnym gatunku. Dlatego najpierw rysujesz dane, a dopiero potem wybierasz model i cechy.

Quiz

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

1. Co pokazuje kwartet Anscombe'a?
Pokaż odpowiedź

Poprawna odpowiedź: Że te same statystyki opisowe mogą kryć zupełnie różne układy danych

Cztery zbiory mają tę samą średnią, wariancję, korelację 0,816 i prostą y = 3,00 + 0,500·x, a na wykresie to chmura, łuk, punkt odstający i punkt dźwigni. Liczby nie zastąpią rysunku.

2. Dla wszystkich pingwinów korelacja długości i głębokości dzioba to −0,235, a w każdym gatunku jest dodatnia. Dlaczego?
Pokaż odpowiedź

Poprawna odpowiedź: Bo gatunki różnią się średnimi, a jedna liczba porównuje głównie je

Gentoo mają dzioby długie i płytkie, Adelie krótkie i głębokie. Linia przez wszystkie punkty łączy gatunki i opada, a w każdym gatunku związek jest dodatni (0,391, 0,654, 0,643). To paradoks Simpsona.

3. Prawda czy fałsz: „statystyki opisowe wystarczą, rysowanie danych to strata czasu”.
Pokaż odpowiedź

Poprawna odpowiedź: Fałsz, bo te same liczby mogą kryć łuk, grupy albo jeden daleki punkt

W kwartecie te same liczby kryją cztery różne obrazy, a u 342 pingwinów jedna korelacja ma inny znak niż w każdym gatunku. Rysunek pokazuje to od razu.

Najważniejsze wnioski

  • Zanim zbudujesz model, narysuj dane: rozkład każdej cechy, pary cech i grupy.
  • Te same średnie, wariancje i korelacje mogą kryć chmurę, łuk, punkt odstający albo punkt dźwigni.
  • Związek w całych danych może mieć inny znak niż w każdej grupie (paradoks Simpsona); koloruj wykresy według grup.
  • Pojedynczy daleki punkt potrafi sam ustawić prostą: sprawdzaj, co zmieni się bez niego.

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

Matematyka

Korelacja Pearsona: r = Σ(xᵢ − x̄)(yᵢ − ȳ) / √(Σ(xᵢ − x̄)² · Σ(yᵢ − ȳ)²). Prosta najmniejszych kwadratów: b = r · s_y / s_x, a = ȳ − b · x̄. Prosta zależy więc tylko od średnich, odchyleń i korelacji: zbiory, które mają te liczby wspólne, muszą mieć wspólną prostą, jakkolwiek wyglądają.

Paradoks Simpsona w korelacji wynika z rozkładu kowariancji na grupy: cov(x, y) = Σ_g p_g · cov_g(x, y) + Σ_g p_g · (x̄_g − x̄)(ȳ_g − ȳ), gdzie p_g to udział grupy. Pierwszy składnik to związek wewnątrz grup, drugi to związek między średnimi grup. Gdy średnie grup leżą na linii opadającej, drugi składnik jest ujemny i może przeważyć dodatni pierwszy.

W kodzie (Python)

Ten sam rachunek w pandas: liczby kwartetu, korelacja dzioba dla wszystkich pingwinów i w gatunkach oraz 1000 losowań ze zwracaniem, które sprawdzają, czy odwrócony znak to przypadek tej próbki.

import numpy as np
import pandas as pd

q = pd.read_csv("data/raw/anscombe.csv")
for name, d in q.groupby("dataset"):
    slope, intercept = np.polyfit(d.x, d.y, 1)
    print(f"set {name}: mean x {d.x.mean():.2f}, mean y {d.y.mean():.2f}, variance x {d.x.var():.2f}, variance y {d.y.var():.2f}, r {d.x.corr(d.y):.3f}, line y = {intercept:.2f} + {slope:.3f}x")
df = pd.read_csv("data/raw/penguins.csv").dropna(subset=["bill_length_mm", "bill_depth_mm"])
r = lambda d: d.bill_length_mm.corr(d.bill_depth_mm)
print(f"{len(df)} penguins, bill length vs bill depth: all r = {r(df):.3f}; " + ", ".join(f"{s} {r(g):.3f}" for s, g in df.groupby("species")))
rng = np.random.default_rng(0)
same = 0
for b in range(1000):
    s = df.sample(len(df), replace=True, random_state=rng)  # losowanie ze zwracaniem: tyle samo pingwinów, część dwa razy
    same += r(s) < 0 and all(r(g) > 0 for _, g in s.groupby("species"))
print(f"1000 bootstrap resamples: negative over all and positive in every species in {same}")

Wynik

set I: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.13, r 0.816, line y = 3.00 + 0.500x
set II: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.13, r 0.816, line y = 3.00 + 0.500x
set III: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.12, r 0.816, line y = 3.00 + 0.500x
set IV: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.12, r 0.817, line y = 3.00 + 0.500x
342 penguins, bill length vs bill depth: all r = -0.235; Adelie 0.391, Chinstrap 0.654, Gentoo 0.643
1000 bootstrap resamples: negative over all and positive in every species in 1000

Cztery zbiory różnią się dopiero na trzecim miejscu po przecinku. U pingwinów odwrócony znak nie jest przypadkiem tej próbki: utrzymuje się w 1000 z 1000 losowań ze zwracaniem.

Dla praktyka
  • W pandas: df.describe(), df.isna().sum() i df.groupby("species").mean(). W seaborn pairplot(df, hue="species") rysuje wszystkie pary pomiarów w kolorach grup jednym poleceniem.
  • Patrz na rozkład każdej cechy (histogram), na pary cech (wykres rozrzutu) i na braki danych, zanim cokolwiek podzielisz i wytrenujesz.
  • EDA, która wpływa na decyzje (wybór cech, progi, usuwanie wierszy), rób na części treningowej. Patrzenie na test przy takich decyzjach to wyciek (lekcja 4.5).
  • Zapisuj, co zobaczyłeś: grupy, punkty odstające, dziwne kody (np. 0 zamiast braku). To lista rzeczy do sprawdzenia, gdy model zachowa się dziwnie.

Więcej w Atlasie

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