05 · Bez nadzoru · 5 min czytania · aktualizacja
Estymacja gęstości jądrowej (KDE) — jak z próby odtworzyć rozkład?
W skrócie
KDE sumuje małe krzywe normalne postawione na każdej obserwacji. Dla 342 pingwinów szerokość h = 3,94 mm daje dwa szczyty: 191,5 i 214,3 mm.
Co to jest
Estymacja gęstości jądrowej (kernel density estimation, KDE) to sposób, by z próby narysować gładką krzywą gęstości bez zakładania, że rozkład jest normalny czy jakikolwiek inny. Pomysł jest prosty: na każdej obserwacji stawiamy małą „górkę” — jądro, zwykle krzywą normalną — i wszystkie górki sumujemy. Tam, gdzie obserwacji jest gęsto, górki nakładają się w wysoki grzbiet; tam, gdzie ich brak, krzywa opada.
Wzór: f̂(x) = 1/(n·h) · Σ K((x − xᵢ)/h), gdzie K to jądro (pole pod nim równe 1), a h to szerokość pasma (bandwidth). Metodę zaproponował Murray Rosenblatt w 1956 roku, a Emanuel Parzen w 1962 roku zbadał jej własności, także szacowanie mody; stąd nazwa „okno Parzena”.
KDE to gładszy krewny histogramu. Histogram też liczy, ile obserwacji leży w okolicy, ale wynik zależy od szerokości przedziałów i od tego, gdzie zaczyna się pierwszy. KDE nie ma punktu startowego — każda obserwacja ma własne okno wyśrodkowane na sobie.
Mechanizm — dlaczego tak działa
Dlaczego to w ogóle estymuje gęstość? f̂(x) to w istocie uśredniony udział obserwacji leżących blisko x, podzielony przez szerokość okolicy. Gdy próba rośnie, a h maleje (ale wolniej niż rośnie liczba punktów w oknie), f̂ zbiega do prawdziwej gęstości — to wykazali Rosenblatt i Parzen.
Najważniejszy jest wybór h, a nie kształt jądra. Małe h: krzywa idzie za każdą obserwacją, pełno fałszywych szczytów — duża wariancja. Duże h: wszystko się zlewa, prawdziwe szczyty znikają — duże obciążenie. To ten sam kompromis obciążenie–wariancja co w uczeniu nadzorowanym.
Reguły kciuka zakładają, że dane są w przybliżeniu normalne. Reguła odniesienia do rozkładu normalnego (Scott, 1992; także Silverman, 1986): h = 1,06 · σ · n^(−1/5) — optymalna dla danych normalnych. Reguła Silvermana: h = 0,9 · min(σ, IQR/1,34) · n^(−1/5) — mniejsza, bo przy rozkładzie dwumodalnym lub skośnym ta pierwsza wygładza za mocno. Wykładnik −1/5 mówi, że czterokrotnie większa próba pozwala zmniejszyć h tylko o 24%.
Zamiast reguły można wybrać h z danych: maksymalizować log-wiarygodność obserwacji odłożonych (lub pominiętych po jednej, leave-one-out). To szuka h, które najlepiej przewiduje nowe punkty — niekoniecznie takiego, które daje najczytelniejszy obraz.
Gdzie to się psuje. Brzegi: gdy zmienna nie może być ujemna (czas, dochód), jądro „wylewa” masę za granicę i zaniża gęstość tuż przy niej. Dane zaokrąglone: przy wartościach całkowitych walidacja krzyżowa może premiować zbyt wąskie h. Wymiary: liczba danych potrzebnych do tej samej dokładności rośnie lawinowo z wymiarem (liczby w przykładzie), więc KDE stosuje się głównie w kilku wymiarach.
Na przykładzie
Długość skrzydła (płetwy) 342 pingwinów Palmera: od 172 do 231 mm, średnio 200,9 mm, odchylenie standardowe 14,1. W danych są trzy gatunki: Adeli (średnio 190,0 mm), maskowe (195,8) i białobrewe (217,2). Pierwsze dwa mocno na siebie zachodzą, więc spodziewamy się dwóch garbów.
KDE liczona ręcznie z jądrem normalnym. Reguła Silvermana daje h = 3,94 mm, reguła normalna 4,64 mm. Obie dają dokładnie dwa szczyty: 191,5 i 214,3 mm (przy 4,64 mm — 191,6 i 214,3), z dołkiem przy 205 mm. Za wąskie pasmo h = 1 mm daje 9 szczytów, h = 0,5 mm aż 23 — szum. Za szerokie h = 8 mm zlewa wszystko w jeden szczyt przy 192,4 mm i chowa białobrewe.
Wybór z danych. Log-wiarygodność leave-one-out jest największa przy h = 1,5 mm (średnio −3,935 na pingwina wobec −3,952 przy regule Silvermana). Na losowej połowie danych odłożonej do testu najlepsze jest h = 2,25 mm, a w 200 losowych podziałach mediana najlepszego h to 2,0 mm. Przy h = 2 mm pojawia się trzeci, mały szczyt przy 229 mm. Walidacja wybiera więc pasmo węższe niż reguły. Różnica wiarygodności jest jednak mała (0,017 na pingwina), a pojedynczy rozkład normalny jest wyraźnie gorszy: −4,085 wobec −3,947 dla najlepszej KDE na tej samej połowie testowej. Wymiana wartości całkowitych na rozmyte o ±0,5 mm nie zmienia wyboru (mediana 1,5 mm), więc to nie efekt zaokrągleń.
Histogram dla porównania: przedziały co 5 mm od 170 mm pokazują dwa szczyty, te same przedziały przesunięte o 2,5 mm — trzy, a przedziały co 2 mm — siedem. Punkt startowy zmienia obraz, czego KDE nie robi.
Granice w liczbach. Brzeg: 342 losowania z rozkładu wykładniczego (gęstość 1 w zerze), KDE z regułą Silvermana szacuje gęstość w zerze na 0,35 i umieszcza 7,8% masy poniżej zera. Wymiar: aby w rozkładzie normalnym błąd względny gęstości w środku spadł poniżej 10%, potrzeba 4 obserwacji w 1 wymiarze, 19 w 2, 768 w 5 i około 842 000 w 10.
Jak to policzono
- Dane:
data/raw/penguins.csv, kolumnaflipper_length_mm, 342 niepuste wartości (wszystkie całkowite, 55 różnych). σ = 14,062 (ddof=1), IQR = 23 (numpy.percentile), IQR/1,34 = 17,16. - KDE: f̂(x) = Σ
scipy.stats.norm.pdf((x − xᵢ)/h)/ (n·h) na siatce 160–240 mm co 0,01 mm; szczyty = lokalne maksima na siatce. Zgodność zscipy.stats.gaussian_kde(to samo h): różnica ≤ 2·10⁻¹⁶. - h Silvermana 0,9·14,062·342^(−0,2) = 3,940; h normalne 1,06·14,062·342^(−0,2) = 4,640. Szczyty: 3,94 → 191,5 i 214,3 (minimum 204,8); 4,64 → 191,6 i 214,3; 2 → 190,6, 215,0, 229,0; 1 → 9; 0,5 → 23; 8 → 1 (192,4); 15 → 1 (197,8).
- Średnia log-wiarygodność leave-one-out, siatka h = 0,5–15 co 0,25: maksimum h = 1,5 (−3,9351); h = 3,94: −3,9517; h = 8: −4,0261; h = 15: −4,1775; h = 0,5: −3,9658. Rozmycie ±0,5 mm (
numpy.random.default_rng(s).uniform, s = 0–19): najlepsze h od 0,75 do 1,75, mediana 1,5. - Połowa do testu:
numpy.random.default_rng(0).permutation(342), 171 + 171. Najlepsze h = 2,25 (−3,9468); reguły liczone na połowie treningowej: Silverman 4,43 (−3,9626), normalna 5,22 (−3,9744); rozkład normalny ze średnią i σ połowy treningowej −4,0846. 200 podziałów (default_rng(s), s = 0–199): mediana najlepszego h 2,0, 10. i 90. percentyl 1,2 i 3,5. - Histogram, liczba lokalnych maksimów liczebności: co 5 mm od 170 — 2, od 167,5 — 3; co 2 mm od 170 — 7; co 10 mm — 2.
- Brzeg:
default_rng(0).exponential(1, 342), h Silvermana 0,269, f̂(0) = 0,346, masa poniżej 0 = 7,8%. - Wymiar: standardowy rozkład normalny w d wymiarach, jądro normalne, najlepsze h, wzór dokładny na błąd średniokwadratowy f̂ w zerze; najmniejsze n z błędem względnym (MSE/f²) < 0,1: d = 1: 4; 2: 19; 3: 67; 5: 768; 10: 841 566. To odtwarza tabelę z książki Silvermana (1986).
Dane: Palmer Penguins (pingwiny z Antarktydy)
W praktyce
- Python:
scipy.stats.gaussian_kde(x)(domyślniebw_method="scott", czyli h = σ·n^(−1/5), bez stałej 1,06;"silverman"to w 1D około 1,06·σ·n^(−1/5)),sklearn.neighbors.KernelDensity(jawne h, wiele jąder, szybkie drzewa), w wykresachseaborn.kdeplot. - Zawsze sprawdź, jakie h wybrała biblioteka — w przykładzie trzy „reguły” dają 3,94, 4,38 i 4,64 mm.
- Do wykresu poglądowego reguła kciuka; do oceny gęstości nowych punktów (np. wykrywanie anomalii) wybór h walidacją z log-wiarygodnością.
- Zmienne dodatnie: estymuj gęstość logarytmu i przekształć z powrotem albo użyj korekty brzegowej (odbicie).
- Liczbę szczytów traktuj ostrożnie: zależy od h. Porównaj kilka szerokości, zanim ogłosisz, że rozkład jest dwumodalny.
- Ponad kilka wymiarów: model mieszanin gaussowskich albo redukcja wymiaru przed KDE.
Najczęstsze pytania
- Czym KDE różni się od histogramu?
- Histogram przypisuje obserwację do jednego przedziału o sztywnych granicach, więc wynik zależy od szerokości i początku przedziałów. KDE rozkłada każdą obserwację gładko wokół niej samej. Obie metody mają parametr wygładzania: szerokość przedziału albo h.
- Które jądro wybrać?
- Kształt jądra zmienia wynik mniej niż h. Jądro normalne jest domyślne i gładkie; jądro Epanechnikova jest optymalne w sensie średniego błędu, ale zysk jest niewielki. Najpierw dobierz h.
- Czy KDE nadaje się do grupowania?
- Pośrednio: szczyty gęstości wyznaczają skupiska, a punkty można przypisać do szczytu, do którego prowadzi wspinaczka po gęstości (mean shift). U pingwinów KDE widzi dwa szczyty, choć gatunki są trzy — Adeli i maskowe za bardzo się nakładają.
- Czemu walidacja wybrała węższe h niż reguła kciuka?
- Reguły zakładają rozkład zbliżony do normalnego, a ten jest mieszaniną trzech gatunków. Log-wiarygodność nagradza dokładne przewidywanie gęstości, także drobnych garbów, a nie czytelność obrazu.
Źródła
- Rosenblatt, M. (1956). „Remarks on some nonparametric estimates of a density function”. Annals of Mathematical Statistics, 27(3), 832–837. https://doi.org/10.1214/aoms/1177728190
- Parzen, E. (1962). „On estimation of a probability density function and mode”. Annals of Mathematical Statistics, 33(3), 1065–1076. https://doi.org/10.1214/aoms/1177704472
- Silverman, B. W. (1986). Density Estimation for Statistics and Data Analysis. Chapman and Hall, Londyn.
- Scott, D. W. (1992). Multivariate Density Estimation: Theory, Practice, and Visualization. Wiley, Nowy Jork.
- Gorman, K. B., Williams, T. D., Fraser, W. R. (2014). „Ecological sexual dimorphism and environmental variability within a community of Antarctic penguins (genus Pygoscelis)”. PLoS ONE, 9(3), e90081. https://doi.org/10.1371/journal.pone.0090081
- SciPy:
scipy.stats.gaussian_kde, https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gaussian_kde.html
Czy to było pomocne?
Dzięki! To pomaga nam poprawiać Atlas.