Сформулируйте задачу Maximum Likelihood Estimation. Запишите формулу
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Сформулируйте задачу Maximum Likelihood Estimation. Запишите формулу
Maximum Likelihood Estimation (MLE) — один из фундаментальных методов статистического вывода и машинного обучения. Это мощный способ оценить параметры модели, найдя значения, которые максимизируют вероятность наблюдения наших данных.
Формальная постановка задачи
Дана:
- Выборка данных: X = {x₁, x₂, ..., xₙ}
- Вероятностная модель: p(x|θ), где θ — неизвестные параметры
Цель: найти θ*, которое максимизирует вероятность наблюдения выборки X при условии модели.
Функция правдоподобия (Likelihood Function)
Для одного наблюдения:
L(θ|x) = p(x|θ)
Для независимых наблюдений (i.i.d.):
L(θ|X) = ∏(i=1 to n) p(xᵢ|θ) = p(x₁|θ) * p(x₂|θ) * ... * p(xₙ|θ)
Логарифм правдоподобия (Log-Likelihood):
ℓ(θ|X) = log L(θ|X) = Σ(i=1 to n) log p(xᵢ|θ)
Используем логарифм потому что:
- Произведение → сумма (проще вычислять)
- Числено стабильнее
- Не меняет позицию максимума
Оптимизационная задача
θ* = argmax_θ L(θ|X) = argmax_θ ℓ(θ|X)
Или эквивалентно (минимизация):
θ* = argmin_θ (-ℓ(θ|X)) = argmin_θ (-Σ log p(xᵢ|θ))
Вторая формулировка часто используется в машинном обучении.
Примеры MLE
1. Нормальное распределение
Дано: X = {x₁, x₂, ..., xₙ} из N(μ, σ²)
Функция плотности:
p(x|μ, σ²) = (1 / √(2πσ²)) * exp(-(x-μ)² / (2σ²))
Log-Likelihood:
ℓ(μ, σ²) = -n/2 * log(2πσ²) - Σ(xᵢ-μ)² / (2σ²)
MLE оценки:
import numpy as np
X = np.array([1, 2, 3, 4, 5])
# MLE для μ
mu_mle = np.mean(X)
print(f"μ MLE = {mu_mle}") # 3.0
# MLE для σ²
sigma2_mle = np.mean((X - mu_mle)**2)
print(f"σ² MLE = {sigma2_mle}") # 2.0
2. Бернуллиева распределение (классификация)
Дано: X = {x₁, x₂, ..., xₙ}, где xᵢ ∈ {0, 1}
Модель:
p(x|p) = p^x * (1-p)^(1-x)
Log-Likelihood:
ℓ(p) = Σ [x_i * log(p) + (1-x_i) * log(1-p)]
MLE оценка:
X = np.array([1, 1, 0, 1, 0, 1, 1])
p_mle = np.mean(X)
print(f"p MLE = {p_mle}") # 5/7 ≈ 0.714
3. Логистическая регрессия (Binary Classification)
Дано: (X, y), где y ∈ {0, 1}
Модель:
p(y=1|x) = σ(w^T x) = 1 / (1 + exp(-w^T x))
Log-Likelihood (Binary Cross-Entropy):
ℓ(w) = Σ [y_i * log(σ(w^T x_i)) + (1-y_i) * log(1-σ(w^T x_i))]
Это то же самое, что минимизация Binary Cross-Entropy Loss!
from sklearn.linear_model import LogisticRegression
# Логистическая регрессия решает MLE
clf = LogisticRegression()
clf.fit(X, y)
Практический пример
import numpy as np
from scipy.stats import norm
np.random.seed(42)
true_mu, true_sigma = 5, 2
X = np.random.normal(true_mu, true_sigma, 1000)
# MLE
mu_hat = np.mean(X)
sigma_hat = np.std(X)
print(f"True μ = {true_mu}, MLE μ = {mu_hat:.4f}")
print(f"True σ = {true_sigma}, MLE σ = {sigma_hat:.4f}")
Связь с машинным обучением
MLE = Loss functions:
- Linear regression → Gaussian MLE (MSE loss)
- Logistic regression → Bernoulli MLE (Binary Cross-Entropy)
- Neural networks → Softmax + Cross-Entropy (Categorical MLE)
# Все эти модели решают MLE под капотом!
# MSE loss — MLE для нормального распределения
# BCELoss — MLE для бернуллиева распределения
# CrossEntropyLoss — MLE для категориального распределения
Оптимизация MLE
Аналитическое решение:
mu_mle = np.mean(X)
sigma2_mle = np.mean((X - mu_mle)**2)
Численная оптимизация для сложных моделей:
from scipy.optimize import minimize
def neg_log_likelihood(theta, X):
mu, sigma = theta
return -np.sum(norm.logpdf(X, mu, sigma))
result = minimize(neg_log_likelihood, x0=[0, 1], args=(X,))
mu_opt, sigma_opt = result.x
Ключевые формулы
Likelihood: L(θ|X) = ∏ p(xᵢ|θ)
Log-Likelihood: ℓ(θ|X) = Σ log p(xᵢ|θ)
MLE задача: θ* = argmax_θ ℓ(θ|X)
Negative LL loss: Loss(θ) = -ℓ(θ|X)
Преимущества
- Теоретически обоснованный метод
- Асимптотически несмещённый и эффективный
- Работает для любого распределения
- Интерпретируемый смысл (максимизируем вероятность данных)
Недостатки
- Требует знания истинного распределения
- Вычислительно сложен для больших датасетов
- Может быть чувствителен к выбросам
Maximum Likelihood Estimation — это мост между теоретической статистикой и практическим машинным обучением. Практически каждая loss function в ML имеет статистическую интерпретацию через MLE!