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.
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.
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ź: 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.
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.
Pobierz notebook (.ipynb). Otwórz go w Jupyterze albo wgraj do Google Colab; brakujące dane pobierze sam.
Dla praktyka
- W pandas:
df.describe(),df.isna().sum()idf.groupby("species").mean(). W seabornpairplot(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.
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: