[Перевод] Вероятностное программирование и байесовский метод для хакеров
Здравствуйте, коллеги. Сегодня хотели поинтересоваться, насколько востребованной вам кажется слегка устаревшая книга «Bayesian Methods for Hackers», опубликованная в оригинале в 2015 году, но пока не переведенная на русский язык.
Книга позиционируется как прикладная, максимально избавленная от математики и неустаревающая.
Под катом — немного сокращенный перевод обзора этой книги, выложенного автором на 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.