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

Содержание

  • Что такое Наивный Байес?
  • Как работает алгоритм наивного Байеса?
  • Предположения наивного Байеса
  • Пример кода
  • Плюсы и минусы наивного Байеса

Что такое Наивный Байес?

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

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

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

Как работает наивный Байес?

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

P(класс | функции) ∝ P(функции | класс) x P(класс) / P(функции)

Где

  • P (класс | признаки) — это апостериорная вероятность класса с учетом входных признаков.
  • P(функции | класс) — это вероятность того, что входные функции заданы классом.
  • P (класс) — это априорная вероятность класса.
  • P(features) — это предельная вероятность свидетельства (т. е. входных признаков).

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

P(features | class) = P(feature_1 | class) x P(feature_2 | class) x … x P(feature_n | class)

где feature_1, feature_2, …, feature_n — входные функции, а P(feature_i | class) — вероятность feature_i с учетом класса.

Просто используя вероятность и априорные вероятности, мы можем упростить формулу для Наивного Байеса до:

P(класс | функции) = коэффициент нормализации x P(feature_1 | класс) x P(feature_2 | класс) x … x

P(feature_n | класс) x P(класс)

Здесь коэффициент нормализации является константой, которая делает сумму вероятностей равной 1, а P(feature_i | class) и P(class) можно оценить, используя обучающие данные.

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

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

  • Gaussian Naive Bayes: этот вариант используется, когда входные признаки являются непрерывными или числовыми. Он предполагает, что входные данные следуют распределению Гаусса, и оценивает среднее значение и дисперсию каждого признака для каждого класса. Этот вариант широко используется в задачах классификации, включающих непрерывные характеристики, например, при прогнозировании цены дома на основе его характеристик.
  • Полиномиальный наивный байесовский метод: этот вариант используется, когда входные функции дискретны или категоричны. Он предполагает, что входные данные подчиняются полиномиальному распределению, и оценивает вероятности каждого признака для каждого класса. Этот вариант широко используется в задачах классификации текста, таких как классификация электронных писем как спам или не спам на основе их содержания.
  • Наивный байесовский метод Бернулли: этот вариант аналогичен полиномиальному наивному байесовскому методу, но используется, когда входные признаки являются бинарными или булевыми. Он предполагает, что входные данные следуют распределению Бернулли, и оценивает вероятность присутствия или отсутствия каждого признака для каждого класса. Этот вариант также широко используется в задачах классификации текстов, таких как классификация документов как положительных или отрицательных на основе наличия или отсутствия определенных слов.

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

Допущение наивного Байеса

Вот важные предположения, которые мы должны учитывать при применении наивного Байеса для моделирования данных:

  • Прежде всего, Наивный Байес предполагает, что входные признаки условно независимы, учитывая метку класса. Таким образом, независимость признаков является одним из наиболее важных предположений для наивного Байеса. В более общем смысле можно сказать, что наличие или отсутствие одного признака не влияет на вероятность появления другого признака.
  • Поскольку наивный байесовский алгоритм рассматривает все входные признаки как одинаково важные при прогнозировании метки класса, равная важность признаков становится вторым предположением.
  • При обучении наивной байесовской модели на данных необходимо учитывать Достаточно данных для обучения, чтобы она могла дать надежную оценку вероятностей входных признаков с учетом метки класса.
  • Данные, которые мы используем для моделирования этого алгоритма, должны иметь отсутствие избыточности, что означает, что функции не должны предоставлять избыточную или перекрывающуюся информацию о метке класса.
  • Обучающие данные, которые мы используем с наивной байесовской моделью, должны иметь сбалансированное распределение классов. Несбалансированное распределение классов может привести к неточности модели, или модель может стать смещенной в сторону перепредставленного класса.

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

Пример кода

Здесь, в этой реализации Наивного Байеса, мы собираемся использовать язык программирования Python, в котором мы получаем модули для создания синтетических данных, разделения данных и функций модели в рамках таких библиотек, как sklearn и NumPy. Начнем реализацию с импорта библиотек и модулей.

Импорт библиотек

импортировать numpy как np

из sklearn.model_selection импорта train_test_split

из sklearn.naive_bayes импортировать GaussianNB

Здесь мы назвали библиотеку NumPy, которую будем использовать для создания синтетических данных и выполнения расчетов, а также модули для разделения и моделирования данных с использованием наивной байесовской модели Гаусса.

Генерация данных

Давайте сделаем набор данных

# Создать случайные данные

X = np.random.rand(1000, 5)

y = np.random.randint(0, 2, size=1000)

Здесь мы сгенерировали случайные данные с 1000 выборками и пятью функциями, где целевая переменная (y) является меткой двоичного класса.

Разделим данные

# Разделить данные на наборы для обучения и тестирования

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0,3)

Здесь мы разделили синтетические данные на 70% обучающих и 30% тестовых данных.

Обучение модели

Теперь мы можем обучить гауссовскую наивную байесовскую модель, используя обучающие данные. Давайте создадим объект модели.

# Создать наивную байесовскую модель

модель = GaussianNB()

Давайте поместим данные обучения в наивную байесовскую модель (выше определенного объекта модели).

# Обучение модели на обучающих данных

model.fit(X_train, y_train)

Выход:

Здесь мы обучили объект модели на обучающих данных. Теперь мы можем делать прогнозы и оценивать нашу модель.

Оценка модели

Давайте сделаем прогноз на основе нашей обученной модели.

# Делать прогнозы на данных тестирования

y_pred = модель.предсказание(X_тест)

давайте оценим модель на основе прогнозов, сделанных самой моделью.

# Оценить производительность модели

точность = np.mean (y_pred == y_test)

print("Точность: ", точность)

Выход:

# Оценить производительность модели

точность = np.mean (y_pred == y_test) * 100

print("Точность: ", точность,'%')

Выход:

Здесь мы видим, что наша модель работает почти с 50% точностью. Тем не менее, это не оптимальная производительность, но наша цель узнать о реализации выполнена.

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

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

Плюсы и минусы наивного Байеса

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

Плюсы

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

Минусы

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

Заключительные слова

В приведенной выше статье мы обсудили наивный алгоритм Байеса, который является одним из популярных алгоритмов в области машинного обучения. Глядя на его основы, мы можем сказать, что он в основном основан на теориях вероятности. Этот алгоритм может быть хорошим выбором для работы, когда требуется меньше вычислений или объекты в наборе данных независимы друг от друга или имеют очень низкую корреляцию. Мы также обсудили предположение, которое необходимо принять во внимание, а также плюсы и минусы этого алгоритма.

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

О ДСВ

DSW, специализирующаяся на искусственном интеллекте и науке о данных, предоставляет платформы и решения для использования данных с помощью ИИ и расширенной аналитики. С офисами, расположенными в Мумбаи, Индия, и Дублине, Ирландия, компания обслуживает широкий круг клиентов по всему миру.

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

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