Ответ
Метод максимального правдоподобия (MLE) — это принцип оценки параметров статистической модели. Мы находим такие значения параметров, при которых наблюдаемые данные были бы наиболее вероятными (имели бы максимальную «правдоподобность»).
Формально: Для модели с параметрами θ и наблюдаемых данных X, оценка максимального правдоподобия θ̂ находится как:
θ̂ = argmax L(θ|X) = argmax P(X|θ),
где L(θ|X) — функция правдоподобия.
Почему он важен:
- Асимптотические свойства: При больших объемах данных MLE-оценки являются несмещенными, состоятельными и эффективными (имеют наименьшую возможную дисперсию).
- Универсальность: Применим к огромному классу моделей (линейная регрессия, GLM, смеси распределений).
Пример: Оценка параметра λ экспоненциального распределения.
import numpy as np
from scipy.optimize import minimize_scalar
# Генерируем данные из экспоненциального распределения с λ = 0.5 (scale = 2)
true_lambda = 0.5
data = np.random.exponential(scale=1/true_lambda, size=1000)
# Функция правдоподобия для эксп. распределения: L(λ) = Π λ * exp(-λ * x_i)
# Логарифмируем для удобства (логарифм — монотонная функция, максимум тот же).
# Log-L(λ) = n*log(λ) - λ * Σ x_i
n = len(data)
sum_x = np.sum(data)
# Определяем отрицательное лог-правдоподобие (минимизируем его)
def neg_log_likelihood(lambda_param):
if lambda_param <= 0:
return np.inf
return - (n * np.log(lambda_param) - lambda_param * sum_x)
# Находим минимум (максимум правдоподобия)
result = minimize_scalar(neg_log_likelihood, bounds=(0.001, 10), method='bounded')
estimated_lambda = result.x
print(f"Истинный λ: {true_lambda:.3f}")
print(f"Оценка MLE для λ: {estimated_lambda:.3f}") # Будет близко к 0.5
print(f"Аналитическое решение (n / Σ x_i): {n / sum_x:.3f}") # Проверка
Связь с машинным обучением: Минимизация функции потерь (например, MSE в линейной регрессии при нормальности ошибок) эквивалентна максимизации правдоподобия.