- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

Под катом — немного сокращенный перевод обзора этой книги, выложенного автором на Github.
Поучаствуйте пожалуйста в голосовании

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

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

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

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

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

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

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

Автор: ph_piter

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/282360

Ссылки в тексте:

[1] Bayesian Methods for Hackers: https://www.amazon.com/Bayesian-Methods-Hackers-Probabilistic-Addison-Wesley/dp/0133902838/

[2] Пролог: http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Prologue/Prologue.ipynb

[3] Глава 1: http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter1_Introduction/Ch1_Introduction_PyMC3.ipynb

[4] Глава 2: http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter2_MorePyMC/Ch2_MorePyMC_PyMC3.ipynb

[5] Глава 3: http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter3_MCMC/Ch3_IntroMCMC_PyMC3.ipynb

[6] Глава 4: http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter4_TheGreatestTheoremNeverTold/Ch4_LawOfLargeNumbers_PyMC3.ipynb

[7] Глава 5: http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter5_LossFunctions/Ch5_LossFunctions_PyMC3.ipynb

[8] Глава 6: http://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter6_Priorities/Ch6_Priors_PyMC3.ipynb

[9] здесь: http://ipython.org/

[10] заранее скомпилированные версии: https://www.lfd.uci.edu/~gohlke/pythonlibs/

[11] Источник: https://habr.com/post/413653/?utm_campaign=413653