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

Что такое метод максимального правдоподобия?

1.7 Middle🔥 142 комментариев
#Машинное обучение

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

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

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

Что такое метод максимального правдоподобия?

Метод максимального правдоподобия (Maximum Likelihood Estimation, MLE) — это статистический метод оценки параметров вероятностной модели. Суть: найти такие параметры модели, при которых вероятность наблюдаемых данных максимальна.

Основная идея

Дано:

  • Датасет: X = {x₁, x₂, ..., xₙ}
  • Вероятностная модель: p(x|θ), где θ — параметры

Найти: θ* = argmax L(θ|X)

где L(θ|X) — функция правдоподобия (Likelihood Function)

Функция правдоподобия

import numpy as np
from scipy.stats import norm

# Для выборки независимых событий:
# L(θ|X) = ∏ p(xᵢ|θ) = p(x₁|θ) * p(x₂|θ) * ... * p(xₙ|θ)

# На практике используем логарифм правдоподобия (Log-Likelihood)
# l(θ|X) = log L(θ|X) = Σ log p(xᵢ|θ)

def log_likelihood_normal(params, data):
    mu, sigma = params
    # Для нормального распределения N(μ, σ²)
    return -np.sum(norm.logpdf(data, mu, sigma))

def log_likelihood_bernoulli(p, data):
    # Для распределения Бернулли p(x|p) = p^x * (1-p)^(1-x)
    return -np.sum(data * np.log(p) + (1 - data) * np.log(1 - p))

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

Пример 1: Оценка параметров нормального распределения

from scipy.optimize import minimize

def fit_normal_distribution_mle(data):
    # Начальное приближение
    initial_params = [np.mean(data), np.std(data)]
    
    # Минимизируем отрицательное логарифм правдоподобия
    result = minimize(
        lambda p: log_likelihood_normal(p, data),
        initial_params,
        method='Nelder-Mead'
    )
    
    mu_mle, sigma_mle = result.x
    return mu_mle, sigma_mle

# Использование
data = np.random.normal(loc=100, scale=15, size=1000)
mu_est, sigma_est = fit_normal_distribution_mle(data)
print(f"Оценки: μ={mu_est:.2f}, σ={sigma_est:.2f}")

Пример 2: Логистическая регрессия (на основе MLE)

import numpy as np
from sklearn.linear_model import LogisticRegression

def logistic_regression_mle(X, y):
    # Логистическая регрессия = MLE для распределения Бернулли
    # p(y=1|x) = sigmoid(β₀ + β₁x₁ + ... + βₖxₖ)
    
    model = LogisticRegression(max_iter=1000)
    model.fit(X, y)
    
    # model.coef_ и model.intercept_ — оценки параметров по MLE
    return model

from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100, n_features=5, random_state=42)
model = logistic_regression_mle(X, y)
print(f"Коэффициенты: {model.coef_}")
print(f"Свободный член: {model.intercept_}")

Пример 3: Гауссовская смесь (Gaussian Mixture Model)

from sklearn.mixture import GaussianMixture

def fit_gmm_mle(data, n_components=2):
    # EM-алгоритм — итеративный метод для MLE в GMM
    model = GaussianMixture(n_components=n_components, random_state=42)
    model.fit(data.reshape(-1, 1))
    
    # model.means_, model.covariances_, model.weights_ — оценки по MLE
    return model

data = np.concatenate([
    np.random.normal(loc=0, scale=1, size=500),
    np.random.normal(loc=10, scale=1, size=500)
])

gmm = fit_gmm_mle(data)
print(f"Центры компонент: {gmm.means_.flatten()}")
print(f"Веса компонент: {gmm.weights_}")

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

MLE (Frequentist):

# Максимизируем: L(θ|X) = p(X|θ)
# θ* = argmax p(X|θ)

# Точечная оценка без учёта неопределённости

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

# Используем теорему Байеса: p(θ|X) = p(X|θ) * p(θ) / p(X)
# Учитываем prior distribution p(θ)
# Получаем posterior distribution p(θ|X)

Математические свойства MLE

Условие первого порядка (для нахождения оптимума):

# ∂l(θ)/∂θ = 0  (Score function = 0)

# Например, для нормального распределения:
# ∂l/∂μ = (1/σ²) * Σ(xᵢ - μ) = 0
# → μ_MLE = (1/n) * Σxᵢ  (выборочное среднее)

# ∂l/∂σ = -n/σ + (1/σ³) * Σ(xᵢ - μ)² = 0
# → σ_MLE = sqrt((1/n) * Σ(xᵢ - μ)²)  (выборочное стандартное отклонение)

Когда использовать MLE

  • Оценка параметров распределений
  • Построение параметрических моделей (логистическая регрессия, GLM)
  • Скрытые марковские модели (HMM)
  • EM-алгоритм для неполных данных
  • Максимизация очков в рекомендательных системах

Преимущества и недостатки

Преимущества:

  • Асимптотическая несмещённость оценок
  • Асимптотическая нормальность
  • Инвариантность к преобразованиям параметров
  • Конкретные интерпретации в контексте вероятности

Недостатки:

  • Требует знания вероятностной модели
  • Чувствительность к выбросам
  • Может быть сложным для вычисления