Продвинутый наивный байесовский метод
Темы, которые будут освещены в этом блоге:
1. Недополнение
2. Вероятность журнала
3. Сглаживание по Лапласу
4. Необходимость распределения вероятностей в наивном Байесе
5. Типы наивного Байеса
Вот ссылка на мой блог о Наивном Байесовском методе, часть 1. Обязательно ознакомьтесь с ним, прежде чем читать этот блог:
«Освоение наивного байесовского метода: от интуиции к реализации на Python
Наивный байесовский метод — часть 1medium.com»
Численная стабильность-
- Чтобы понять
“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» для всей вероятности.
- В концепции логарифмических вероятностей мы берем логарифм каждой отдельной вероятности. Это преобразование является ключевым в s
olving 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» (негативное мнение)
Выполняем следующие шаги:
- Подсчитайте все уникальные слова:
"w1", "w2", "w3".
- Преобразуйте отзывы в
"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. Биномиальное распределение-
- Биномиальное распределение — это дискретное распределение вероятностей, которое моделирует количество успехов в f
ixed 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
topredict 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.
Вы также можете найти меня здесь-
Сообщение от AI Mind
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Аплодируйте истории и подписывайтесь на автора 👉
- 📰 Больше контента смотрите в AI Mind Publication
- 🧠 Улучшайте свои подсказки AI легко и БЕСПЛАТНО
- 🧰 Откройте для себя Интуитивные инструменты искусственного интеллекта