Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Байесовские модели

Покупка
Артикул: 714659.02.99
Доступ онлайн
490 ₽
В корзину
Если вы знаете, как программировать на Python, и немного знаете о теории вероятности, значит, вы готовы освоить байесовскую статистику. Эта книга расскажет вам, как решать статистические задачи с помощью языка Python вместо математических формул и использовать дискретные вероятностные распределения вместо непрерывной математики. Байесовские статистические методы становятся все более обширными и важными. Но в помощь начинающим доступно не слишком много источников. Изложенная в этой книге методика основана на материале проводимых автором студенческих занятий и точно поможет вам сделать хороший старт! Издание будет полезно всем специалистам по анализу данных, кто должен использовать статистические данные в условиях их неполноты или решать другие нетривиальные задачи, связанные с вероятностными распределениями.
Дауни, А. Б. Байесовские модели : практическое руководство / А. Б. Дауни ; пер. с анг. В. А. Яроцкого. - Москва : ДМК Пресс, 2018. - 182 с. - ISBN 978-5-97060-664-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1873506 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Аллен Б. Дауни

Байесовские модели

Allen B. Downey

Think Bayes

Bayesian Statistics in Python

 
Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo

Аллен Б. Дауни

Байесовские  
модели

Байесовская статистика  
на языке программирования Python

Москва, 2018

УДК 004.021
ББК 32.973.3
Д21

Дауни А. Б.
Д21 
Байесовские модели / пер. с анг. В. А. Яроцкого. – М.: ДМК Пресс, 2018. – 
182 с.: ил. 

ISBN 978-5-97060-664-3

Если вы знаете, как программировать на Python, и немного знаете о теории 
вероятности, значит, вы готовы освоить байесовскую статистику. Эта книга расскажет вам, как решать статистические задачи с помощью языка Python вместо 
математических формул и использовать дискретные вероятностные распределения 
вместо непрерывной математики.
Байесовские статистические методы становятся все более обширными и важными. Но в помощь начинающим доступно не слишком много источников. Изложенная 
в этой книге методика основана на материале проводимых автором студенческих 
занятий и точно поможет вам сделать хороший старт!
Издание будет полезно всем специалистам по анализу данных, кто должен использовать статистические данные в условиях их неполноты или решать другие 
нетри виальные задачи, связанные с вероятностными распределениями.

УДК 004.021
ББК 32.973.3

Original English language edition published by O’Reilly Media, Inc. Copyright © 2013 Allen B. 
Downey. Russian-language edition copyright © 2018 by DMK Press. All rights reserved.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения 
владельцев авторских прав.

ISBN 978-1-449-37078-7 (анг.) 
Copyright © 2013 Allen B. Downey
ISBN 978-5-97060-664-3 (рус.) 
© Оформление, издание, перевод,  
 
ДМК Пресс, 2018

Содержание

Вступительное слово ......................................................................................9
Предисловие ....................................................................................................10

Глава 1. Теорема Байеса ..............................................................................16
Условная вероятность ...........................................................................................16
Совместная вероятность ......................................................................................17
Задача о булочках .................................................................................................17
Теорема Байеса .....................................................................................................18
Диахроническая интерпретация .........................................................................19
Задача M&M ..........................................................................................................20
Задача Монти Холла .............................................................................................22
Обсуждение ...........................................................................................................24

Глава 2. Вычислительная статистика ......................................................25
Распределения ......................................................................................................25
Задача с булочками ...............................................................................................26
Байесовская структура .........................................................................................27
Задача Монти Холла .............................................................................................28
Формирование структуры программного пакета ..............................................29
Задача M&M ..........................................................................................................30
Обсуждение ...........................................................................................................31
Упражнение ...........................................................................................................32

Глава 3. Оценивание ......................................................................................33
Задача об игральных костях ................................................................................33
Задача о локомотиве ............................................................................................34
Что насчет этого приора? .....................................................................................36
Альтернативный приор ........................................................................................37
Доверительный интервал ....................................................................................39
Кумулятивные функции распределения .............................................................39
Задача о немецком танке .....................................................................................40
Обсуждение ...........................................................................................................41
Упражнение ...........................................................................................................41

Глава 4. Больше об оценивании ...............................................................43
Задача о евро .........................................................................................................43
Итоговый постериор ............................................................................................44

 Содержание

Подавление приоров ............................................................................................45
Оптимизация ........................................................................................................47
Бета-распределение .............................................................................................48
Обсуждение ...........................................................................................................50
Упражнения...........................................................................................................50

Глава 5. Отношение вероятностей и добавления .............................52

Отношение вероятностей ....................................................................................52
Теорема Байеса в форме отношения вероятностей ...........................................53
Группа крови Оливера ..........................................................................................54
Добавления ...........................................................................................................55
Максимизации ......................................................................................................58
Перемешивание ....................................................................................................60
Обсуждение ...........................................................................................................62

Глава 6. Анализ решений .............................................................................63

Задача «Справедливой цены» ..............................................................................63
Приор .....................................................................................................................64
Функция плотности вероятности ........................................................................65
Представление PDF ...............................................................................................65
Моделирование участников .................................................................................67
Правдоподобие .....................................................................................................69
Обновление ...........................................................................................................70
Оптимальное предложение цены .......................................................................71
Обсуждение ...........................................................................................................74

Глава 7. Предсказание ..................................................................................75

Задача о Бостон Брюинс .......................................................................................75
Процесс Пуассона .................................................................................................76
Постериоры ...........................................................................................................77
Распределение голов ............................................................................................78
Вероятность выигрыша ........................................................................................79
Выигрыш в дополнительное время .....................................................................80
Обсуждение ...........................................................................................................82
Упражнения...........................................................................................................83

Глава 8. Погрешность наблюдения .........................................................85

Задача о линии метрополитена ...........................................................................85
Модель ...................................................................................................................85
Время ожидания ...................................................................................................87
Предсказание ожидаемого времени ...................................................................89
Оценка времени прибытия ..................................................................................92

Содержание  7

Включение неопределенности ............................................................................94
Анализ решений ...................................................................................................95
Обсуждение ...........................................................................................................97
Упражнение ...........................................................................................................98

Глава 9. Двумерное измерение ................................................................99

Пейнтбол ...............................................................................................................99
Пакет гипотез ........................................................................................................99
Тригонометрия ...................................................................................................100
Правдоподобие ...................................................................................................102
Совместные распределения ...............................................................................102
Условные распределения ...................................................................................104
Доверительные интервалы ................................................................................105
Обсуждение .........................................................................................................107
Упражнение .........................................................................................................108

Глава 10. Аппроксимация при байесовских вычислениях ..........109

Гипотеза изменчивости .....................................................................................109
Среднее и стандартное отклонение ..................................................................110
Обновление .........................................................................................................112
Апостериорное распределение CV ....................................................................113
Потеря значимости .............................................................................................113
Логарифмическое правдоподобие ....................................................................115
Небольшая оптимизация ...................................................................................116
Аппроксимация при байесовских вычислениях (ABC) ....................................117
Робастное оценивание .......................................................................................118
Кто более изменчив? ..........................................................................................120
Обсуждение .........................................................................................................122
Упражнение .........................................................................................................122

Глава 11. Проверка гипотез ......................................................................124

Обратно к задаче о евро .....................................................................................124
Cправедливое сравнение ...................................................................................125
Треугольный приор ............................................................................................126
Обсуждение .........................................................................................................127
Упражнения.........................................................................................................128

Глава 12. Свидетельства ............................................................................129

Интерпретация оценки SAT ...............................................................................129
Шкала ...................................................................................................................129
Приор ...................................................................................................................130
Постериор ............................................................................................................132

 Содержание

Улучшенная модель ............................................................................................133
Градуировка ........................................................................................................135
Апостериорное распределение эффективности ..............................................136
Распределение предсказания ............................................................................138
Обсуждение .........................................................................................................138

Глава 13. Моделирование .........................................................................140
Проблема опухоли почек ...................................................................................140
Простая модель ...................................................................................................141
Более общая модель............................................................................................143
Реализация ..........................................................................................................144
Кеширование совместного распределения ......................................................145
Условные распределения ...................................................................................146
Последовательная корреляция ..........................................................................147
Обсуждение .........................................................................................................151

Глава 14. Иерархическая модель ..........................................................152
Задача о счетчике Гейгера ..................................................................................152
Простое начало ...................................................................................................153
Создание иерархии .............................................................................................154
Небольшая оптимизация ...................................................................................155
Извлечение постериоров ...................................................................................155
Обсуждение .........................................................................................................157
Упражнение .........................................................................................................157

Глава 15. Борьба с размерностью..........................................................158
Бактерии пупка ...................................................................................................158
Львы, тигры и медведи .......................................................................................158
Иерархическая версия ........................................................................................161
Случайная выборка.............................................................................................163
Оптимизация ......................................................................................................164
Сворачивание иерархии ....................................................................................165
Еще одна проблема .............................................................................................167
Мы сделали еще не все .......................................................................................168
Данные пупка ......................................................................................................170
Прогнозирующее распределение ......................................................................172
Совместный постериор ......................................................................................175
Перекрывающая зона .........................................................................................176
Обсуждение .........................................................................................................178

Предметный указатель ..............................................................................180

Вступительное слово

Около десяти лет назад, когда изучение байесовских методов впервые заинтересовало меня, я обнаружил острую нехватку книг по данной теме на русском 
языке. Материала, в котором бы практически, с точки зрения реализации на 
конкретном языке программирования, описывались как базовые, так и более 
продвинутые методы анализа данных с помощью байесовских методов. При 
этом не составляло труда найти огромное количество достойных книг на английском языке, дающих глубокое практическое понимание этого отдельного 
важного класса методов, которые применимы в самом широком спектре областей: начиная от анализа экспериментальных данных и заканчивая современными системами принятия решений и даже блокчейном. Кстати, если говорить 
о последнем, то можно привести в пример NeuroChainTech – проект большой 
международной команды, в котором мне посчастливилось стать научным консультантом. Это реализация умного блокчейна с новым оригинальным алгоритмом консенсуса и элементами машинного обучения, включающими как 
раз байесовские сети. В этом году проект провел успешное ICO и в настоящее 
время находится в активной фазе своего развития. Кроме того, в настоящее 
время на байесовских методах базируются в том числе и современные системы принятия решений и анализа данных, которые активно используются для 
решения задач цифровизации экономики, выходящих в настоящее время на 
первый план в государственном и корпоративном развитии.
Несколько лет назад мои статьи на русском языке, опубликованные на популярном ресурсе в сети Интернет, в которых описывались базовые принципы имплементации байесовских методов на Python’е, нашли очень живой отклик читателей. Более того, до сегодняшнего дня, спустя пять лет с момента 
их публикации, мне по-прежнему поступают вопросы, связанные с практическим воплощением алгоритмов байесовского анализа, что в очередной раз 
подтверждает неподдельный и неснижающийся интерес широкой аудитории 
к пониманию и практическим аспектам реализации байесовских методов. 
Появление перевода на русский язык отличной книги, подробно описывающей практическое воплощение байесовских методов на Python’е, – это безусловный повод для радости.  Настоящая книга включает в себя описание базовых 
принципов реализации байесовских методов в самом широком спектре их 
применений, и я очень надеюсь, что она вызовет должный интерес у читателей 
и придаст новый импульс к изучению, активному применению и дальнейшему 
развитию байесовских методов.
Желаю читателям успешного овладения инструментарием байесовских методов и интересных его применений в будущих проектах! 

Максим Иришкин, PhD,
научный консультант NeuroChainTech,
эксперт по инновационному развитию корпораций

Предисловие

Мой подход

Предпосылкой для этой книги, как и других книг серии Think X, является мысль 
о том, что если вы умеете программировать, вы можете использовать это умение, чтобы овладеть другими знаниями.
Большинство книг по байесовской статистике используют математические 
формулировки и представляют эти идеи как исчисление в терминах математических концепций. В этой книге вместо математики используются язык 
программирования Python и дискретная аппроксимация вместо непрерывной 
математики. В результате то, что книгах по математике является интегралом, 
становится суммированием, а большинство операций с вероятностными распределениями – просто циклами.
Мне кажется, что такое представление более понятно, по крайней мере для 
людей с навыками программиста. Оно также имеет более общий характер, потому что мы можем выбирать наиболее подходящую модель, не слишком беспокоясь, поддается ли она традиционному анализу реальных проблем. Глава 3 – 
хороший пример этого. Она начинается с простого примера с игральными 
костями – одного из основных в базовой теории вероятности. Затем небольшими шагами идет продвижение к задаче о локомотивах, которая позаимствована из книги Фредерика Мостеллера (Frederick Mosteller) «Пятьдесят интересных 
вероятностных задач с решениями» (Fifty Challenging Problems in Probability 
with Solutions. Dover, 1987) и затем к задаче о немецком танке, знаменитому 
успешному применению байесовского метода во время Второй мировой войны.

Моделирование и аппроксиМация

Многие задачи в этой книге мотивированы реальными проблемами, что влечет за собой необходимость построения модели. Прежде чем мы применим 
байесовские методы (как и любой другой анализ), мы должны принять решение о том, какую часть реальной системы мы включим в модель и от каких 
деталей мы можем абстрагироваться.
Например, в главе 7 мотивирующей проблемой является предсказание победителя в игре в хоккей. Я применил для подсчета голов пуассоновский процесс, 
который подразумевает, что голы могут быть забиты равновероятно в любой 
момент игры. Это не совсем так, но эта модель, вероятно, подходит для многих 
других задач.
В главе 12 мотивацией проблемы является интерпретация экзаменационных оценок SAT (SAT является стандартизированным тестом, используемым 
при поступлении в колледж в США). Я начинаю с простой модели, в которой 

Работа с кодом  11

предполагается, что все вопросы на экзамене SAT имеют одинаковую сложность. Однако фактически организаторы SAT сознательно включают часть вопросов, которые являются относительно простыми, а часть вопросов – которые 
являются более сложными. Я представил и вторую модель, которая учитывает это обстоятельство, и показал, что в конечном счете оно не оказывает существенного влияния на результат.
Я думаю, что важно считать моделирование неотъемлемой частью решения 
задачи, потому что это заставляет нас думать о модельных ошибках (то есть 
ошибках, появляющихся вследствие упрощений и предположений в моделях).
Многие методы в этой книге базируются на дискретных распределениях, 
что заставляет некоторых беспокоиться о численных ошибках. Но для реальных проблем численные ошибки почти всегда меньше модельных ошибок.
С другой стороны, непрерывные методы иногда приводят к преимуществам 
в производительности – например, путем замены вычислений с линейным 
или квадратичным временем на решение с постоянной продолжительностью.
Я рекомендую следующую общую процедуру при решении задач:
1)  при исследовании проблемы начинайте с простой модели и опишите ее 
в ясных, читаемых и явно правильных кодах. Сфокусируйте внимание на 
хороших модельных решениях, не на оптимизации;
2)  когда простая модель заработает, определите основные источники ошибок. Возможно, вам потребуется увеличить количество значений при 
аппроксимации, или увеличить число итераций в модели Монте-Карло, 
или добавить детали в модель;
3)  если это решение приемлемо для вашего приложения, вам, возможно, нет 
необходимости заниматься его оптимизацией. Но если вы собираетесь это 
делать, существует два подхода, которые следует рассмотреть. Вы можете 
провести ревизию вашего кода и поискать возможности его оптимизации. Например, если вы кешировали полученные результаты, возможно, 
вам удастся избежать излишних вычислений. Или вы можете поискать 
аналитические методы, которые дают компьютерное ускорение.
Одно из достоинств этой процедуры в том, что шаги 1 и 2 склонны быть 
быстрыми, что дает возможность исследовать альтернативные модели до того, 
как вы начнете в них вкладываться.
Другим преимуществом является то, что если вы перейдете к шагу 3, вы уже 
начнете с некоторой справочной реализации, которая, вероятно, будет правильной, и вы сможете использовать ее для регрессионного тестирования (то 
есть проверяя, что оптимизированный код дает похожие результаты, по крайней мере приблизительно).

работа с кодоМ

Многие примеры в этой книге используют классы и функции, определенные 
в модуле thinkbayes.py. Вы можете загрузить этот модуль из http://thinkbayes.
com/thinkbayes.py.

 Предисловие

Многие разделы содержат справки о кодах, которые вы можете загрузить из 

http://thinkbayes.com. Некоторые из этих файлов имеют зависимости, которые 
вы также должны будете загрузить. Я предлагаю вам держать все эти файлы 
в одной той же директории, так чтобы они могли импортироваться один в другой без изменения поискового пути Python.
Вы можете загрузить эти файлы один за другим, когда они потребуются, или 
вы можете загрузить их все сразу из http://thinkbayes.com/thinkbayes_code.zip. Этот 
файл также содержит файлы данных, используемые в некоторых программах. 
Когда вы разархивируете их, это создаст директорию, названную thinkbayes_
code, которая содержит все коды, использованные в этой книге.
Или, если вы пользователь программы консольных утилит Git, вы можете 
сразу получить все файлы посредством ветвления и клонирования репозитория: https://github.com/AllenDowney/ThinkBayes.
Одним из модулей, которые я использовал, является thinkplot.py, который 
обеспечивает упаковку для некоторых функций в pyplot. Чтобы использовать, 
его необходимо загрузить matplotlib. Если у вас его еще нет, проверьте ваш менеджер пакетов на его доступность. В противном случае вы можете загрузить 
инструкции из http://matplotlib.org.
Наконец, некоторые программы в этой книге используют NumPy и SciPy, которые доступны на http://numpy.org и http://scipy.org.

стиль кодов

Опытные программисты на Python могут заметить, что коды в этой книге не 
соответствуют PEP 8, являющемуся наиболее общим руководством стиля для 
Python (http://www.python.org/dev/peps/pep-0008/).
Конкретно PEP 8 требует нижнего регистра названий функций и подчеркивания между словами, like_this. В этой книге и сопровождающих кодах назва-
ния функции и методов начинаются с заглавной буквы и используют «верблюжий» стиль (camel style) LikeThis.
Я нарушил это правило, потому что я разработал эти коды, когда я был приглашенным ученым в Google, и следовал руководству Google по стилю кодов, 
который в некоторой части отличается от PEP 8. Используя стиль Google, я нашел его привлекательным, и мне было бы трудно его менять.
Также в духе этого стиля я написал «Bayes’s Theorem» с одним «s» после апострофа, что предпочитают в одних руководствах и осуждают в других. У меня 
нет в этом вопросе каких-либо предпочтений, я должен был выбрать что-либо 
одно, и здесь то, что я выбрал.
И наконец, одно типографическое замечание: всюду в этой книге я использовал PMF и CDF для математической концепции функции масс вероятности 
и кумулятивной функции распределения и Pmf и Cdf для ссылки на объекты 
Python, которые я использую для их представления.

Список участников  13

предпосылки

Существует несколько замечательных модулей для работы с байесовской статистикой в Python, включая pym и OpenBUGS. Я решил не использовать их 
в этой книге, потому что вам необходимо много предварительной информации, чтобы начать работать с ними, а я хотел свести необходимость предпосылок к минимуму. Если вы знаете Python и немного о вероятности, вы готовы 
работать с этой книгой.
Глава 1 знакомит вас с вероятностью и теоремой Байеса. В ней нет кодов. Во 
второй главе вводится Pmf и Cdf, несколько измененный словарь Python, который я использовал для представления функции масс вероятности (PMF). Затем 
в главе 3 вводится Suite, своего рода структура для осуществления байесовских 
обновлений. И это, пожалуй, все.
Нет, почти все. В некоторых последних главах я использовал распределения, включающие распределение Гаусса (нормальное распределение), экспоненциальное распределение, распределение Пуассона и бета-распределение. 
В главе 15 я использовал не слишком употребительное распределение Дирихле, но затем я представил его в процессе дальнейшего изложения. Если вы незнакомы с этими распределениями, то можете прочитать о них в Википедии. 
Вы можете также прочитать о них и в одной из книг этой серии Think Stats и 
книгах по введению в статистику (хотя я боюсь, что большинство из них использует математический подход, что не особенно полезно для практики).

список участников

Если у вас есть предложения или замечания, пожалуйста, направляйте е-mail 
по адресу downey@allendow.ney.com. Если я проведу изменения, основанные на 
ваших откликах, я включу вас в список участников (если вы не попросите этого 
не делать).
Если вы включите, по крайней мере, часть предложения, в котором обнаружилась ошибка, это облегчит мне поиск ее. Это касается и просто страниц 
и разделов, но это уже будет для меня более трудным. Спасибо! 
 
 Прежде всего я должен упомянуть замечательную книгу Давида МакКея 
(David MacKay) «Теория информации, вывод и обучающие алгоритмы» 
(Information Theory, Inference, and Learning Algorithms), благодаря которой 
я пришел к пониманию байесовского метода. С его разрешения я использовал несколько задач из этой книги в качестве примеров.
 
 Эта книга улучшилась благодаря консультациям с Sanjoy Mahajan, особенно осенью 2012 года, когда я был аудитором его класса в колледже Олин.
 
 Часть этой книги я написал во время вечерней работы над проектом 
с группой Boston Python User Group, и я хотел бы поблагодарить их за 
сотрудничество и пиццу.
 
 Jonathan Edwards исправил первые опечатки.

 Предисловие

 
 George Purkins нашел ошибки в разметке текста.
 
 Olivier Yiptong прислал несколько полезных предложений
 
 Yuriy Pasichnyk нашел несколько ошибок.
 
 Kristopher Overholt прислал длинный перечень исправлений и предложений.
 
 Robert Marcus нашел неправильно проставленное i.
 
 Max Hailperin предложил более ясное изложение главы 1.
 
 Markus Dobler указал на то, что вытаскивание булочек из корзины с заменой не вполне реалистичный сценарий.
 
 Tom Pollard и Paul A. Giannaros обнаружили проблему в версии с некоторыми величинами в задаче о локомотивах.
 
 Ram Limbu нашел опечатки и предложил исправления.
 
 Весной 2013 года студенты моего класса Вычислительная байесовская 
статистика (Computational Bayesian Statistics) сделали много полезных исправлений и предложений: Kai Austin, Claire Barnes, Kari Bender, 
RachelBoy, Kat Mendoza, Arjun Iyer, Ben Kroop, Nathan Lintz, Kyle McConnaughay, Alec Radford, Brendan Ritter и Evan Simpson.
 
 Greg Marra и Matt Aasted помогли мне обсуждением задачи о справедливой цене.
 
 Marcus Ogren указал мне на то, что первоначальное описание задачи 
о локомотивах было неоднозначным.
Jasmine Kwityn и Dan Fauxsmith из O’Reilly Media сделали корректуру книги 
и нашли много возможностей для улучшения. 
Аллен Б. Дауни

отзывы и пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об 
этой книге – что понравилось или, может быть, не понравилось. Отзывы важны 
для нас, чтобы выпускать книги, которые будут для вас максимально полезны.
Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com, зайдя 
на страницу книги, и оставить комментарий в разделе «Отзывы и рецензии». 
Также можно послать письмо главному редактору по адресу dmkpress@gmail.
com, при этом напишите название книги в теме письма. 
Если есть тема, в которой вы квалифицированы, и вы заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу http://
dmkpress.com/authors/publish_book/ или напишите в издательство по адресу 
dmkpress@gmail.com.

скачивание исходного кода приМеров

Скачать файлы с дополнительной информацией для книг издательства «ДМК 
Пресс» можно на сайте www.dmkpress.com или www.дмк.рф на странице с описанием соответствующей книги. 

Доступ онлайн
490 ₽
В корзину