Ответ
Maximum A Posteriori (MAP) оценка — это байесовский метод точечной оценки параметров модели. В отличие от метода максимального правдоподобия (MLE), который ищет параметры, максимизирующие вероятность данных P(X|θ), MAP ищет параметры, максимизирующие апостериорное распределение P(θ|X). Согласно теореме Байеса:
P(θ|X) ∝ P(X|θ) * P(θ)
где:
P(θ|X)— апостериорное распределение (наши обновленные знания о параметрах после наблюдения данных).P(X|θ)— функция правдоподобия.P(θ)— априорное распределение (наши знания или предположения о параметрах до наблюдения данных).
Таким образом, MAP оценка вычисляется как:
θ_MAP = argmax_θ [ P(X|θ) * P(θ) ]
Ключевые отличия от MLE:
- Учет априорных знаний: MAP явным образом включает априор
P(θ), что позволяет инкорпорировать экспертные знания или регуляризацию. - Регуляризующий эффект: Выбор априора (например, нормального распределения) часто эквивалентен добавлению штрафа к функции правдоподобия, что предотвращает переобучение. MAP с гауссовским априором соответствует Ridge-регрессии, а с лапласовским — Lasso-регрессии.
Практический пример: Оценка вероятности успеха (биномиальное распределение).
Допустим, мы наблюдаем 7 успехов в 10 испытаниях. MLE даст оценку p = 0.7. Если же у нас есть априорное знание, что вероятность успеха обычно около 0.5, мы можем использовать априор Бета(α, β).
import numpy as np
from scipy.stats import beta
# Данные: 7 успехов, 3 неудачи
successes = 7
trials = 10
# Априорное распределение Beta(α, β). Выбор Beta(2,2) означает слабую уверенность в p=0.5.
alpha_prior, beta_prior = 2, 2
# Апостериорное распределение также будет Beta, но с обновленными параметрами
alpha_post = alpha_prior + successes
beta_post = beta_prior + (trials - successes)
# MAP оценка для Beta распределения: (α - 1) / (α + β - 2)
p_map = (alpha_post - 1) / (alpha_post + beta_post - 2)
p_mle = successes / trials
print(f"MLE оценка: {p_mle:.3f}") # Вывод: 0.700
print(f"MAP оценка (Beta априор): {p_map:.3f}") # Вывод: 0.667
# Визуализация априора и апостериора
import matplotlib.pyplot as plt
x = np.linspace(0, 1, 1000)
plt.plot(x, beta.pdf(x, alpha_prior, beta_prior), 'g--', label='Априор Beta(2,2)')
plt.plot(x, beta.pdf(x, alpha_post, beta_post), 'b-', label=f'Апостериор Beta({alpha_post},{beta_post})')
plt.axvline(p_map, color='r', linestyle=':', label=f'MAP = {p_map:.3f}')
plt.axvline(p_mle, color='k', linestyle=':', label=f'MLE = {p_mle:.3f}')
plt.legend()
plt.title('Байесовское обновление для вероятности успеха')
plt.show()
При большом объеме данных влияние априора ослабевает, и MAP оценка стремится к MLE.