Представление байесовских результатов

Байесовский анализ данных на Python

Michal Oleszak

Machine Learning Engineer

Честный подход

  • Сообщайте априорное и апостериорное распределения каждого параметра
posterior_draws
array([8.02800413, 8.97359548, 7.57437476, ..., 5.85264609, 7.92875104,
       7.41463758])
  • Постройте графики априорного и апостериорного распределений
sns.kdeplot(prior_draws, shade=True, label="prior")
sns.kdeplot(posterior_draws, shade=True, label="posterior")
Байесовский анализ данных на Python

Честный подход

Два графика плотности, наложенных друг на друга. Оба имеют форму колокола. Априорное распределение центрировано около 0, широкое и низкое; апостериорное — около 7, значительно уже и выше.

Байесовский анализ данных на Python

Честный подход

Два графика плотности, наложенных друг на друга. Оба имеют форму колокола. Априорное распределение центрировано около 0, широкое и низкое; апостериорное — около 7, значительно уже и выше.

Байесовский анализ данных на Python

Честный подход

Два графика плотности, наложенных друг на друга. Оба имеют форму колокола. Априорное распределение центрировано около 0, широкое и низкое; апостериорное — около 7, значительно уже и выше.

Байесовский анализ данных на Python

Честный подход

Два графика плотности, наложенных друг на друга. Оба имеют форму колокола. Априорное распределение центрировано около 0, широкое и низкое; апостериорное — около 7, значительно уже и выше.

Байесовский анализ данных на Python

Байесовские точечные оценки

  • Ни одно отдельное число не может полностью передать информацию, заключённую в распределении

  • Однако иногда необходима точечная оценка параметра

График плотности в форме колокола.

Байесовский анализ данных на Python

Байесовские точечные оценки

  • Ни одно отдельное число не может полностью передать информацию, заключённую в распределении

  • Однако иногда необходима точечная оценка параметра

posterior_mean = np.mean(posterior_draws)


График плотности в форме колокола с вертикальной линией, отмечающей среднее значение.

Байесовский анализ данных на Python

Байесовские точечные оценки

  • Ни одно отдельное число не может полностью передать информацию, заключённую в распределении

  • Однако иногда необходима точечная оценка параметра

posterior_mean = np.mean(posterior_draws)
posterior_median = np.median(posterior_draws)

График плотности в форме колокола с вертикальной линией, отмечающей медиану.

Байесовский анализ данных на Python

Байесовские точечные оценки

  • Ни одно отдельное число не может полностью передать информацию, заключённую в распределении

  • Однако иногда необходима точечная оценка параметра

posterior_mean = np.mean(posterior_draws)
posterior_median = np.median(posterior_draws)
posterior_p75 = np.percentile(posterior_draws, 75)

График плотности в форме колокола с вертикальной линией, отмечающей 75-й перцентиль.

Байесовский анализ данных на Python

Доверительные интервалы

  • Интервал, в который параметр попадает с вероятностью x%
  • Чем шире доверительный интервал, тем выше неопределённость оценки параметра
  • Параметр случаен, поэтому он может попасть в интервал с некоторой вероятностью
  • В частотном подходе интервал (доверительный) случаен, а параметр фиксирован

График плотности в форме колокола с двумя пунктирными вертикальными линиями, обозначающими область между ними.

Байесовский анализ данных на Python

Наивысшая апостериорная плотность (HPD)

GIF с графиком плотности в форме колокола: горизонтальная линия опускается вниз, постепенно охватывая всё большую долю вероятностной массы между точками пересечения с графиком.

import arviz as az

hpd = az.hdi(posterior_draws, 
             hdi_prob=0.9)
print(hpd)
[-4.86840193  4.96075498]
Байесовский анализ данных на Python

Давайте потренируемся!

Байесовский анализ данных на Python

Preparing Video For Download...