← Назад к вопросам
Что такое метод максимального правдоподобия?
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-алгоритм для неполных данных
- Максимизация очков в рекомендательных системах
Преимущества и недостатки
Преимущества:
- Асимптотическая несмещённость оценок
- Асимптотическая нормальность
- Инвариантность к преобразованиям параметров
- Конкретные интерпретации в контексте вероятности
Недостатки:
- Требует знания вероятностной модели
- Чувствительность к выбросам
- Может быть сложным для вычисления