Байесовский вывод

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Если вы планируете в будущем стать аналитиком/ML-инженером, то, возможно, уже какое-то время изучаете статистику. Чем дольше вы этим занимаетесь и погружаетесь в прикладной контекст, тем с большей вероятностью вы могли встречать на просторах интернета крамольную мысль, что есть ещё какая-то другая, байесовская статистика. Но что это за зверь, чем она отличается от классической статистики и почему она так нравится многим?

В этой статье мы попробуем кратко расписать логику байесовского вывода и основные его компоненты, разобрав всё на конкретном примере.

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

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

  • В классической статистике вероятность воспринимается как нечто объективное, не зависящее от человека — а именно относительная частота события в долговременной перспективе. Из-за такой особенности классический подход также называют частотным (frequentist).
  • В байесовской статистике вероятность воспринимается как степень субъективного убеждения в чём-либо. Всякий раз, когда вы прикидываете в голове вероятность чего-либо (например, что завтра пойдёт дождь), вы работаете именно с субъективными вероятностями событий.

«Субъективная вероятность» звучит как что-то максимально нестрогое и почти что эзотерическое. Однако в этом и заключается магия байесовского вывода: это максимально строгий и математически выверенный способ оценки того, как должны меняться наши субъективные убеждения при получении новой информации. Фактически реализуется следующая логика:

  1. У нас есть какие-то убеждения о мире
  2. Мы получаем какие-то новые данные
  3. Исходя из них мы как-то корректируем свои прошлые убеждения
  4. Повторяем шаги 1-3

Именно строгая формальная база вкупе с натуральной интерпретируемостью процесса и подкупает многих адептов байесовского подхода! Но как реализуется эта строгость? Здесь, как ни удивительно, замешана формула Байеса:

Три элемента этой формулы концептуально совпадают с тремя шагами логики выше. Четвёртый элемент — P(A) — играет вспомогательную роль в качестве нормирующей константы. Он нужен лишь для того, чтобы значения на выходе можно было трактовать именно как вероятность со значениями от 0 до 1. Рассмотрим остальные элементы:

  1. P(B) — это наши предварительные убеждения о чём-либо. Называется этот параметр априорным распределением вероятностей (prior).
  2. P(A|B) — это данные о мире, рассматриваемые через призму функции правдоподобия (likelihood function). Суть такова: мы предполагаем, что полученные нами данные распределены по какому-то закону (например, имеют нормальное распределение), после чего пытаемся оценить правдоподобность параметров этого распределения, которые могли бы сгенерировать такие данные. Заметим, что правдоподобие ? вероятность, так как необязательно находится между 0 и 1.
  3. P(B|A) — это наши скорректированные убеждения. Называется это апостериорным распределением вероятностей (posterior).

Звучит достаточно абстрактно и непонятно. Но давайте попробуем разобрать это на конкретном примере.

Пример

Ситуация: вы запускаете свой онлайн-стартап, чтобы поделиться с человечеством Уникальным Продуктом (и получить прибыль). Рекламная кампания уже вовсю ходит по уголкам интернета, и сайт уже ждёт тех смельчаков, которые готовы пройти на него по ссылке и совершить покупку.

Естественно, не каждый человек перейдёт по ссылке. А из тех, кто перешёл, не каждый купит. Первое оценивается метрикой под названием CTR, а второе —CR, больше известной как конверсия.

Допустим, нас интересует именно конверсия: какой процент посетителей сайта в конечном итоге станет нашими покупателями, насколько эффективно они проходят воронку. Как можно подойти к этому вопросу по-байесовски?

Prior

Любой байесовский вывод начинается с наших предварительных убеждений. Какие значения конверсии мы считаем более вероятными, а какие менее? Для начала надо подобрать адекватное априорное распределение.

Подойдёт ли здесь нормальное распределение? Вряд ли — оно принимает значения от -? до +?, а конверсия меняется от 0 до 1! Гораздо лучше здесь подойдёт нежно любимое байесианцами бета-распределение — оно как раз на этом промежутке значений и определено.

Все характеристики бета-распределения зависят от двух параметров:

Beta(?,?)

Оба параметра можно (грубо) интерпретировать похожим на биномиальное распределение образом: ? отражает число успехов и перетягивает распределение вправо, а ? отражает число неудач и перетягивает распределение влево. Форма итогового распределения будет зависеть от величины каждого параметра и отношения между этими величинами.

Звучит всё ещё абстрактно. Давайте посмотрим на четыре конкретных примера, где мы выразим 4 разных убеждения, а затем сравним их итоговый эффект!

Неинформативное распределение

Для начала мы можем поиграть в Сократа и решить, что мы вообще ничего не знаем про конверсию, кроме границ её значений. Какое наиболее вероятное значение конверсии? А чёрт его знает, все одинаково вероятны! Никакой информации у нас нет и модели мы её давать не будем.

Очевидный выбор распределения - это равномерное Uniform(0,1). К счастью, оно является частным случаем бета-распределения, и мы можем получить его через параметры Beta(1,1):

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

Но если мы реально ничего не знаем и не придерживаемся никаких убеждений, то это стандартный выбор распределения! Другой вопрос — реально ли у нас нет убеждений.

Слабоинформативное распределение

Давайте подумаем: а действительно ли все варианты конверсии одинаково вероятны? Действительно ли мы считаем, что 50%-ая конверсия столь же вероятна, как и 100%-ая? А конверсия в 0%?

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

Так как информацию мы даём, но этой информации не очень много, мы зовём такое слабоинформативными распределениями. Сделать такое можно, например, в виде Beta(3,3):

Можно было бы понизить ? и ?, если нам кажется, что это даёт слишком много информации модели. Или наоборот, поднять эти параметры, если нам кажется, что модель недостаточно исключает крайние значения.

А можно указать гораздо более конкретную информацию о наиболее правдоподобных значениях конверсии и создать информативное априорное распределение.

Информативное распределение

Давайте предположим, что у нас уже есть продуктовый опыт и мы повидали много разных конверсий в похожих продуктах. Самые неудачные выдавали вам конверсию около 40%, самые успешные — около 80%, но обычно конверсия была где-то в районе 60%.

Давайте используем этот продуктовый инсайт и расскажем о нём нашей модели! Этот вариант можно выразить через распределение Beta(24,16):

Опять же, можно сделать его уже (увеличив значения и ?, и ?), или шире (уменьшив их) и, конечно же, изменять его центральную тенденцию. Всё, о чём вам говорит опыт и интуиция.

В целом информативные априорные распределения лучше всего основывать либо на исторических данных, либо на научных источниках или другой проверенной информации. Но, само собой, нам ничто не мешает использовать очевидно плохое распределение.

Не очень адекватное информативное распределение

Представьте, что мы верим в продукт настолько сильно, что это балансирует на грани с фанатизмом. Конверсия обязана быть максимально возможной (ну максимум на 5-6% пониже). Всё остальное — из жанра фантастики.

Представим эту модель как Beta(100,1):

Итого мы выразили 4 различные суждения о правдоподобных значениях конверсии. Давайте посмотрим, как это соотнесётся с жестокой реальностью.

Likelihood

Давайте представим, что реально нашей эффективности хватило лишь на 40% посетителей — т.е. имеем конверсию в покупку, равную 0.4. Однако мы как исследователи этого пока не знаем! Всё, что у нас на данный момент есть — это данные 20 посетителей сайта. Они выглядят вот так:

Всего из 20 человек покупку совершило лишь 5 — это конверсия в 25%. Негусто! Но надо понять, при каких "истинных" значениях конверсии мы могли бы получить такой результат.

Так как у нас, по сути, есть череда успехов и неудач, то такие данные хорошо описываются распределением Бернулли. Соответственно, используя биномиальную функцию правдоподобия, мы получаем вот такой результат:

Ожидаемо, пик находится в районе 25% — однако допустимы значения от 0 (невключительно) до примерно 60%. Попадает в диапазон и "истинное" значение 40% — мы его не знаем, но данные были симулированы именно из такого распределения. Причина такой ширины распределения - малый размер выборки.

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

Posterior

Итого мы имеем с вами P(B) и P(A|B). Чтобы получить апостериорное распределение P(B|A), нам нужно получить нормирующую константу P(A). Как это сделать?

Здесь мы используем небольшой трюк. Дело в том, что в биномиальной модели бета-распределение обладает замечательным математическим свойством: оно является сопряжённым априорным распределением. Это означает, что апостериорное распределение тоже будет бета-распределением.

Также это значит, что есть конкретная формула, по которой от P(B) и P(A|B) можно напрямую перейти к P(B|A). Она очень простая:

P(B|A)=Beta(?+k, ?+n-k)

Где ? и ? — параметры нашего априорного распределения, k — число успехов, n — число испытаний. Иными словами, мы просто прибавляем к первому параметру число покупателей нашего продукта, а ко второму — всех остальных.

Давайте смотреть для каждого случая:

Неинформативное распределение

Наше неинформативное распределение меняется так: Beta(1+5,1+15)=Beta(6,16). Посмотрим, как это выглядит:

Обратите внимание, что по форме оно идеально совпадает со значениями функции правдоподобия! Интуитивно это не столь удивительно — мы не высказывали никаких предположений, а значит, данные всё решили за нас.

Слабоинформативное распределение

Сравним прошлый результат со слабоинформативным: Beta(3+5,3+15)=Beta(8,18).

На первый взгляд выглядит, будто это распределение ничем не отличается от предыдущего. Однако если присмотреться, то можно увидеть небольшой сдвиг:

Как следствие изначально более низкой вероятности крайних значений, здесь наш вывод смещён в сторону более высоких значений конверсии. Более того — можете обратить внимание на то, что слабоинформативный вариант имеет меньшую дисперсию. Мы сузили границы допустимых значений и стали увереннее в своём текущем выборе!

Но сдвиг всё ещё не очень большой. На то оно и слабоинформативное.

Информативное распределение

А теперь оценим эффект информативного распределения: Beta(24+5,16+15)=Beta(29,31)

Здесь влияние исходного распределения гораздо сильнее — видно, что апостериорное распределение явно смещено правее, чем прошлые варианты! Тем не менее, достаточно очевидно, что реальные данные повлияли на результат и скорректировали наше изначальное мнение.

Не очень адекватное информативное распределение

Наконец, глянем, к чему привёл наш фанатизм: Beta(100+5,1+15)=Beta(105,16):

Конечно, определённое влияние данные на нас оказали — мы уже не настолько отчаянно веруем в крайне высокую конверсию. Тем не менее, полностью избавиться от его влияния нам не удалось — наше апостериорное распределение всё ещё лежит около довольно высоких значений конверсии. Собранных данных недостаточно, чтобы переубедить нас полностью.

Подытог

Ну и какой же вариант оказался ближе всего к истине? Давайте поглядим:

Видно, что «фанатичный» вариант явно оказал нам медвежью услугу — это апостериорное распределение даже не близко к «истине»! Это ожидаемое поведение — малые выборки неспособны значимо пошатнуть высокую уверенность в чём-то.

Остальные три распределения захватывают «истинное» значение. При этом видно, что неинформативный вариант даёт «истине» меньше веса, чем слабо- и сильно- информативные распределения. Давайте приблизим, чтобы понять, какое из них «лучше»:

Информативный вариант оказался самую чуточку «лучше» — он даёт больше веса «истинному» значению! Итого имеем такое ранжирование априорных распределений для данного случая:

  1. Информативное
  2. Слабоинформативное
  3. Неинформативное
  4. Плохое информативное (с большим отставанием)

Из этого мы можем сделать (неформально) несколько выводов:

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

А если данных будет больше?

Одна из приятных особенностей байесовского вывода — он работает как постепенное накопление информации. Из-за этого проблема подглядывания нам не столь принципиальна по сравнению с классической статистикой — мы можем просто накапливать всё больше и больше данных и смотреть, как меняются наши убеждения в чём-то! Хотя тут тоже не всё так просто.

На практике это означает, что чем больше у нас будет становиться выборка, тем больше реальные данные будут доминировать над априорными. Взглянем на это на практике!

Ради финального вывода давайте глянем на результат для 1000 значений:

Выводы по этому графику дадим вам сделать самостоятельно.

Что почитать ещё?

Здесь мы описали лишь общую логику байесовского вывода, оставив нераскрытыми множество вопросов. Как делать байесовский вывод для несопряжённых априорных распределений? Как сделать байесовские аналоги стандартных тестов? Как проверять статзначимость полученных результатов? Что вообще можно делать в байесовской парадигме?

Мы собрали для вас подборку материалов, в которых можно ознакомиться с этим всем и даже больше.

  • Probabilistic Programming & Bayesian Methods for Hackers — очень хороший вводный текст в байесовский вывод на Python, быстро переходящий в практике на PyMC, весьма популярном фреймворке для байесовской статистики. Для желающих большего хардкора в том же репозитории есть код книги, переписанный на более гибком и сложном TensorFlow Probability.
  • Если вам не чужд R, то также обратите внимание на Bayes Rules! An Introduction to Applied Bayesian Modeling. Книга весьма дружелюбная для новичков и уделяет достаточно много времени тому, как работает байесовский вывод «под капотом», позднее переходя к демонстрации байесовских идей в контексте линейных моделей.
  • Абсолютной классикой является Statistical Rethinking: A Bayesian Course with Examples in R and Stan. В отличие от прошлой книги, есть ряд адаптаций кода на Python, в том числе на NumPyro. Книга интересна своим широким подходом, охватывая каузальный вывод, теорию информации и нетривиальные регрессионные задачи. Также отличается выраженной поэтичностью текста, не вредящей восприятию содержания. Также рекомендуем заглянуть на YouTube-канал автора.
  • Для желающих чистого питона и ещё большего хардкора рекомендуем Bayesian Modeling and Computation in Python. Книга содержит в себе достаточно продвинутые темы из байесовской статистики, но явно ориентирована на более терпимых к математической нотации читателей. Тем не менее, она всё ещё имеет ярко прикладной характер.
  • JASP изначально создавался как бесплатная альтернатива SPSS, популярному среди социальных исследователей и в некоторых компаниях статистическому инструменту «с кнопочками». Однако помимо этого он создавался как миссионерский инструмент, призванный провести параллель между классическими статтестами и их байесовскими аналогами. Поэтому он может оказаться очень хорошим подспорьем для начинающих изучать статистику, недостаточно хорошо владеющих языками программирования и желающих погрузиться в байесовскую практику одновременно с изучением классических методов.
  • Indices of Effect Existence and Significance in the Bayesian Framework — статья с описанием ряда показателей статзначимости, которые могут использоваться в байесовской парадигме, их поведения в зависимости от характеристик выборки, а также параллелей с p-value.
  • Understanding Psychology as a Science: An Introduction to Scientific and Statistical Inference — немного необычная книга в этом списке, так как заточена на философский аспект вопроса. Две главы книги описывают процесс статистического вывода в классической и байесовской парадигме с акцентом на то, чем различается логика этого вывода и в чём заключаются принципиальные ограничения интерпретации результатов в обоих вариантах.

Источник: m.vk.com

Комментарии: