Байесовские модели
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Дауни А. Б.
Перевод:
Яроцкий Владимир Александрович
Год издания: 2018
Кол-во страниц: 182
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-664-3
Артикул: 714659.02.99
Доступ онлайн
В корзину
Если вы знаете, как программировать на Python, и немного знаете о теории вероятности, значит, вы готовы освоить байесовскую статистику. Эта книга расскажет вам, как решать статистические задачи с помощью языка Python вместо математических формул и использовать дискретные вероятностные распределения вместо непрерывной математики. Байесовские статистические методы становятся все более обширными и важными. Но в помощь начинающим доступно не слишком много источников. Изложенная в этой книге методика основана на материале проводимых автором студенческих
занятий и точно поможет вам сделать хороший старт! Издание будет полезно всем специалистам по анализу данных, кто должен использовать статистические данные в условиях их неполноты или решать другие нетривиальные задачи, связанные с вероятностными распределениями.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Аллен Б. Дауни Байесовские модели
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.дмк.рф на странице с описанием соответствующей книги.
Доступ онлайн
В корзину