Наивный байесовский классификатор предполагает что
Перейти к содержимому

Наивный байесовский классификатор предполагает что

  • автор:

1.9. Наивные методы Байеса ¶

Наивные методы Байеса — это набор алгоритмов контролируемого обучения, основанных на применении теоремы Байеса с «наивным» предположением об условной независимости между каждой парой характеристик при заданном значении переменной класса. Теорема Байеса утверждает следующее отношение, учитывая переменную классаy и зависимый вектор признаков x1 через xn,:
$$P(y \mid x_1, \dots, x_n) = \frac $$

Используя наивное предположение об условной независимости,
$$P(x_i | y, x_1, \dots, x_, x_, \dots, x_n) = P(x_i | y),$$

для всех i, это отношение упрощается до
$$P(y \mid x_1, \dots, x_n) = \frac^ P(x_i \mid y)> $$

С P(x1,…,xn) является константой с учетом входных данных, мы можем использовать следующее правило классификации:
$$P(y \mid x_1, \dots, x_n) \propto P(y) \prod_^ P(x_i \mid y)$$
$$\hat = \arg\max_y P(y) \prod_^ P(x_i \mid y),$$
$$P(y \mid x_1, \dots, x_n) \propto P(y) \prod_^ P(x_i \mid y)$$
$$\hat = \arg\max_y P(y) \prod_^ P(x_i \mid y),$$

и мы можем использовать оценку Maximum A Posteriori (MAP) для оценки $P(y)$ а также $P(x_i∣y)$; первое — это относительная частота занятий $y$ в обучающем наборе.

Различные наивные байесовские классификаторы различаются в основном предположениями, которые они делают относительно распределения $P(x_i∣y)$.

Несмотря на свои явно чрезмерно упрощенные предположения, наивные байесовские классификаторы довольно хорошо работают во многих реальных ситуациях, хорошо документируя классификацию и фильтрацию спама. Им требуется небольшой объем обучающих данных для оценки необходимых параметров. (По теоретическим причинам, почему наивный байесовский метод хорошо работает и с какими типами данных он работает, см. Ссылки ниже.)

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

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

  • Х. Чжан (2004). Оптимальность наивного Байеса. Proc. FLAIRS.

1.9.1. Гауссовский наивный байесовский

GaussianNB реализует гауссовский наивный байесовский алгоритм для классификации. Предполагается, что вероятность появления признаков гауссова:
$$P(x_i \mid y) = \frac<\sqrt<2\pi\sigma^2_y>> \exp\left(-\frac<(x_i — \mu_y)^2>\right)$$

Параметры $\sigma_y$ а также $\mu_y$ оцениваются с использованием максимального правдоподобия.

>>> from sklearn.datasets import load_iris >>> from sklearn.model_selection import train_test_split >>> from sklearn.naive_bayes import GaussianNB >>> X, y = load_iris(return_X_y=True) >>> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) >>> gnb = GaussianNB() >>> y_pred = gnb.fit(X_train, y_train).predict(X_test) >>> print("Number of mislabeled points out of a total %d points : %d" . % (X_test.shape[0], (y_test != y_pred).sum())) Number of mislabeled points out of a total 75 points : 4

1.9.2. Мультиномиальных Наивный Байес

MultinomialNB реализует наивный байесовский алгоритм для полиномиально распределенных данных и является одним из двух классических наивных байесовских вариантов, используемых в классификации текста (где данные обычно представлены как счетчики векторов слов, хотя векторы tf-idf также хорошо работают на практике) . Распределение параметризуется векторами $\theta_y = (\theta_,\ldots,\theta_)$ для каждого класса $y$, где $n$ — количество функций (в классификации текста — размер словарного запаса) и $\theta_$ это вероятность $P(x_i \mid y)$ особенности $i$ входящие в выборку, принадлежащую к классу $y$.

Параметры $\theta_y$ оценивается сглаженной версией максимального правдоподобия, то есть подсчетом относительной частоты:
$$\hat = \frac< N + \alpha>$$

где $N_ = \sum_ x_i$ это количество раз $i$ появляется в образце класса $y$ в тренировочном наборе $T$, а также $N_ = \sum_^ N_$ общее количество всех функций для класса $y$.

Сглаживающие приоры $\alpha \ge 0$ учитывает особенности, отсутствующие в обучающих выборках, и предотвращает нулевые вероятности в дальнейших вычислениях. Параметр $\alpha = 1$ называется сглаживанием Лапласа, а $\alpha < 1$ называется сглаживанием Лидстоуна.

1.9.3. Дополнение наивного Байеса

ComplementNB реализует наивный байесовский алгоритм дополнения (CNB). CNB — это адаптация стандартного полиномиального наивного байесовского алгоритма (MNB), который особенно подходит для несбалансированных наборов данных. В частности, CNB использует статистику из дополнения каждого класса для вычисления весов модели. Изобретатели CNB эмпирически показали, что оценки параметров для CNB более стабильны, чем для MNB. Кроме того, CNB регулярно превосходит MNB (часто со значительным отрывом) в задачах классификации текста. Порядок расчета весов следующий:
$$\\hat = \frac d_> \sum_ d_>$$
$$w_ = \log \hat$$
$$w = \frac |w_|>$$

где суммирования по всем документам $j$ не в классе $c, d_$ это либо значение count, либо tf-idf термина $i$ в документе $j$, $α_i$ является сглаживающим гиперпараметром, подобным тому, который находится в MNB, и $\alpha = \sum_ \alpha_i$. Вторая нормализация направлена ​​на то, чтобы более длинные документы преобладали над оценками параметров в MNB. Правило классификации:
$$\hat = \arg\min_c \sum_ t_i w_$$

т. е. документ отнесен к классу, который является самым плохим дополнением.

  • Ренни, Дж. Д., Ши, Л., Тиван, Дж., И Каргер, Д. Р. (2003). Устранение ошибочных предположений наивных байесовских классификаторов текста. В ICML (том 3, стр. 616-623).

1.9.4. Бернулли Наивный Байес

BernoulliNB реализует простые байесовские алгоритмы обучения и классификации данных, которые распределяются согласно многомерному распределению Бернулли; то есть может быть несколько функций, но предполагается, что каждая из них является двоичной (Бернулли, логическая) переменной. Следовательно, этот класс требует, чтобы образцы были представлены как векторы признаков с двоичными значениями; если переданы данные любого другого типа, BernoulliNB экземпляр может преобразовать свой ввод в двоичную форму (в зависимости от binarize параметра).

Решающее правило для наивного Байеса Бернулли основано на
$$P(x_i \mid y) = P(i \mid y) x_i + (1 — P(i \mid y)) (1 — x_i)$$

которое отличается от правила полиномиального NB тем, что в нем явно наказывается отсутствие признака $i$ это показатель класса y, где полиномиальный вариант просто игнорирует отсутствующую функцию.

В случае классификации текста для обучения и использования этого классификатора могут использоваться векторы появления слов (а не векторы подсчета слов). BernoulliNB может работать лучше с некоторыми наборами данных, особенно с более короткими документами. Если позволяет время, желательно оценить обе модели.

  • CD Мэннинг, П. Рагхаван и Х. Шютце (2008). Введение в поиск информации. Издательство Кембриджского университета, стр. 234-265.
  • А. МакКаллум и К. Нигам (1998). Сравнение моделей событий для классификации наивного байесовского текста. Proc. Практикум AAAI / ICML-98 по обучению категоризации текста, стр. 41-48.
  • В. Метсис, И. Андроутсопулос и Г. Палиурас (2006). Фильтрация спама с помощью наивного байесовского метода — какой наивный байесовский метод? 3-я конф. по электронной почте и защите от спама (CEAS).

1.9.5. Категориальный Наивный Байес

CategoricalNB реализует категориальный наивный алгоритм Байеса для категориально распределенных данных. Предполагается, что каждая функция, описываемая индексом $i$, имеет свое категориальное распределение.

Для каждой функции i в тренировочном наборе $X$, CategoricalNB оценивает категориальное распределение для каждого признака $i$ из $X$, обусловленного классом $y$. Набор индексов образцов определяется как $J=$, с участием m как количество образцов.

Вероятность категории $t$ в особенности $i$ данный класс c оценивается как:
$$P(x_i = t \mid y = c \: ;\, \alpha) = \frac < N_+ \alpha> + \alpha n_i>,$$

где $N_ = | = t, y_j = c>|$ это количество раз категория $t$ появляется в образцах $x_i$, которые принадлежат к классу $c$, $N_ = |< j \in J\mid y_j = c>|$ — количество образцов с классом c, $α$ параметр сглаживания и $n_i$ количество доступных категорий функций $i$.

CategoricalNB предполагает, что матрица выборки $X$ кодируется (например, с помощью OrdinalEncoder ) таким образом, что все категории для каждой функции $i$ представлены числами $0, …, n_i — 1$ где $n_i$ количество доступных категорий функций $i$.

1.9.6. Подгонка нестандартной наивной байесовской модели

Наивные байесовские модели могут использоваться для решения крупномасштабных задач классификации, для которых полный обучающий набор может не поместиться в памяти. Чтобы справиться с этим делом, MultinomialNB , BernoulliNB , и GaussianNB выставить partial_fit метод , который может быть использован пошагово , как это сделано с другими классификаторами , как показано в вне ядра классификации текстовых документов . Все наивные байесовские классификаторы поддерживают взвешивание выборки.

В отличие от fit метода, при первом вызове partial_fit необходимо передать список всех ожидаемых меток классов.

Для обзора доступных стратегий в scikit-learn см. Также документацию по внешнему обучению .

Вызов метода partial_fit наивных моделей Байеса представляет некоторую вычислительную нагрузку. Рекомендуется использовать как можно большие размеры блоков данных, то есть насколько позволяет доступная оперативная память.

Если вы хотите помочь проекту с переводом, то можно обращаться по следующему адресу support@scikit-learn.ru
© 2007 — 2020, scikit-learn developers (BSD License).

6 простых шагов для освоения наивного байесовского алгоритма (с примером кода на Python)

DataReview.info

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

Перед вами обучающий набор данных, содержащий несколько сотен тысяч элементов и большое количество признаков. Что вы будете делать? На вашем месте я бы воспользовался наивным байесовским алгоритмом (naive Bayes algorithm, НБА), который превосходит по скорости многие другие алгоритмы классификации. В его основе лежит теорема Байеса.

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

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

Наивный байесовский алгоритм – это алгоритм классификации, основанный на теореме Байеса с допущением о независимости признаков. Другими словами, НБА предполагает, что наличие какого-либо признака в классе не связано с наличием какого-либо другого признака. Например, фрукт может считаться яблоком, если он красный, круглый и его диаметр составляет порядка 8 сантиметров. Даже если эти признаки зависят друг от друга или от других признаков, в любом случае они вносят независимый вклад в вероятность того, что этот фрукт является яблоком. В связи с таким допущением алгоритм называется «наивным».

Модели на основе НБА достаточно просты и крайне полезны при работе с очень большими наборами данных. При своей простоте НБА способен превзойти даже некоторые сложные алгоритмы классификации.

Теорема Байеса позволяет рассчитать апостериорную вероятность P(c|x) на основе P(c), P(x) и P(x|c).

На рисунке выше:

  • P(c|x) – апостериорная вероятность данного класса c (т.е. данного значения целевой переменной) при данном значении признака x.
  • P(c) – априорная вероятность данного класса.
  • P(x|c) – правдоподобие, т.е. вероятность данного значения признака при данном классе.
  • P(x) – априорная вероятность данного значения признака.

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

Давайте рассмотрим пример. Ниже представлен обучающий набор данных, содержащий один признак «Погодные условия» (weather) и целевую переменную «Игра» (play), которая обозначает возможность проведения матча. На основе погодных условий мы должны определить, состоится ли матч. Чтобы сделать это, необходимо выполнить следующие шаги.

Шаг 1. Преобразуем набор данных в частотную таблицу (frequency table).

Шаг 2. Создадим таблицу правдоподобия (likelihood table), рассчитав соответствующие вероятности. Например, вероятность облачной погоды (overcast) составляет 0,29, а вероятность того, что матч состоится (yes) – 0,64.

Sunny – Солнечная погода
Rainy – Дождливая погода
Overcast – Облачная погода

Шаг 3. С помощью теоремы Байеса рассчитаем апостериорную вероятность для каждого класса при данных погодных условиях. Класс с наибольшей апостериорной вероятностью будет результатом прогноза.

Задача. Состоится ли матч при солнечной погоде (sunny)?

Мы можем решить эту задачу с помощью описанного выше подхода.

P(Yes | Sunny) = P(Sunny | Yes) * P(Yes) / P(Sunny)

Здесь мы имеем следующие значения:

P(Sunny | Yes) = 3 / 9 = 0,33

P(Sunny) = 5 / 14 = 0,36

Значит, при солнечной погоде более вероятно, что матч состоится.

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

Положительные и отрицательные стороны наивного байесовского алгоритма

Положительные стороны:

  • Классификация, в том числе многоклассовая, выполняется легко и быстро.
  • Когда допущение о независимости выполняется, НБА превосходит другие алгоритмы, такие как логистическая регрессия (logistic regression), и при этом требует меньший объем обучающих данных.
  • НБА лучше работает с категорийными признаками, чем с непрерывными. Для непрерывных признаков предполагается нормальное распределение, что является достаточно сильным допущением.

Отрицательные стороны:

  • Если в тестовом наборе данных присутствует некоторое значение категорийного признака, которое не встречалось в обучающем наборе данных, тогда модель присвоит нулевую вероятность этому значению и не сможет сделать прогноз. Это явление известно под названием «нулевая частота» (zero frequency). Данную проблему можно решить с помощью сглаживания. Одним из самых простых методов является сглаживание по Лапласу (Laplace smoothing).
  • Хотя НБА является хорошим классификатором, значения спрогнозированных вероятностей не всегда являются достаточно точными. Поэтому не следует слишком полагаться на результаты, возвращенные методом predict_proba.
  • Еще одним ограничением НБА является допущение о независимости признаков. В реальности наборы полностью независимых признаков встречаются крайне редко.

4 приложения наивного байесовского алгоритма

  • Классификация в режиме реального времени. НБА очень быстро обучается, поэтому его можно использовать для обработки данных в режиме реального времени.
  • Многоклассовая классификация. НБА обеспечивает возможность многоклассовой классификации. Это позволяет прогнозировать вероятности для множества значений целевой переменной.
  • Классификация текстов, фильтрация спама, анализ тональности текста. При решении задач, связанных с классификацией текстов, НБА превосходит многие другие алгоритмы. Благодаря этому, данный алгоритм находит широкое применение в области фильтрации спама (идентификация спама в электронных письмах) и анализа тональности текста (анализ социальных медиа, идентификация позитивных и негативных мнений клиентов).
  • Рекомендательные системы. Наивный байесовский классификатор в сочетании с коллаборативной фильтрацией (collaborative filtering) позволяет реализовать рекомендательную систему. В рамках такой системы с помощью методов машинного обучения и интеллектуального анализа данных новая для пользователя информация отфильтровывается на основании спрогнозированного мнения этого пользователя о ней.

Как создать базовую модель на основе наивного байесовского алгоритма с помощью Python?

В этом нам поможет библиотека scikit-learn. Данная библиотека содержит три типа моделей на основе наивного байесовского алгоритма:

  • Gaussian (нормальное распределение). Модель данного типа используется в случае непрерывных признаков и предполагает, что значения признаков имеют нормальное распределение.
  • Multinomial (мультиномиальное распределение). Используется в случае дискретных признаков. Например, в задаче классификации текстов признаки могут показывать, сколько раз каждое слово встречается в данном тексте.
  • Bernoulli (распределение Бернулли). Используется в случае двоичных дискретных признаков (могут принимать только два значения: 0 и 1). Например, в задаче классификации текстов с применением подхода «мешок слов» (bag of words) бинарный признак определяет присутствие (1) или отсутствие (0) данного слова в тексте.

В зависимости от набора данных вы можете выбрать подходящую модель из описанных выше. Далее представлен пример кода для модели Gaussian.

Пример кода на Python

#Import Library of Gaussian Naive Bayes model from sklearn.naive_bayes import GaussianNB import numpy as np #assigning predictor and target variables x= np.array([[-3,7],[1,5], [1,2], [-2,0], [2,3], [-4,0], [-1,1], [1,1], [-2,2], [2,7], [-4,1], [-2,7]]) Y = np.array([3, 3, 3, 3, 4, 3, 3, 4, 3, 4, 4, 4])
#Create a Gaussian Classifier model = GaussianNB() # Train the model using the training sets model.fit(x, Y) #Predict Output predicted= model.predict([[1,2],[3,4]]) print predicted Output: ([3,4])

Мы рассмотрели базовую модель на основе НБА. Эффективность базовой модели можно повысить посредством настройки параметров, а также с помощью других методов, которые мы обсудим ниже. Чтобы получить более подробную информацию о классификации текстов с помощью НБА, я рекомендую вам обратиться к следующему документу.

Советы по оптимизации модели

  • Если значения непрерывных признаков не обладают нормальным распределением, тогда с помощью соответствующего преобразования необходимо привести их к такому распределению.
  • Если тестовый набор данных имеет проблему «нулевой частоты»()евой сатотый набор данных имеет проблему «лениюных ии текста с помощью данного алгоритма, я рекомендую вам обратиться к , необходимо применить сглаживание по Лапласу.
  • Если два признака имеют высокую корреляцию, один из них следует удалить, иначе они будут вносить удвоенный вклад, завышая тем самым свою значимость.
  • Наивный байесовский классификатор имеет набор параметров, доступных для настройки. Например, alpha=1 – активирует сглаживание по Лапласу, fit_prior=[True | False] – определяет, обучать ли модель априорным вероятностям классов. Полный список параметров можно найти здесь. Я рекомендую сосредоточиться на предобработке данных и отборе признаков.
  • Следует отметить, что в случае НБА использование ансамблевых методов, таких как бэггинг (bagging) и бустинг (boosting), не дает результатов. Данные подходы направлены на уменьшение дисперсии, что неприменимо по отношению к НБА.

Заключение

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

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

Байесовский классификатор (Bayesian classifier)

В машинном обучении — семейство простых вероятностных классификаторов, основанных на использовании теоремы Байеса и «наивном» предположении о независимости признаков классифицируемых объектов.

Анализ на основе байесовской классификации активно изучался и использовался начиная с 1950-х годов в области классификации документов, где в качестве признаков использовались частоты слов. Алгоритм является масштабируемым по числу признаков, а по точности сопоставим с другими популярными методами, такими как машины опорных векторов.

Как и любой классификатор, байесовский присваивает метки классов наблюдениям, представленным векторами признаков. При этом предполагается, что каждый признак независимо влияет на вероятность принадлежности наблюдения к классу. Например, объект можно считать яблоком, если он имеет округлую форму, красный цвет и диаметр около 10 см. Наивный байесовский классификатор «считает», что каждый из этих признаков независимо влияет на вероятность того, что этот объект является яблоком, независимо от любых возможных корреляций между характеристиками цвета, формы и размера.

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

По сути, байесовский классификатор представляет собой вероятностную модель. Пусть задано множество наблюдений, каждое из которых представлено вектором признаков x = ( x 1 , x 2 , . . . , x n ) . Модель присваивает каждому наблюдению условную вероятность p ( C k | x 1 , x 2 , . . . , x n ) , C k — класс.

Используя теорему Байеса, можно записать:

p ( C k | x ) = p ( C k ) p ( x | C k ) p ( x )

В этой формуле интерес с точки зрения классификации представляет только числитель, поскольку знаменатель от метки классов не зависит и является константой. При условии, что признаки независимы, можно показать, что

p ( C k | x 1 , x 2 , . . . , x n ) = p ( C k ) p ( x 1 | C k ) p ( x 2 | C k ) . . . p ( x n | C k ) = ∏ n p ( x i | C k ) .

Тогда простой байесовский классификатор можно рассматривать как функцию, которая каждому выходному значению модели присваивает метку класса, т.е. y = C k следующим образом:

y = arg k max 1. k ∏ n p ( x i | C k )

Таким образом, выбирается класс C k , который максимизирует функцию правдоподобия, представляющую собой произведение условных вероятностей значений признака x i по каждому классу C k .

Вероятностный классификатор предсказывает класс с самой большой условной вероятностью для заданного вектора признаков x .

Наивный байесовский классификатор предполагает что

  • P(A | B) – апостериорная вероятность (что A из B истинно)
  • P(A) – априорная вероятность (независимая вероятность A)
  • P(B | A) – вероятность данного значения признака при данном классе. (что B из A истинно)
  • P(B) – априорная вероятность при значении нашего признака. (независимая вероятность B)

Реализация на языке python

### Загружаем библиотеки и данные import numpy as np import pandas as pd from sklearn.datasets import load_iris from scipy.stats import norm data = load_iris() X, y, column_names = data['data'], data['target'], data['feature_names'] X = pd.DataFrame(X, columns = column_names) ### Разбиваем данные from sklearn.model_selection import train_test_split X_train, X_val, y_train, y_val = train_test_split(X, y, random_state=44) means = X_train.groupby(y_train).apply(np.mean) stds = X_train.groupby(y_train).apply(np.std) ### Вычисляем априорную вероятность класса probs = X_train.groupby(y_train).apply(lambda x: len(x)) / X_train.shape[0] ### Вычисляем вероятность для Теоремы Байеса для каждого элемента y_pred = [] # каждый элемент в валидационной части данных for elem in range(X_val.shape[0]): p = <> # для каждого возможного класса for cl in np.unique(y_train): # априорная вероятность взятого ранее класса p[cl] = probs.iloc[cl] # для каждого столбца в датасете for index, param in enumerate(X_val.iloc[elem]): # умножаем вероятность того, что данное значение столбца # будет принадлежать распределению для выбранного класса p[cl] *= norm.pdf(param, means.iloc[cl, index], stds.iloc[cl, index]) y_pred.append(pd.Series(p).values.argmax()) ### Посмотрим точность нашего предсказания несколькими методами # ручной классификатор from sklearn.metrics import accuracy_score accuracy1 = accuracy_score(y_val, y_pred) # классификатор из библиотеки sklearn from sklearn.naive_bayes import GaussianNB model = GaussianNB() model.fit(X_train, y_train) accuracy2 = accuracy_score(y_val, model.predict(X_val)) print(accuracy1) print(accuracy2) 

Результат работы кода:

0.9210526315789473 0.9210526315789473 

Базовая модель с самой простой настройкой дает нам точность более чем в 90% на задаче классификации цветков ириса .

Плюсы и минусы

  • Алгоритм легко и быстро предсказывает класс тестового набора данных. Он также хорошо справляется с многоклассовым прогнозированием.
  • Производительность наивного байесовского классификатора лучше, чем у других простых алгоритмов, таких как логистическая регрессия. Более того, вам требуется меньше обучающих данных.
  • Он хорошо работает с категориальными признаками(по сравнению с числовыми). Для числовых признаков предполагается нормальное распределение, что может быть серьезным допущением в точности нашего алгоритма.
  • Если переменная имеет категорию (в тестовом наборе данных), которая не наблюдалась в обучающем наборе данных, то модель присвоит 0 (нулевую) вероятность и не сможет сделать предсказание. Это часто называют нулевой частотой. Чтобы решить эту проблему, мы можем использовать технику сглаживания. Один из самых простых методов сглаживания называется оценкой Лапласа.
  • Значения спрогнозированных вероятностей, возвращенные методом predict_proba, не всегда являются достаточно точными.
  • Ограничением данного алгоритма является предположение о независимости признаков. Однако в реальных задачах полностью независимые признаки встречаются крайне редко.

В каких областях использовать?

Алгоритм наивного Байеса – это классификатор, обучение которого идет очень быстро. Следовательно, данный инструмент идеально подходит для составления прогнозов в реальном времени.

Также этот алгоритм также хорошо известен благодаря функции многоклассового прогнозирования. Мы можем предсказать вероятность нескольких классов целевой переменной.

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

  • Система рекомендаций. В сочетании алгоритма с методами коллаборативной фильтрации (Collaborative Filtering) мы можем создать рекомендательную систему, которая использует машинное обучение и методы добычи данных для учета невидимой информации (такой, как поиск фильмов пользователем и длительность просмотра). Цель – предсказание того, понравится ли пользователю данный ресурс/продукт или нет.
  • Фильтрация спама и классификация текста. Наивный байесовский классификатор в основном используются для классификации текстов (благодаря лучшему результату в многоклассовых проблемах и правилу независимости) и имеет более высокую точность по сравнению с другими алгоритмами. В результате он широко используется в фильтрации спама (в электронной почте) и анализе настроений (к примеру, социальных сетей, для выявления положительных и отрицательных настроений клиентов).

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

Параллельно вы также научились реализовывать его на языке Python. Наивный Байесовский классификатор – одих из самых простых и эффективных алгоритмов машинного обучения.

Несмотря на значительные успехи других методов за последние несколько лет, Байес все так же доказывает свою ценность. Он успешно применяется во многих приложениях, от текстовой аналитики и спам-фильтров до систем рекомендаций.

Хочу освоить алгоритмы и структуры данных, но сложно разобраться самостоятельно. Что делать?

Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения: не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры данных», на котором в формате еженедельных вебинаров вы:

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

Курс подходит как junior, так и middle-разработчикам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *