Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40_алгоритмов_Python.pdf
Скачиваний:
8
Добавлен:
07.04.2024
Размер:
13.02 Mб
Скачать

216

Глава 7. Традиционные алгоритмы обучения с учителем

После выполнения кода получим следующие значения в качестве выходных данных (рис. 7.22).

Рис. 7.22

Наивный байесовский алгоритм

Основанный на теории вероятностей наивный байесовский алгоритм — один из простейших алгоритмов классификации. При правильном использовании он способен давать точные предсказания. Наивный байесовский алгоритм назван так по двум причинам:

zz он базируется на наивном предположении, что существует независимость между признаками и входной переменной;

zzон основан на теореме Байеса.

Этот алгоритм пытается классифицировать экземпляры на основе вероятностей предыдущих атрибутов/экземпляров, предполагая полную независимость атрибутов.

Существуют три типа событий.

zz Независимые события не влияют на вероятность возникновения другого со­ бытия (например, получение электронного письма с предложением бесплат­ ного участия в техническом мероприятии и реорганизация компании).

zz Зависимые события влияют на вероятность наступления других событий‚ то есть каким-то образом связаны (например, на вероятность того, что вы по­ падете на конференцию вовремя, может повлиять забастовка персонала авиакомпании или задержка рейса).

zzВзаимоисключающие события не могут происходить одновременно (напри­ мер, вероятность выпадения тройки и шестерки при одном броске кости равна 0 — эти два результата являются взаимоисключающими).

Теорема Байеса

Теорема Байеса используется для вычисления условной вероятности между двумя независимыми событиями, A и B. Вероятность того, что события A и B

Алгоритмы классификации

217

произойдут, представлена P(A) и P(B). Условная вероятность представле­ на P(B | A) и означает, что событие B произойдет, если событие A уже прои­ зошло:

Вычисление вероятностей

Наивный байесовский алгоритм основан на фундаментальных принципах теории вероятностей. Вероятность возникновения одного события (наблюда­ емая вероятность) рассчитывается так: количество раз, когда событие произо­ шло, делится на общее количество процессов, которые могли привести к это­ му событию. Например, колл-центр получает в исследуемый день более 100 звонков в службу поддержки, а весь предыдущий месяц получал 50 звонков в день. Необходимо подсчитать вероятность того, что на вызов ответят менее чем за 3 минуты, основываясь на предыдущих случаях, когда вызов был при­ нят. Если колл-центру удастся уложиться в это время в 27 случаях, то наблю­ даемая вероятность того, что на 100 звонков ответят менее чем за 3 минуты, будет следующей:

P (100 звонков до 3 мин) = (27/50) = 0.54 (54 %).

На 100 звонков можно ответить менее чем за 3 минуты примерно в половине случаев, основываясь на записях о 50 случаях, когда это происходило в про­ шлом.

Правила умножения для независимых (AND) событий

Чтобы рассчитать вероятность одновременного возникновения двух или более событий, подумайте, являются ли события зависимыми. Если они независимы, используется простое правило умножения:

P(событие 1 AND событие 2) = P(событие 1) * P(событие 2).

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

218

Глава 7. Традиционные алгоритмы обучения с учителем

Если вероятность получения электронного письма о техническом событии со­ ставляет 31 %, а вероятность реорганизации персонала — 82 %, то вероятность того и другого рассчитывается следующим образом:

P(email AND реорганизация) = P(email) * P(реорганизация) =

= (0.31) * (0.82) = 0.2542 (25 %).

Общее правило умножения

Если два или более событий зависят друг от друга, используется общее правило умножения. В действительности эта формула верна как в случае независимых, так и в случае зависимых событий:

P(outcome 1 AND outcome 2)=P(outcome 1)*P(outcome 2 | outcome 1).

Обратите внимание, что P(событие 2 | событие 1) относится к условной веро­ ятности наступления события 2, если событие 1 уже наступило. Формула включает в себя зависимость между событиями. Если события независимы, то условная вероятность не имеет значения, поскольку один исход не влияет на вероятность наступления другого, и P(событие 2 | событие 1) — это просто P (событие 2). В таком случае формула становится простым правилом умно­ жения.

Правила сложения для взаимоисключающих (OR) событий

При расчете вероятности наступления одного из двух взаимоисключающих событий используется следующее простое правило сложения:

P(событие 1 OR событие 2) = P(событие 1) + P(событие 2).

Например, какова вероятность выпадения на игральной кости 6 или 3? Чтобы ответить на этот вопрос, обратите внимание, что эти события не могут произой­ ти одновременно. Вероятность выпадения 6 равна (1/6), и то же самое можно сказать о выпадении 3:

P(6 OR 3) = (1/6) + (1/6) = 0.33 (33 %).

Если события не являются взаимоисключающими и могут происходить одновре­ менно, используйте общую формулу сложения, представленную ниже. Она всегда действительна и для взаимоисключающих, и для взаимонеисключающих событий:

P(событие 1 OR событие 2) = P(событие 1) + + P(событие 2) P(событие 1 AND событие 2).

Алгоритмы классификации

219

Использование наивного байесовского алгоритма для задачи классификации

Теперь давайте используем наивный байесовский алгоритм для решения задачи классификации:

1.Для начала импортируем функцию GaussianNB() и используем ее для обу­ чения модели:

from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(X_train, y_train)

2.Теперь используем обученную модель для предсказания результатов. Спро­ гнозируем метки для контрольного набора X_test:

Предсказание результатов контрольного набора y_pred = classifier.predict(X_test)

cm = metrics.confusion_matrix(y_test, y_pred) cm

3. Выведем матрицу ошибок (рис. 7.23).

Рис. 7.23

4.Теперь выведем метрики производительности, чтобы оценить качество обу­ ченной модели:

accuracy= metrics.accuracy_score(y_test,y_pred) recall = metrics.recall_score(y_test,y_pred) precision = metrics.precision_score(y_test,y_pred) print(accuracy,recall,precision)

Мы получаем результат в виде рис. 7.24.

Рис. 7.24

Среди алгоритмов классификации победителем

становится...

Сравним производительность алгоритмов, которые мы протестировали. Метри­ ки приведены в табл. 7.4.