Продвинутый наивный байесовский метод

Темы, которые будут освещены в этом блоге:

1. Недополнение

2. Вероятность журнала

3. Сглаживание по Лапласу

4. Необходимость распределения вероятностей в наивном Байесе

5. Типы наивного Байеса

Вот ссылка на мой блог о Наивном Байесовском методе, часть 1. Обязательно ознакомьтесь с ним, прежде чем читать этот блог:



Численная стабильность-

  • Чтобы понять “Log Probability” , нам нужно знать концепцию “Underflow”.

Нижнее переполнение -

  • Представление “Decimal” в памяти компьютера является непростой задачей для начинающих программистов. Компьютер не очень дружелюбен к хранению десятичных чисел. Как мы знаем, компьютеры используются “Binary” для хранения любого типа данных, и преобразование десятичных чисел в двоичные является очень сложной задачей. Все это связано с проблемой «недолива».

Что такое Underflow в вычислениях?

  • Underflow может быть проблемой в определенном домене, например “Machine Learning”, где в вычислениях часто используется “Probabilities”. Вероятности равны positive numbers that can be close to zero. Когда multiplying many small probabilities together, the result can be “Underflow”. Одним из распространенных способов избежать переполнения в таких сценариях является выполнение вычислений в log domain, где addition and subtraction используются instead of multiplication and division, тем самым сохраняя higher numerical precision.
  • Недополнение — это состояние, которое может возникнуть when a number is near “Zero” и компьютер больше не сможет точно хранить его в памяти, используя представление с плавающей запятой. Это означает, что, предположим, нам нужно сравнить два значения, близких к нулю, “0.000001 < 0.000003 , но поскольку это число очень мало, “underflow” condition occurs и компьютер запускается treating both numbers as equal to zero,, поэтому мы не можем сравнить оба значения. что было нашей целью.
  • Naïve Bayesтакже имеет проблему “Underflow”.
  • Если мы работаем с данными, где у нас есть 2,500 features or more, нам нужно find probability for all features. И, как мы знаем, вероятность будет между “0 & 1”. Таким образом, у нас будет все 2500 вероятностей признаков, и когда мы их умножим, это может оказаться очень небольшой суммой. Это признак «overflow”, и компьютер не сможет выполнять вычисления в этой ситуации. Поэтому для решения этой проблемы мы используем “LOG PROBABILITIES».

Лог вероятности:

  • В журнале вероятности мы берем «Log» для всей вероятности.
  • В концепции логарифмических вероятностей мы берем логарифм каждой отдельной вероятности. Это преобразование является ключевым в solving the numerical stability issue при работе с вероятностями.
  • Математически мы можем представить это как Log(a * b) = log(a) + log(b). Вместо непосредственного умножения вероятностей мы add their logarithms. Этот метод позволяет нам работать с вероятностями, которые обычно очень малы, избегая неполного числа.
  • Используя логарифмические вероятности, мы можем более эффективно и точно рассчитывать вероятности признаков. Мы сравниваем эти вероятности журналов, чтобы определить, какая из них больше, что помогает в процессах принятия решений и статистическом анализе.

Аддитивное сглаживание по Лапласу:

  • Эта концепция применима ко всем типам наивного байесовского метода, кроме гауссовского наивного байесовского метода.
  • Laplace Additive Smoothing становится важным в таких сценариях, как sentiment analysis, особенно с ограниченными данными. Давайте рассмотрим необходимость аддитивного сглаживания Лапласа на примере "Movie Review" example:
  • Предположим, у нас есть набор данных обзоров фильмов с настроениями:

Отзыв 1: «w1», «w2», «w3» (негативное мнение)

Отзыв 2: «w1», «w3», «w3» (положительное настроение)

Отзыв 3: «w2», «w3», «w1» (негативное мнение)

Выполняем следующие шаги:

  1. Подсчитайте все уникальные слова: "w1", "w2", "w3".
  2. Преобразуйте отзывы в "Bag of Words" представление.

Отзыв 1: «w1» – 1, «w2» – 1, «w3» – 1 (негативное мнение)

Отзыв 2: «w1» – 1, «w3» – 2 (положительное настроение)

Отзыв 3: «w1» – 1, «w2» – 1, «w3» – 1 (негативное мнение)

  • Теперь мы получаем new review, Review 4 с текстовыми данными: 'w1', 'w1', and 'w1'. Нам нужно определить, является ли это review is "negative" or "positive."
  • Вычисление вероятностей без сглаживания Лапласа:

P(+ve | r4) = P(+ve) * P(w1 = 1 | +ve) * P(w2 = 0 | +ve) * P(w3 = 0 | +ve) = (1/3) * (1/1) * (1/2) * (0/2) = 0 P(-ve | r4) = P(-ve) * P(w1 = 1 | -ve) * P(w2 = 0 | -ve) * P(w3 = 0 | -ve) = (2/3) * (2/2) * (0) * (1/2) = 0

В обоих случаях мы получаем "zero" probabilities, что делает невозможным определить, является ли r4 положительным или отрицательным. Кроме того, мы не можем применить преобразование журнала, поскольку one value is "0," and log(0) is "Undefined.'

Нужен Лаплас-

  • Чтобы решить эту проблему, мы используем аддитивное сглаживание Лапласа. Он представляет small, non-zero probability все функции в каждом классе, preventing zero probabilities и делает модель более надежной, особенно при ограниченных данных. Этот метод позволяет нам делать значимые прогнозы, даже когда мы имеем дело с невидимыми словами, такими как те, что в обзоре 4.
  • В аддитивном сглаживании Лапласа мы add something in all probabilities в numerator and denominator обе стороны. “Alpha” added и альфа-значение “1”. Итак, если вероятность наступает “zero” alpha would not let the overall outcome become “zero”.
  • Бывший. Если результат 1/3, в один отзыв добавлю альфу — 1+ α/ 3 + nα
  • “n” value depending upon “type of naïve Bayes” .
  • В “binary Bag of words”, где возможно только значение “yes” or “no”, где значение «n» равно «2».
  • Таким образом, формула становится такой: 1+1/3+2*1 = 1.3333 or 2/5 Это станет новой вероятностью.
  • Таким образом, все значения вероятностей преобразуются, и таким образом ни одна вероятность не будет равна нулю и не сможет предсказывать.
  • За исключением «Гауссовского наивного байесовского метода», во всех других типах наивного байесовского метода используется «аддитивное сглаживание Лапласа».
  • Why do we have “n” in the “denominator” this will can understand by “bias-variance trade off”

Компромисс смещения дисперсии

  • Adding “n” in “denominator” will give flexibility in controlling “Bias &Variance”
  • В зависимости от производительности модели, если у нас есть “High Bias” we can convert this into “Low Bias” by controlling “Alpha Value”. Если это «Высокая дисперсия», мы можем преобразовать ее в «Низкую дисперсию», управляя «Альфа-значением».
  • Этот «компромисс отклонения отклонения» мы можем сделать, потому что мы используем “Alpha” это альфа-значение “Hyperparameter” и так далее different alpha we can have different bias and variance values.

Как изменяются смещение и дисперсия при изменении альфа-значения

Если “Alpha” — “Small” or “Zero” Это приведет к “High Variance” (Overfitting)

Если “Alpha” — “High”, это приведет к “High Bias” (Underfitting)

  • Итак, общий вывод по использованию «аддитивного сглаживания Лапласа» —

Это предотвращает обращение вероятности к нулю.

Он становится гиперпараметром, который, если мы его настроим, может уменьшить «ПЕРЕОБСЛУЖИВАНИЕ» и «НЕДОСТАТОК».

Распределения вероятностей:

  • Поскольку мы знаем, что все типы «Наивного Байеса» следуют «Распределениям вероятностей», поэтому сначала нам нужно понять тип «Распределений вероятностей».

Распределение Бернулли -

  • Это «Дискретное» распределение вероятностей, которое моделирует результат “Binary Random Variable”. (K= 2 , n = 1 )

Ex – Коэффициент зачисления в инженерный колледж равен 0,3. Это означает, что любой конкретный студент имеет шанс 0,3 успешно пройти набор в кампус. Если вы случайным образом выберете учащегося, какова вероятность того, что он: зачислен, не зачислен

P(размещено) = 0,3

P(не размещено) = 0,7

Концепция распределения Бернулли основана на “One Trial”,, где «X» — «случайная переменная». Только “One Outcome” в распределении Бернулли.

(x) = {0,1}, где «0» — «не размещено», а «1» — «размещено»

P(X = k) = Pk + (1-P) (1-K), где P = вероятность получения «1», значение «K» может быть «0» или «1».

Где, если значение «K» равно «0», то в формуле «Pk» будет «ноль» и мы получим «(1-P) (1-K)»это значение.

А если значение “K” равно “1”, то в формуле “(1-P) (1-K)” будет «ноль» и «P» останутся.

2. Категориальное распределение -

Также известно как «Распределение Мультинулли». (k , n = 1)

  • Категориальное распределение — это “Discrete probability distribution”, которое “models the probabilities of different outcomes” в «Категорийной» или «Дискретной случайной величине».
  • В отличие от распределения Бернулли или биномиального распределения, которые имеют дело с двоичными результатами. Each category has an associated probability, and the sum of the probabilities for all categories is equal to 1.

Ex — одиночный бросок кубика, результат которого будет равен {1, 2, 3, 4, 5, 6}, например. К=6

3. Биномиальное распределение-

  • Биномиальное распределение — это дискретное распределение вероятностей, которое моделирует количество успехов в fixed number of independent Bernoulli Trials.
  • [K =2, n ] where k = category , n = trial

Прим. В инженерном колледже коэффициент зачисления составляет 0,3, что означает, что любой конкретный студент имеет шанс 0,3 быть зачисленным в университетский городок. Если вы случайным образом выберете 10 студентов, какова вероятность того, что:

9 из 10 студентов будут зачислены?

3 из 10 студентов будут зачислены?

А. Вероятность того, что 9 из 10 студентов будут зачислены:

Используйте формулу биномиальной вероятности:

P(X = k) = (n choose k) * p^k * (1 — p)^(n — k)

Где:

n — количество испытаний (10 учащихся).

k — количество успешных испытаний (9 студентов получили места).

p — вероятность успеха в одном испытании (0,3).

(n выбирает k) — биномиальный коэффициент, который можно рассчитать как n! / (k! (n — k)!).

P(X = 9) = (10 выберите 9) * (0,3)⁹ * (0,7)^(10–9)

P(X = 9) = 10 * (0.3)⁹ * 0.7

Б. Вероятность того, что 3 из 10 студентов будут зачислены:

Используйте ту же формулу биномиальной вероятности:

P(X = k) = (n choose k) * p^k * (1 — p)^(n — k)

Где:

n — количество испытаний (10 учащихся).

k — количество успешных испытаний (3 ученика получили место).

p — вероятность успеха в одном испытании (0,3).

P(X = 3) = (10 выберите 3) * (0,3)³ * (0,7)^(10–3)

P(X = 3) = 120 * (0.3)³ * 0.7

  • Итак, чтобы найти вероятности этих конкретных результатов, мы используем формулу биномиальной вероятности с заданными значениями n, k и p.
  • Биномиальное распределение применимо, поскольку оно моделирует ситуации, когда имеется фиксированное количество независимых испытаний, каждое из которых имеет постоянную вероятность успеха, и вы want to find the probability of a specific number of successful outcomes (k) out of the total trials (n).

4. Полиномиальное распределение.

  • Это позволяет нам вычислить the probability of observing a specific count or combination of counts for each category in a fixed number of trials.

Прим. В инженерном колледже действует система распределения, согласно которой любой студент имеет шанс 0,3 быть зачисленным посредством набора в кампус, шанс 0,05 отказаться от процесса размещения и шанс 0,65 попытаться, но не получить место. Если вы случайным образом выберете 10 студентов, какова вероятность того, что:

3 учащихся зачислены, 1 учащийся отказывается от зачисления и 6 учащихся пытаются, но не получают места.

Ни один учащийся не был зачислен, 2 учащихся отказались от зачисления и 8 учащихся пытались, но не были зачислены.

Здесь у нас есть три категории: placed, opt-out, and not placed. Нам нужно найти вероятность определенной комбинации отсчетов для каждой категории.

Сначала посчитайте возможные расположения этих трех категорий в 10 испытаниях:

Arrangements = 10! / (3! * 1! * 6!)

Теперь calculate the probability за эту комбинацию:

P(A) = Arrangements * (0.3³) * (0.05¹) * (0.65⁶)

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

Аналогично для этого сценария рассчитайте возможные варианты расположения этих трех категорий в 10 испытаниях:

Arrangements = 10! / (0! * 2! * 8!)

Теперь посчитаем вероятность этой комбинации:

P(B) = Arrangements * (0.3⁰) * (0.05²) * (0.65⁸)

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

  • Помните, что полиномиальное распределение равно used when you have multiple categories (more than two) for each trial, и вам нужно найти probabilities of different combinations of counts for each category in a fixed number of trials.

Типы наивного Байеса:

Гауссов наивный байесовский метод

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

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

Мультиномиальный наивный байесовский метод

Дополнение к наивному Байесу

1. Гауссов наивный байесовский метод:

  • Он используется, когда “All features are Numerical”
  • В распределении Гаусса мы находим любое значение, основанное на “Distribution”, то есть probability never becomes zero. Итак, мы do not need Laplace Additive Smoothing.

2. Категоричный наивный Байес:

  • Это simplest во всех типах наивных байеев.
  • Он создан специально для обработки “Categorical Data”.. Это означает, что all the features are “Categorical” в природе мы используем категорический наивный Байес.

Бывший. Прогноз игры в теннис на основе заданных характеристик «Outlook”, “Temperature”, “Humidity”, “Windy”

Так мы найдем вероятности для “Yes” and “No” в смысле играть в теннис или нет.

Здесь мы можем apply LaPlace additive smoothing.

Теперь давайте воспользуемся Categorical Naive Bayes, чтобы спрогнозировать, стоит ли нам играть в теннис в день со следующими погодными условиями: Outlook=Sunny, Temperature=Hot, Humidity=High, Windy=No.

Рассчитайте вероятности игры в теннис (да или нет) на основе исторических данных. В данном случае P(Play=Yes) = 9/14 and P(Play=No) = 5/14.

Рассчитайте вероятности каждого признака (Перспектива, Температура, Влажность, Ветер) для каждого класса (Играть=Да и Играть=Нет). Например:

P(Outlook=Санни | Play=Да) = 2/9

P(Outlook=Санни | Играть=Нет) = 3/5

P(Температура=Жарко | Играть=Да) = 2/9

P(Temperature=Hot | Play=No) = 2/5

P(Влажность=Высокая | Игра=Да) = 3/9

P(Влажность=Высокая | Игра=Нет) = 4/5

P(Windy=Нет | Играть=Да) = 6/9

P(Ветер=Нет | Игра=Нет) = 2/5

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

P(Play=Yes | Outlook=Sunny, Temperature=Hot, Humidity=High, Windy=No) = P(Play=Yes) * P(Outlook=Sunny | Play=Yes) * P(Temperature=Hot | Play=Yes) * P(Humidity=High | Play=Yes) * P(Windy=No | Play=Yes)

P(Play=No | Outlook=Sunny, Temperature=Hot, Humidity=High, Windy=No) = P(Play=No) * P(Outlook=Sunny | Play=No) * P(Temperature=Hot | Play=No) * P(Humidity=High | Play=No) * P(Windy=No | Play=No)

Сравните вероятности, рассчитанные для обоих классов (Да и Нет). Класс с более высокой вероятностью является предсказанным классом.

In this example, you would find that P(Play=Yes | …) is higher than P(Play=No | …), so the prediction would be “Yes, play tennis.”

3. Полиномиальный наивный Байес:

  • Это variant of the Naïve Bayes algorithm , который особенно подходит для “Classification Tasks” включающих “Discrete Features”,, например “Text Classification” , где функции соответствуют “word counts” or frequencies в документах.
  • Давайте возьмем простой пример классификации movie reviews as “Positive” or “Negative” на основе частоты определенных слов.

Рассмотрим небольшой набор данных рецензий на фильмы со следующими характеристиками:

Отзыв 1: «Отличный фильм, отличная игра актеров, фантастический сюжет» (положительный)

Отзыв 2: «Ужасная игра актеров, скучный сюжет» (отрицательный)

Отзыв 3: «Потрясающий сюжет, хорошая игра актеров» (положительный)

Отзыв 4: «Плохой фильм, ужасная игра актеров, никакого сюжета» (отрицательный)

Feature Extraction:

Чтобы использовать многочленный наивный байесовский метод, мы сначала преобразуем текстовые данные в bag-of-words representation. Для простоты рассмотрим всего три слова: “great,” “terrible,” and “plot.”

Наша матрица функций будет выглядеть так:

Обзор отличный ужасный сюжет Класс
Обзор 1 1 0 1 Положительный
Обзор 2 0 1 1 Отрицательный
Обзор 3 0 0 1 Положительный
Обзор 4 0 1 0 Отрицательный

Training:

Рассчитаем вероятности классов:

P(Positive) = 2/4 = 0.5

P(Negative) = 2/4 = 0.5

2. Рассчитайте вероятности признаков для каждого слова, данного в каждом классе:

P(отлично | положительно) = (1 + 1) / (3 + 2) = 2/5

P(большой | Отрицательный) = (0 + 1) / (3 + 2) = 1/5

P(ужасно | Положительно) = (0 + 1) / (3 + 2) = 1/5

P(ужасно | Отрицательно) = (1 + 1) / (3 + 2) = 2/5

P(график | Положительный) = (1 + 1) / (3 + 2) = 2/5

P(график | Отрицательный) = (1 + 1) / (3 + 2) = 2/5

Prediction:

Теперь, если у нас есть новый отзыв, например “Great plot, fantastic acting,”, мы можем использовать Multinomial Naive Bayes to predict its sentiment:

P(Положительный | «Отличный сюжет, фантастическая игра актеров») ∝ P(Положительный) * P(отличный | Положительный) * P(сюжет | Положительный)

P(Отрицательный | «Отличный сюжет, фантастическая игра актеров») ∝ P(Отрицательный) * P(отличный | Отрицательный) * P(сюжет | Отрицательный)

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

В этом случае отзыв, скорее всего, будет classified as “Positive”, потому что conditional probability for “Positive” is higher than for “Negative.”

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

  • Наивный байесовский алгоритм Бернулли реализует наивные алгоритмы обучения и классификации Байеса для данных, которые распределяются в соответствии с многомерными распределениями Бернулли. Признаков может быть несколько, но предполагается, что каждый из них представляет собой переменную с двоичным значением (Бернулли, логическое значение).
  • Следовательно, этот класс требует, чтобы выборки были представлены в виде векторов признаков с двоичными значениями; при передаче любого другого типа данных экземпляр Бернулли Наивного Байеса может бинаризировать свои входные данные (в зависимости от параметра бинаризации)
  • Говоря простым языком, Bernoulli naïve Bayes follows Bernoulli distributions, что означает, что следует only two possible outcomes. (“да”, “нет”) (“1”, “0”) (“истина”, ложь”) (“неудача” », «Успех»)
  • Никакие числовые столбцы не будут работать.

Пример классификации текста — обнаружение спама:

Рассмотрим систему обнаружения спама в электронной почте. Цель состоит в том, чтобы классифицировать электронные письма как «спам» или «не спам» (хам) на основе наличия или отсутствия определенных слов в содержании электронного письма.

Набор данных:

Допустим, у нас есть небольшой набор данных со следующими электронными письмами:

Письмо 1 (Спам): «Разбогатейте быстро! Купите сейчас!»

Письмо 2 (спам): «Получите свой приз сегодня!»

Письмо 3 (не спам): «Встреча запланирована на завтра».

Письмо 4 (не спам): «Прочитайте прикрепленный отчет».

Извлечение функций:

Чтобы применить наивный Байес Бернулли, нам нужно convert the text data into binary features, где каждый признак представляет собой наличие или отсутствие определенного слова. Для простоты давайте рассмотрим два слова: «получить» и «приз».

Наша матрица функций будет выглядеть так:

Письмо с призом Класс
Письмо 1 1 0 Спам
Письмо 2 0 1 Спам
Письмо 3 0 0 Не спам
Письмо 4 0 0 Не спам

Обучение:

Calculate the class probabilities:

P(Спам) = 2/4 = 0,5

P(не спам) = 2/4 = 0,5

Calculate the feature probabilities for each word given in each class:

P(get=1 | Спам) = 1/2 = 0,5

P(prize=1 | Спам) = 1/2 = 0,5

P(get=1 | Не спам) = 0/2 = 0,0

P(prize=1 | Не спам) = 0/2 = 0,0

Прогноз:

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

Convert the content into binary features: {get=1, prize=1}.

Calculate the probabilities using Bernoulli Naive Bayes:
P(Спам | {get=1, Prize=1}) ∝ P(Спам) * P(get=1 | Спам) * P(prize=1 | Спам)
P(Не спам | {get=1, Prize=1}) ∝ P(Не спам) * P(get=1 | Не спам) * P(prize=1 | Не спам)

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

  • В данном случае email is more likely to be classified as “Spam” поскольку conditional probability for “Spam” is higher.

Вы также можете найти меня здесь-

https://www.linkedin.com/feed/

https://github.com/21Nimisha

Сообщение от AI Mind

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь: