Случайные величины, матожидание и дисперсия

Математическое ожидание — это «среднее в долгую», а дисперсия — мера того, насколько случайная величина разбросана вокруг него.

Случайная величина — число, зависящее от случайного исхода (например, очки на кости). Матожидание E[X] — среднее значение, взвешенное по вероятностям. Дисперсия Var[X] — средний квадрат отклонения от E[X].

Случайная величина

Случайная величина превращает исходы эксперимента в числа. Бросок кости → число очков. Выигрыш в лотерее → сумма. Высота человека → рост. С такими числами можно делать арифметику: усреднять, измерять разброс. Это мостик от «событий» к «числам», на котором стоит вся статистика.

Матожидание: среднее, взвешенное по вероятностям

Матожидание E[X] — это то, к чему сходится среднее значение в длинной серии (вспомните закон больших чисел). Считается как сумма «значение × его вероятность». Для честной кости: (1+2+3+4+5+6)/6 = 3.5. Заметьте: само значение 3.5 на кости невозможно — матожидание не обязано быть достижимым исходом, это «центр тяжести» распределения.

# E[X] для честной кости
values = [1, 2, 3, 4, 5, 6]
probs = [1/6] * 6

E = sum(v * p for v, p in zip(values, probs))
print("E[X] кости =", E)

# Несимметричная случайная величина: лотерея
# выигрыш 100 с вер. 0.01, иначе 0
E_lottery = 100 * 0.01 + 0 * 0.99
print("E[выигрыш] лотереи =", E_lottery)

Вывод:

E[X] кости = 3.5
E[выигрыш] лотереи = 1.0

Дисперсия: насколько широк разброс

Матожидание не всё рассказывает: две величины с одинаковым средним могут вести себя совсем по-разному. Дисперсия измеряет разброс: средний квадрат отклонения от матожидания, Var[X] = E[(X − E[X])²]. Квадрат, чтобы отклонения в обе стороны не сокращались. Корень из дисперсии — стандартное отклонение — возвращает разброс в исходные единицы.

import math

values = [1, 2, 3, 4, 5, 6]
probs = [1/6] * 6

E = sum(v * p for v, p in zip(values, probs))
Var = sum((v - E) ** 2 * p for v, p in zip(values, probs))
std = math.sqrt(Var)

print("E[X]  =", E)
print("Var[X] =", round(Var, 4))
print("Стандартное отклонение =", round(std, 4))

Вывод:

E[X]  = 3.5
Var[X] = 2.9167
Стандартное отклонение = 1.7078

Проверка симуляцией

Бросим кость много раз и убедимся, что среднее и разброс наших бросков сходятся к теоретическим E[X] = 3.5 и Var[X] ≈ 2.92.

import random, statistics
random.seed(10)

rolls = [random.randint(1, 6) for _ in range(200000)]

print("Среднее по броскам   =", round(statistics.mean(rolls), 4))
print("Дисперсия по броскам =", round(statistics.pvariance(rolls), 4))

Вывод:

Среднее по броскам   = 3.4978
Дисперсия по броскам = 2.9124

Эмпирические среднее и дисперсия почти совпали с теоретическими — теория работает.

Зачем это в ML

Матожидание и дисперсия пронизывают всё обучение. Функция потерь — это матожидание ошибки. Дисперсия предсказаний модели — про переобучение (модель с высокой дисперсией слишком чувствительна к данным). Знаменитый компромисс смещение-дисперсия (bias-variance) — про баланс этих двух величин. А нормализация признаков — это приведение к нулевому среднему и единичной дисперсии.

Итог

  • Случайная величина — число, зависящее от случайного исхода.
  • Матожидание E[X] — среднее, взвешенное по вероятностям; «центр» распределения.
  • Дисперсия Var[X] = E[(X − E[X])²] — мера разброса; её корень — стандартное отклонение.
  • В ML потеря — это матожидание ошибки, а дисперсия связана с переобучением.
Проверьте себя
1. Чему равно матожидание числа очков на честной кости?
A3
B3.5
C6
D1
2. Что измеряет дисперсия случайной величины?
AСамое частое значение
BСредний квадрат отклонения значений от матожидания (разброс)
CМаксимальное значение
DСумму всех значений
3. Зачем в дисперсии возводят отклонения в квадрат?
AЧтобы ускорить расчёт
BЧтобы положительные и отрицательные отклонения не сокращали друг друга
CЧтобы получить целое число
DЧтобы дисперсия равнялась среднему
Поддержать проект