[Перевод] Вероятностное программирование и байесовский метод для хакеров

Здравствуйте, коллеги. Сегодня хотели поинтересоваться, насколько востребованной вам кажется слегка устаревшая книга «Bayesian Methods for Hackers», опубликованная в оригинале в 2015 году, но пока не переведенная на русский язык.

2homld9mgboru--vouaxdi_gb_m.jpeg


Книга позиционируется как прикладная, максимально избавленная от математики и неустаревающая.

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

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

Если байесовский вывод — наша цель, то математический анализ — лишь один из путей к ней. С другой стороны, вычислительные мощности сейчас стали гораздо дешевле, и мы можем воспользоваться альтернативным путем, то есть, вероятностным программированием. Второй вариант гораздо удобнее, поскольку не требует прибегать к математике на всех этапах решения задачи, иными словами, позволяет обойтись без математического анализа, который зачастую оказывается непреодолимым препятствием на пути к байесовскому выводу. Образно выражаясь, во втором случае мы движемся из начала в конец мелкими перебежками, а в первом — огромными скачками, из-за чего можем приземлиться довольно далеко от цели. Более того, без серьезной математической подготовки читатель, возможно, просто не справится с анализом из первого варианта.

Книга Bayesian Methods for Hackers задумывалась как введение в байесовский вывод с упором на понимание ключевых концепций и использование вычислительных мощностей (математика при этом вторична). Разумеется, эта книга вводная, вводной она и останется. Тем, кто подкован в математике, она может просто подогреть любопытство, а далее открыть к другим текстам, написанным с опорой на серьезный математический анализ. Для энтузиаста, заинтересованного в практическом применении байесовских методов, а не в их математической подоплеке, книга будет достаточно информативной и интересной.

Для вероятностного программирования в этой книге выбран язык PyMC, на то есть две причины. К моменту написания книги в Интернете не было централизованного ресурса с примерами и объяснениями приемов работы на в экосистеме PyMC. Официальная документация предполагает, что читатель уже имеет представление о байесовском выводе и вероятностном программировании. Надеемся, что эта книга побудит читателей с любым уровнем подготовки присмотреться к PyMC.

При работе с PyMC приходится учитывать зависимости, а именно, от NumPy (по ситуации) от SciPy. Чтобы не ограничивать читателя, в примерах из этой книги используется только PyMC, NumPy, SciPy и Matplotlib.

Содержание

(Перечисленные ниже главы отображаются в nbviewer на сайте nbviewer.ipython.org, доступны только для чтения и открываются в реальном времени. Интерактивные блокноты и примеры можно загрузить клонированием!)

  • Пролог: Зачем этим заниматься.
  • Глава 1: Введение в байесовские методы. Знакомство с философией и практикой байесовских методов, рассказ о том, что такое вероятностное программирование. Некоторые примеры:


 Изменение человеческого поведения — вывод на основе частоты отправки СМС.

  • Глава 2: Немного подробнее о PyMC Мы обсудим моделирование байесовских задач на примерах, в которых будет использоваться библиотека PyMC (язык Python). Как создавать байесовские модели? Среди примеров:
  •  Вычисление вероятности крушения космического челнока «Челленджер»


  • Глава 3: Открываем черный ящик MCMC Поговорим о том, как работает MCMC и диагностические инструменты. Среди примеров:
  •  Байесовская кластеризация на примере смешанных моделей


  • Глава 4: Величайшая теорема, о которой вам никогда не рассказывали.Здесь мы исследуем невероятно полезную и опасную теорему: закон больших чисел. Среди примеров:
  •  Исследование множества данных Kaggle и подводные камни наивного анализа
  •  Как отсортировать комментарии с Reddit от лучших к худшим (все не так просто как вам кажется)


  • Глава 5: С чем бы вы предпочли расстаться — с рукой или с ногой? Знакомство с функциями потерь и их (бесподобном) применении в байесовских методах. Среди примеров:
  •  Оптимизация финансовых прогнозов
  •  Выигрышное решение для состязания Kaggle Dark World


  • Глава 6: Уточнение приоритетов. Пожалуй, наиболее важная глава. Здесь мы отвечаем на вопросы, прибегая к экспертным мнениям. Среди примеров:
  •  Многорукие бандиты и байесовское решение такой задачи.
  •  Каково отношение между размером выборки и априорными данными?
  •  Оценка финансовых неизвестных при помощи экспертных априорных данных.
  • Также здесь вы найдете ценные советы об объективности при анализе и о распространенных ловушках, связанных с априорными вероятностями.


Установка и конфигурация

Если вы желаете запустить блокнот IPython на локальном компьютере, то потребуется установить следующее:

  • IPython 0.13 — необходима для просмотра файлов ipynb. Скачать ее можно здесь.
  • Пользователи Linux должны без труда установить Numpy, Scipy и PyMC. Для пользователей Windows найдутся заранее скомпилированные версии, если вдруг возникнут какие-то сложности.


В каталоге styles/ найдется ряд файлов, адаптированных для работы с блокнотом. Они не только разработаны специально для книги, но и специально оптимизированы для работы с matplotlib и IPython.

© Habrahabr.ru