В основе анализа данных, машинного обучения и работы над искусственным интеллектом лежат математика и статистика. Аналитики данных и специалисты по Data Science часто обращаются к теории вероятностей, чтобы принимать решения в условиях неопределённости. Например, выбрать наиболее удачную гипотезу на старте проекта, когда данных ещё нет.
Один из прикладных инструментов теории вероятностей — теорема Байеса. Её назвали в честь автора — английского священника и математика Томаса Байеса. В работе, опубликованной в 1763 году, Байес предложил теорему для корректировки убеждений при появлении новых данных.
В основе теоремы — условная вероятность. То есть при наличии двух связанных между собой событий с помощью теоремы можно рассчитать вероятность наступления одного из них при условии, что наступило другое.
Например, с помощью теоремы Байеса можно рассчитать вероятность дождя при условии, что влажность воздуха превысила заданное значение
При расчёте вероятности с помощью теоремы Байеса можно поменять причину и следствие местами. Например, кашель — это следствие заболевания. Допустим, исследователь собрал данные о том, как часто у пациентов с бронхитом есть кашель. С помощью теоремы можно рассчитать вероятность бронхита при наличии у пациента кашля.
На курсе «Специалист по Data Science» студенты не только изучают теорию и знакомятся с основными инструментами, но и тренируются применять новые знания и навыки на реальных задачах. Например, делают прогнозы и проверяют гипотезы, чтобы помочь вырастить бизнес. Попробовать формат обучения можно на бесплатной вводной части курса.
Вот как выглядит формула теоремы Байеса:
Расшифруем все обозначения:
● P — вероятность.
● | — математическое обозначение фразы «при условии, что».
● P(A|B) — вероятность наступления события А при условии, что произошло событие В.
● P(B|A) — апостериорная, или условная, вероятность наступления события В при условии, что произошло событие А. То есть вероятность события с учётом апостериорных данных — данных, которые получены после наблюдения или опыта.
● P(A) — априорная, или безусловная, вероятность наступления события А. Это вероятность, которая основана на имеющихся данных до наблюдения или проведения опыта.
● P(B) — априорная вероятность наступления события В.
Априорная — безусловная — вероятность пересматривается при поступлении новых данных и становится апостериорной — условной. На практике это выглядит примерно так: сначала есть убеждение или гипотеза, затем в ходе наблюдения, опыта или эксперимента собирают новые данные, а после на их основе обновляют первоначальное убеждение.
Рассмотрим, как это происходит, на известной задаче теории вероятностей — парадоксе Монти Холла.
Парадокс Монти Холла — задача с неожиданным, на первый взгляд, решением. Названа в честь американского ведущего развлекательного шоу «Давайте заключим сделку», поскольку условие задачи описано как ситуация из этого самого шоу. Есть несколько версий задачи. Рассмотрим самую популярную — с дополнительными условиями.
Условие задачи:
Перед участником игры три двери. За одной из них находится автомобиль, за двумя другими — козы. Участнику нужно угадать, за какой дверью автомобиль. Он выбирает дверь под номером три. Прежде чем открыть третью дверь, ведущий открывает вторую. За ней оказывается коза. После этого ведущий спрашивает участника, не хочет ли тот изменить своё первоначальное решение.
При этом участнику игры известно, что:
● ведущий знает, за какой дверью находится автомобиль;
● ведущий должен открыть дверь, за которой находится коза, но не ту, которую выбрал участник, и предложить изменить выбор;
● если участник указал на дверь, за которой находится автомобиль, ведущий выбирает любую из оставшихся с одинаковой вероятностью.
Возрастут ли шансы участника отгадать дверь с автомобилем, если он изменит своё первоначальное решение?
Интуитивно кажется, что после открытия второй двери участник с 50% вероятностью обнаружит за ней автомобиль, а смена решения ни на что не повлияет. Но математика полагается не на интуицию, а на цифры
Решим задачу с помощью теоремы Байеса:
Шаг 1. Введём обозначения
Пусть:
● A1, A2, A3 — события, при которых автомобиль находится за дверью номер один, два и три соответственно.
● B1, B2, B3 — события, при которых ведущий открыл дверь номер один, два и три соответственно.
Шаг 2. Подставим обозначения в формулу теоремы Байеса
Чтобы оценить, повысятся ли шансы отгадать нужную дверь при смене первоначального решения, нужно рассчитать вероятность выигрыша при смене решения с учётом новых данных. То есть вероятность того, что автомобиль находится за первой дверью при условии, что ведущий открыл вторую дверь, — P(A1|B2).
Формула Байеса для расчёта вероятности будет выглядеть так:
Чтобы рассчитать P(A1|B2), нужно вычислить P(A1), P(B2|A1) и P(B2).
Шаг 3. Рассчитаем P(A1)
Автомобиль равновероятно находится за одной из трёх дверей, поэтому:
P(A1) = P(A2) = P(A3) = 1/3
Шаг 4. Рассчитаем P(B2|A1)
Вероятность того, что ведущий откроет вторую дверь при условии, что автомобиль за первой дверью, а участник выбрал вторую дверь, равна единице. Потому что у ведущего не остаётся выбора, какую дверь открыть.
P(B2|A1) = 1
Шаг 5. Рассчитаем P(B2)
P(B2) — это априорная вероятность того, что ведущий откроет вторую дверь. То есть вероятность с учётом всех возможных вариантов. Она рассчитывается так:
P(B2) = P(B2|A1) ⋅ P(A1) + P(B2|A2) ⋅ P(A2) + P(B2|A3) ⋅ P(A3)
Вероятность, что ведущий откроет дверь, за которой находится автомобиль, по условию задачи равна нулю. Поэтому:
P(B2|A2) ⋅ P(A2) = 0
Разберём, как рассчитываются остальные слагаемые при тех условиях, которые есть.
Значения P(B2|A1) и P(A1) уже известны из расчёта выше, поэтому:
P(B2|A2) ⋅ P(A2) = 0
Разберём, как рассчитываются остальные слагаемые при тех условиях, которые есть.
Значения P(B2|A1) и P(A1) уже известны из расчёта выше, поэтому:
P(B2|A1)⋅ P(A1) = 1⋅ 1/3 = 1/3
Если автомобиль находится за дверью под номером три, которую выбрал участник, тогда по условию задачи ведущий с одинаковой вероятностью может выбрать любую из оставшихся дверей. Это значит, что P(B2|A3) = 1/2. Тогда второе ненулевое слагаемое рассчитывается так:
P(B2|A3) • P(A3) = 1/2 • 1/3 = 1/6
Таким образом:
P(B2) = 1/3 + 1/6
Шаг 6. Подставим значения в формулу теоремы Байеса
Это значит, что при изменении первоначального решения вероятность угадать автомобиль повышается с 1/2 до 2/3.
Когда ведущий открывает одну из дверей, на первый взгляд кажется, что шансы выиграть автомобиль сами собой повышаются с 1/3 до 1/2, а смена двери на них никак не повлияет. Но математические расчёты показывают, что при смене двери вероятность выиграть автомобиль повышается до 2/3. Причина в том, что учитываются новые данные — дверь, которую открыл ведущий и за которой точно нет автомобиля.
Суть теоремы Байеса в том, что новые данные не формируют убеждение с нуля, а уточняют те, которые уже имеются.
На теореме Байеса основан наивный байесовский классификатор — одна из основных моделей машинного обучения. Однако между теоремой Байеса и наивным байесовским классификатором есть важное отличие: условная независимость. Если в теореме речь идёт о взаимосвязанных событиях, в наивном классификаторе, наоборот, все объекты — события или свойства — независимы. Это может не соответствовать реальности, но такой «наивный» подход упрощает расчёт вероятностей и ускоряет обучение модели.
Разберём, как специалисты по Data Science применяют теорему Байеса в своей работе.
Для примера обратимся к популярному инструменту — платформе Scikit-learn. Это бесплатная библиотека алгоритмов машинного обучения и обучающих датасетов — наборов данных, которые используют для тестирования алгоритмов.
Для примера используем один из обучающих датасетов библиотеки — набор данных по цветкам ириса. В нём собрана информация о 150 образцах растений трёх классов — Iris setosa, Iris virginica и Iris versicolor — по 50 образцов каждого класса. Сами данные представляют собой описание цветков по четырём характеристикам:
● длина чашелистика;
● ширина чашелистика;
● длина лепестка;
● ширина лепестка.
Алгоритм наивного байесовского классификатора также можно загрузить из библиотеки scikit-learn. С помощью алгоритма можно вычислить, с какой вероятностью объект принадлежит к определённому классу цветков ириса при условии, что обладает его характеристиками. Итак, давайте по шагам:
1. Загрузить датасет цветов с помощью библиотеки sсklearn, метода datasets. Для этого нужно запустить Python на компьютере и ввести команду:
from sklearn.datasets import load_iris
iris = load_iris()
2. Выделить в полученном объекте iris обучающие признаки (X) и переменную отнесения к 1 из 3 классов (y):
X = iris.data
y = iris.target
3. С помощью стандартного метода разделения на обучающую и тестовую выборки (train_test_split) выделить 60% на обучение (train) и 40% на отложенную выборку для тестирования алгоритма (test):
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=1)
4. Импортировать один из нескольких примеров моделей реализации алгоритма классификации naive_bayes и с помощью метода fit произвести обучение на обучающей выборке:
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(X_train, y_train)
5. После обучения с помощью метода predict сделать прогноз значений:
y_pred = gnb.predict(X_test)
6. Рассчитать метрику точности — какой процент классов в тестовой выборке совпал с прогнозируемым по модели:
from sklearn import metrics
print("Gaussian Naive Bayes model accuracy(in %):", metrics.accuracy_score(y_test, y_pred)*100)
7. Получить ответ:
Gaussian Naive Bayes model accuracy(in %): 95.0
В разных версиях библиотеки scikit-learn и Python могут быть небольшие расхождения в получившейся метрике точности.
Совет эксперта
Читать также: