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

Девятый алгоритм из цикла «Топ-10 data mining адгоритмов»Naive Bayes.

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

Что означает слово «независимо»? 2 параметра называются независимыми, когда значение одного параметра не оказывает влияния на второй.

Например:

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

Но давайте посмотрим дальше, все ли параметры независимы?

К сожалению, ответ – нет. Есть 3 соотношения, которые зависимы:

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

    Почему метод называется наивным? Предположение, что все параметры набора данных независимы – это довольно наивное предположение. Обычно так не бывает.

    Кто такой Байес? Томас Байес был английским математиком-статистиком, в честь которого была названа теорема Байеса.

    По сути, теорема позволяет нам предсказать класс на основании набора параметров, используя вероятность.

    Упрощенное уравнение для классификации выглядит так:

    байесовский классификатор

    Давайте взглянем на него поподробнее.

    Что означает это уравнение? Уравнение находит вероятность класса А, на основании параметров 1 и 2. Другими словами, если вы видите параметры 1 и 2, то, вероятно, это данные класса А.

    Уравнение читается следующим образом: Вероятность [выявления] класса А на основании параметров 1 и 2 – это дробь.

    Числитель дроби – это вероятность параметра 1, принадлежащего классу А, умноженная на вероятность параметра 2, принадлежащего классу А, умноженная на вероятность класса А.
    Знаменатель – это вероятность параметра 1 умноженная на вероятность параметра 2.

    Есть какой-нибудь пример реализации наивного байесовского классификатора? Ниже представлен отличный пример, взятый из треда Stack Overflow.

    Вот условия:

  • У нас есть тренировочный набор данных о 1000 фруктах.
  • Фрукт может быть бананом, апельсином или каким-нибудь другим (это классы).
  • Фрукт может быть длинным, сладким или желтым (это параметры).
  • классы фруктов

    Что мы видим в этом тренировочном наборе данных?

  • Из 500 бананов 400 длинные, 350 сладкие и 450 желтые;
  • Среди 300 апельсинов нет ни одного длинного, но оказалось 150 сладких и 300 желтых.
  • Из оставшихся 200 фруктов 100 оказались длинными, 150 сладкими и 50 желтыми.
  • Если мы получим только параметры – длину, сладость и цвет фрукта (не зная его класса), то сможем вычислить вероятность того, что фрукт окажется бананом, апельсином или чем-то другим.

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

    Для вычисления вероятности нужно проделать 4 простых шага:

    Шаг 1: Чтобы вычислить вероятность того, что неизвестный фрукт – это банан, давайте сначала решим, похож ли этот фрукт на банан. Вот как вычисляется вероятность класса «Банан» на основании параметров «длинный», «сладкий», «желтый»:

    P(Banana|Long, Sweet, Yellow)

    Выглядит точно так же как уравнение, описанное выше.

    Шаг 2: Начнем с числителя и подставим все значения в уравнение:

    P(Long|Banana) = 400/500 = 0.8
    P(Sweet|Banana) = 350/500 = 0.7
    P(Yellow|Banana) = 450/500 = 0.9
    P(Banana) = 500/1000 = 0.5

    Перемножив значения (согласно уравнению), мы получим:

    0.8 x 0.7 x 0.9 x 0.5 = 0.252

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

    Шаг 4: Проделаем те же вычисления для других классов:

    P(Orange|Long, Sweet, Yellow) = 0
    P(Other|Long, Sweet, Yellow) = 0.01875

    Поскольку 0,252 больше, чем 0,01875, то наивный байесовский алгоритм классифицирует этот длинный, сладкий и желтый фрукт как банан.

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

    Почему стоит использовать наивный байесовский классификатор? Как вы можете заметить в примере выше, алгоритм состоит из простой арифметики. Это простые вычисления: умножение и деление.

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

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

    Где он используется? Реализации алгоритма могут быть найдены в Orange, scikit-learn, Weka и R.

    Источник

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

    Байесовский классификатор в примерах (видео)

    Реализация Naive Bayes в R

    Пример 1. Пакет «e1071»

    Источник примера 1.

    Пример 2. Классификация ирисов

    Источник примера 2

    Другие примеры и использование пакета «naivebayes» здесь

    Реализация Naive Bayes на Питоне

    Пример 1. Простой (Гаусс)

    Источник примера 1

    Пример 2. Фильтрация спама в e-mail (+ сравнение Naive Bayes и SVM)

    Источник примера 2 и датасет здесь

    Пример 3. Пример 4.

    Data Scientist # 1

    Машинное обучение, большие данные, наука о данных, анализ данных, цифровой маркетинг, искусственный интеллект, нейронные сети, глубокое обучение, data science, data scientist, machine learning, artificial intelligence, big data, deep learning

    Данные — новый актив!

    Эффективно управлять можно только тем, что можно измерить.
    Copyright © 2016-2021 Data Scientist. Все права защищены.