Никогда не говорите мне о шансах ... без предварительного установления байесовского приора.
Вступление
Наивный алгоритм Байеса - это контролируемый алгоритм классификации, основанный на теореме Байеса с сильной (наивной) независимостью между особенности.
Теорема Байеса
В теории вероятностей и статистике теорема Байеса описывает вероятность события, основанную на предварительном знании условий, которые могут быть связаны с событием - Источник: Википедия
Формулу наивного байесовского классификатора можно записать на основе теоремы Байеса как:
Где,
- x1,…, xj - это j функций, которые не зависят друг от друга. y - зависимая переменная.
- P (y | x1,…, xj): Апостериорная вероятность
- P (x1,…, xj | y): Вероятность характеристик от x1 до xj при условии, что их класс - y.
- P (y): Априорная вероятность
- P (x1,…, xj): Предельная вероятность
Как работает наивный байесовский алгоритм?
Давайте разберемся на примере:
Шаг 1. Начнем с импорта набора данных и необходимых зависимостей.
Мы будем использовать набор данных о погоде для обучения. Этот набор данных включает функции [Outlook, Temp, Humidity, Windy] и соответствующую целевую переменную Play. Теперь нам нужно предсказать, будут ли игроки играть или нет, исходя из заданных погодных условий.
#Weather Dataset Outlook Temp Humidity Windy Play Rainy Hot High f no Rainy Hot High t no Overcast Hot High f yes Sunny Mild High f yes Sunny Cool Normal f yes Sunny Cool Normal t no Overcast Cool Normal t yes Rainy Mild High f no Rainy Cool Normal f yes Sunny Mild Normal f yes Rainy Mild Normal t yes Overcast Mild High t yes Overcast Hot Normal f yes Sunny Mild High t no
Шаг 2: Вычислить априорную вероятность классов P (y)
#Frequency table P(Play=Yes) = 9/14 = 0.64 P(Play=No) = 5/14 = 0.36
Шаг 3. Рассчитайте таблицу правдоподобия для всех функций
#Likelihood Table #Outlook Play Overcast Rainy Sunny Yes 4/9 2/9 3/9 No 0/5 3/5 2/5 ___ ___ ___ 4/14 5/14 5/14 #Temp Play Cool Mild Hot Yes 3/9 4/9 2/9 No 1/5 2/5 2/5 ___ ___ ___ 4/14 6/14 4/14 #Humidity Play High Normal Yes 3/9 6/9 No 4/5 1/5 ___ ___ 7/14 7/14 #Windy Play f t Yes 6/9 3/9 No 2/5 3/5 ___ ___ 8/14 6/14
Шаг 4: Теперь вычислите апостериорную вероятность для каждого класса, используя наивное байесовское уравнение. Класс с максимальной вероятностью - это результат предсказания.
Запрос: Будут ли игроки играть при погодных условиях [Outlook = дождь, температура = умеренная, влажность = нормальная, ветреная = t]?
Расчет апостериорной вероятности:
P(y=Yes|x) = P(Yes|Rainy,Mild,Normal,t) P(Rainy,Mild,Normal,t|Yes) * P(Yes) = ___________________________________ P(Rainy,Mild,Normal,t) P(Rainy|Yes)*P(Mild|Yes)*P(Normal|Yes)*P(t|Yes)*P(Yes) = ______________________________________________________ P(Rainy)*P(Mild)*P(Normal)*P(t)
Поскольку условная независимость двух случайных величин, A и B дали C, выполняется на всякий случай
P (A, B | C) = P (A | C) * P (B | C)
(2/9) * (4/9) * (6/9) * (3/9) * (9/14) = _______________________________________ (5/14) * (6/14) * (7/14) * (6/14) = 0.43 P(y=No|x) = P(No|Rainy,Mild,Normal,t) P(Rainy,Mild,Normal,t|No) * P(No) = ___________________________________ P(Rainy,Mild,Normal,t) P(Rainy|No)*P(Mild|No)*P(Normal|No)*P(t|No)*P(No) = ______________________________________________________ P(Rainy)*P(Mild)*P(Normal)*P(t) (3/5) * (2/5) * (1/5) * (3/5) * (5/14) = _______________________________________ (5/14) * (6/14) * (7/14) * (6/14) = 0.31 Now, P(Play=Yes|Rainy,Mild,Normal,t) has the highest Posterior probability.
Из приведенного выше расчета мы можем сказать, что существует высокая вероятность того, что игроки сыграют в заданных погодных условиях, т. Е. Данные относятся к классу Да.
Полный исходный код наивного байесовского классификатора:
Вот результат:
Weather Dataset: Train Accuracy: 92.86 Query 1:- [['Rainy' 'Mild' 'Normal' 't']] ---> ['yes'] Query 2:- [['Overcast' 'Cool' 'Normal' 't']] ---> ['yes'] Query 3:- [['Sunny' 'Hot' 'High' 't']] ---> ['no']
Существует много типов наивной байесовской модели, а именно:
- Гауссовский наивный байесовский
- Полиномиальный наивный байесовский
- Бернулли Наивный Байес
- Дополнение наивного Байеса
- Внезапный наивный байесовский
Я также реализовал алгоритм Gaussian Naive Bayes с нуля на python, вы можете получить исходный код здесь.
Заключение:
Наивную байесовскую модель легко построить, и она особенно полезна для очень больших наборов данных. Несмотря на свой наивный дизайн и чрезмерно упрощенные предположения, наивные байесовские классификаторы довольно хорошо работают во многих сложных ситуациях реального мира.
Спасибо за прочтение :)
Я надеюсь, что этот блог поможет вам лучше понять алгоритм Наивного Байеса. Если у вас есть какие-либо вопросы или предложения по этой статье, дайте мне знать. И, это, если это было хорошее чтение.
Ваше здоровье !!
Удачного обучения 😃
использованная литература
Наивный байесовский классификатор
В статистике наивные байесовские классификаторы представляют собой семейство простых« вероятностных классификаторов , основанных на применении байесовских… en.wikipedia.org»