← Назад к вопросам

В чем разница между вероятностью и правдоподобием?

2.0 Middle🔥 101 комментариев
#Статистика и A/B тестирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между вероятностью и правдоподобием

Это два важных статистических концепта, которые часто путают, но они имеют принципиально разные значения.

Вероятность (Probability)

Определение: вероятность будущего события при известных параметрах модели

  • Обозначение: P(данные | параметры)
  • Мы знаем модель (параметры), предсказываем результат
  • Вероятность всегда между 0 и 1
  • Сумма вероятностей всех возможных исходов = 1
import numpy as np
from scipy.stats import binom

# Монета с вероятностью орла p=0.5
# Какова вероятность выпадения 5 орлов из 10 бросаний?
p = 0.5
n = 10
k = 5

prob = binom.pmf(k, n, p)  # P(data | model)
print(f"Вероятность 5 орлов из 10: {prob:.4f}")  # 0.2461

Правдоподобие (Likelihood)

Определение: вероятность наблюдаемых данных при различных значениях параметров

  • Обозначение: L(параметры | данные)
  • Мы знаем данные, ищем параметры модели
  • Правдоподобие может быть > 1
  • Нет ограничения на сумму правдоподобий
  • Это функция от параметров, а не от данных
from scipy.stats import binom

# Мы наблюдали 5 орлов из 10 бросаний
# Какое значение p было вероятнее всего?
observed_heads = 5
n_trials = 10

# Вычислим правдоподобие для разных значений p
ps = np.linspace(0, 1, 100)
likelihoods = [binom.pmf(observed_heads, n_trials, p) for p in ps]

# Максимум правдоподобия при p=0.5
max_likelihood_p = ps[np.argmax(likelihoods)]
print(f"MLE оценка: p={max_likelihood_p:.2f}")  # p=0.50

Наглядное объяснение

ВЕРОЯТНОСТь (Probability):
Знаем: монета честная (p=0.5)
Вопрос: какова вероятность 5 орлов из 10?
Ответ: P(5 орлов | p=0.5) = 0.246

ПРАВДОПОДОБИЕ (Likelihood):
Знаем: выпало 5 орлов из 10
Вопрос: какое значение p было вероятнее всего?
Ответ: L(p | 5 орлов) максимально при p=0.5

Практический пример с данными

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

# Пример 1: ВЕРОЯТНОСТЬ
# Знаем параметры нормального распределения
mu = 100
sigma = 15

# Какова вероятность получить значение 130?
prob_value = norm.pdf(130, mu, sigma)
print(f"Плотность вероятности при x=130: {prob_value:.6f}")

# Пример 2: ПРАВДОПОДОБИЕ (MLE - Maximum Likelihood Estimation)
# У нас есть данные - выборка из распределения
data = np.array([95, 102, 108, 98, 105, 110, 99, 103])

# Оцениваем параметры по методу максимального правдоподобия
mu_mle = np.mean(data)  # 103.0
sigma_mle = np.std(data, ddof=1)  # выборочная дисперсия

print(f"MLE оценки: mu={mu_mle:.1f}, sigma={sigma_mle:.2f}")

Ключевые различия

АспектВероятностьПравдоподобие
ОпределениеP(data | params)L(params | data)
НаправлениеПараметры → ДанныеДанные → Параметры
Диапазон[0, 1][0, ∞)
Сумма= 1Не ограничена
ИспользованиеПредсказаниеОценка параметров
Функция отСлучайной величиныПараметров

Применение в машинном обучении

Вероятность:

from sklearn.linear_model import LogisticRegression

# Модель вычисляет P(y=1 | X)
model = LogisticRegression()
model.fit(X_train, y_train)

# Вероятность класса для новых данных
probs = model.predict_proba(X_test)
print(probs)  # [[0.3, 0.7], ...]  - P(y=0|X), P(y=1|X)

Правдоподобие:

from scipy.stats import norm
from sklearn.linear_model import LinearRegression

# Линейная регрессия ищет параметры, максимизирующие правдоподобие
model = LinearRegression()
model.fit(X_train, y_train)

# model.coef_ и model.intercept_ - это MLE оценки параметров
# которые максимизируют L(params | data)

Байесовский подход

Теорема Байеса связывает оба понятия:

P(params | data) = L(params | data) × P(params) / P(data)
                    Правдоподобие × Априорное / Свидетельство
# Байесовское обновление
# Правдоподобие = как хорошо модель объясняет данные
# Используется для обновления предположений о параметрах

from scipy.stats import beta

# Априорное распределение: Beta(10, 10)
prior_a, prior_b = 10, 10

# Наблюдаем 7 успехов из 10 попыток (данные)
successes, failures = 7, 3

# Апостериорное распределение: Beta(10+7, 10+3)
posterior_a = prior_a + successes
posterior_b = prior_b + failures

print(f"Апостериорное распределение: Beta({posterior_a}, {posterior_b})")

Итоговое резюме

Вероятность - вероятность наблюдаемого при известной модели. Используется для предсказания.

Правдоподобие - мера того, насколько хорошо модель объясняет наблюдаемые данные. Используется для оценки параметров.

В data science вы чаще работаете с правдоподобием, чем с вероятностью - максимизируя его при обучении моделей.

В чем разница между вероятностью и правдоподобием? | PrepBro