01 · Podstawy · 4 min czytania · aktualizacja
Co to jest wartość oczekiwana i wariancja i jak je interpretować?
W skrócie
Wartość oczekiwana to średnia, wokół której skupia się zmienna losowa, a wariancja mierzy, jak szeroko wartości rozrzucają się wokół tej średniej.
Co to jest
Wartość oczekiwana E[X] zmiennej losowej to średnia jej wartości ważona prawdopodobieństwami: dla zmiennej dyskretnej E[X] = Σ x · P(X = x), dla ciągłej — całka z x · f(x). To „środek ciężkości” rozkładu: punkt, w którym rozkład by się zrównoważył, gdyby był wycięty z blachy. Wariancja Var(X) = E[(X − E[X])²] to średni kwadrat odchylenia od tej średniej, a jej pierwiastek — odchylenie standardowe σ — mierzy rozrzut w tych samych jednostkach co dane.
Wartość oczekiwana nie musi być wartością, którą zmienna może przyjąć. Średnia liczba oczek na kostce to 3,5, choć takiej ściany nie ma. To nie „najbardziej prawdopodobny wynik”, tylko długoterminowa średnia przy wielu powtórzeniach — tak mówi prawo wielkich liczb.
W uczeniu maszynowym obie wielkości są wszędzie. Funkcja straty to wartość oczekiwana błędu, którą przybliżamy średnią z próby. Błąd średniokwadratowy rozkłada się na obciążenie i wariancję modelu. Normalizacja w sieciach (np. batch norm) sprowadza aktywacje do średniej 0 i wariancji 1.
Mechanizm — dlaczego tak działa
Najważniejszą własnością wartości oczekiwanej jest liniowość: E[aX + bY] = a · E[X] + b · E[Y], zawsze, nawet gdy X i Y są zależne. To potężne narzędzie: średnią sumy liczy się bez znajomości wspólnego rozkładu. Średnia liczba trafień klasyfikatora w zbiorze to suma prawdopodobieństw trafienia w poszczególnych przypadkach.
Wariancja zachowuje się inaczej. Var(aX + b) = a² · Var(X): przesunięcie nie zmienia rozrzutu, a skalowanie zmienia go z kwadratem. Dla sumy Var(X + Y) = Var(X) + Var(Y) + 2 · Cov(X, Y), więc wariancje dodają się wprost tylko dla zmiennych nieskorelowanych. To dlatego średnia z n niezależnych pomiarów ma wariancję σ² / n i dlatego zespoły różnorodnych modeli są stabilniejsze od pojedynczego.
Dlaczego kwadrat, a nie wartość bezwzględna? Kwadrat jest gładki (da się go różniczkować), wariancje niezależnych zmiennych się sumują, a średnia jest dokładnie tym punktem, który minimalizuje średni kwadrat odchylenia. Ceną jest wrażliwość na wartości odstające: jedno odchylenie dziesięciokrotne waży sto razy więcej niż jednostkowe. Analogicznie średnia jest wrażliwa na skrajności, a mediana — odporna.
Przydatny wzór roboczy: Var(X) = E[X²] − (E[X])². Drugi, głębszy, to prawo całkowitej wariancji: Var(X) = E[Var(X | G)] + Var(E[X | G]). Całkowity rozrzut to średni rozrzut wewnątrz grup plus rozrzut średnich między grupami. Na tym rozkładzie opiera się analiza wariancji, współczynnik R² i kryteria podziału w drzewach regresyjnych: dobry podział to taki, który przenosi jak najwięcej wariancji do części „między grupami”.
Zastrzeżenie: istnieją rozkłady o ciężkich ogonach, dla których wariancja (a nawet średnia) jest nieskończona — np. rozkład Cauchy’ego. Średnia z próby nie stabilizuje się wtedy wraz z jej wzrostem. W praktyce oznacza to, że przy danych o bardzo ciężkich ogonach średnia i odchylenie standardowe mogą wprowadzać w błąd.
Na przykładzie
W zbiorze pingwinów masa ciała 342 ptaków ma średnią 4202 g i wariancję 641 251 g² (liczoną z dzieleniem przez n; odchylenie standardowe 801 g). Średnie gatunków to 3701 g (Adeli), 3733 g (maskowy) i 5076 g (białobrewy), a średnia tych średnich ważona liczebnościami daje dokładnie 4202 g — to liniowość wartości oczekiwanej. Prawo całkowitej wariancji rozkłada 641 251 g² na 211 823 g² wewnątrz gatunków i 429 428 g² między gatunkami. Aż 67% zróżnicowania masy to po prostu różnica między gatunkami.
Przy okazji widać, jak działa skalowanie: ta sama wariancja w kilogramach wynosi 0,641 kg², bo dzielenie przez 1000 zmniejsza wariancję milion razy. Na zbiorze Titanic widać z kolei wrażliwość średniej na skrajności: średnia opłata za bilet to 32,20, mediana tylko 14,45, a 76,3% pasażerów zapłaciło mniej niż średnia. Najwyższa opłata, 512,33, powtarza się trzy razy; bez tych trzech biletów średnia spada do 30,58.
Dane: Titanic Palmer Penguins (pingwiny z Antarktydy)
W praktyce
- W pandas:
s.mean(),s.var(),s.std(); uwaga — pandas domyślnie dzieli przez n − 1 (ddof=1), a NumPy przez n (ddof=0). df.groupby('grupa').agg(['mean', 'var', 'size'])daje składniki prawa całkowitej wariancji.StandardScalerodejmuje średnią i dzieli przez odchylenie standardowe liczone na zbiorze treningowym; nigdy nie dopasowuj go na całych danych przed podziałem.- Przy skośnych danych raportuj obok średniej medianę i kwantyle (
s.describe()), a średnią i wariancję licz ewentualnie po przekształceniu logarytmicznym. - W PyTorch
torch.varitorch.stdmają parametrcorrection(odpowiednikddof); różnica ma znaczenie przy małych partiach.
Najczęstsze pytania
- Dlaczego wariancję z próby dzieli się przez n − 1?
- Bo odchylenia liczy się od średniej z próby, a nie od prawdziwej średniej, a średnia z próby jest zawsze „bliżej” danych niż prawdziwa. Dzielenie przez n systematycznie zaniżałoby wariancję; dzielenie przez n − 1 (poprawka Bessela) usuwa to obciążenie.
- Czym różni się wariancja od odchylenia standardowego?
- Odchylenie standardowe to pierwiastek z wariancji. Wariancja ma jednostki do kwadratu (g², zł²) i dobrze się sumuje w obliczeniach; odchylenie standardowe ma jednostki danych i łatwiej je interpretować.
- Czy wartość oczekiwana to to samo co średnia?
- Wartość oczekiwana jest własnością rozkładu (populacji), a średnia arytmetyczna — własnością konkretnej próby. Średnia z próby jest oszacowaniem wartości oczekiwanej i zbliża się do niej, gdy próba rośnie.
Źródła
- Blitzstein, Hwang „Introduction to Probability”, 2nd ed., CRC Press, 2019, rozdz. 4 (Expectation) i 9 (Conditional expectation).
- Wasserman „All of Statistics”, Springer, 2004, rozdz. 3 (Expectation).
- Goodfellow, Bengio, Courville „Deep Learning”, MIT Press, 2016, rozdz. 3.8 (Expectation, Variance and Covariance).
- Hastie, Tibshirani, Friedman „The Elements of Statistical Learning”, 2nd ed., Springer, 2009, rozdz. 7.3 (The Bias–Variance Decomposition).
- Dokumentacja pandas: DataFrame.var, https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.var.html