Я понимаю, что это старый вопрос с устоявшимся ответом. Причина, по которой я публикую сообщения, состоит в том, что принятый ответ имеет много элементов k-NN ( k- ближайших соседей), другой алгоритм.
И k-NN, и NaiveBayes являются алгоритмами классификации. Концептуально, k-NN использует идею «близости» для классификации новых объектов. В k-NN «близость» моделируется такими идеями, как евклидово расстояние или косинусное расстояние. В NaiveBayes, напротив, понятие «вероятность» используется для классификации новых объектов.
Поскольку вопрос касается наивного Байеса, вот как я бы описал идеи и шаги кому-то. Я постараюсь сделать это с как можно меньшим количеством уравнений и простым языком.
Во-первых, условная вероятность и правило Байеса
Прежде чем кто-то сможет понять и оценить нюансы наивного байесовского подхода, ему необходимо сначала узнать пару связанных понятий, а именно идею условной вероятности и правило Байеса. (Если вы знакомы с этими концепциями, перейдите к разделу « Как добраться до Наивного Байеса» )
Условная вероятность на простом английском языке: какова вероятность того, что что-то случится, учитывая, что что-то еще уже произошло.
Предположим, что есть некоторый результат O. И некоторые доказательства E. Исходя из того, как определены эти вероятности: вероятность того, что оба результата O и доказательство E: (вероятность возникновения O) умножается на (вероятность E, учитывая, что О, случилось)
Один пример для понимания условной вероятности:
Допустим, у нас есть коллекция сенаторов США. Сенаторы могут быть демократами или республиканцами. Они также мужчины или женщины.
Если мы выбираем одного сенатора совершенно случайно, какова вероятность того, что этот человек является женщиной-демократом? Условная вероятность может помочь нам ответить на этот вопрос.
Вероятность (демократ и сенатор-женщина) = Вероятность (сенатор-демократ), умноженная на условную вероятность быть женщиной, учитывая, что они демократы.
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
Мы можем вычислить то же самое, обратным способом:
P(Democrat & Female) = P(Female) * P(Democrat | Female)
Понимание правила Байеса
Концептуально это путь от P (Доказательство | Известный результат) к P (Результат | Известное доказательство). Часто мы знаем, как часто наблюдаются какие-то конкретные доказательства, учитывая известный результат . Мы должны использовать этот известный факт, чтобы вычислить обратное, чтобы вычислить вероятность того, что этот результат произойдет , учитывая доказательства.
P (Исходя из того, что мы знаем некоторые доказательства) = P (Подтверждение, что мы знаем результат), умноженные на вероятности (результат), масштабированные по P (Доказательства)
Классический пример для понимания правила Байеса:
Probability of Disease D given Test-positive =
Prob(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) Prob(Testing Positive, with or without the disease)
Теперь все это было просто преамбулой, чтобы добраться до Наивного Байеса.
Как добраться до Наивного Байеса
До сих пор мы говорили только об одном доказательстве. В действительности, мы должны предсказать результат, учитывая многочисленные доказательства. В этом случае математика становится очень сложной. Чтобы обойти эту сложность, один из подходов состоит в том, чтобы «разъединить» несколько улик и рассматривать каждую из улик как независимую. Именно поэтому этот подход называется наивным байесовским.
P(Outcome|Multiple Evidence) =
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)
Многие люди решили запомнить это как:
P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
P(Evidence)
Обратите внимание на несколько вещей об этом уравнении:
- Если Вероятность (доказательство | результат) равна 1, то мы просто умножаем на 1.
- Если Вероятность (какое-то конкретное доказательство | результат) равна 0, тогда вся вероятность. становится 0. Если вы видите противоречивые доказательства, мы можем исключить этот результат.
- Поскольку мы делим все на P (доказательство), мы можем даже уйти, не вычисляя это.
- Интуиция, лежащая в основе умножения на предыдущее, заключается в том, что мы даем высокую вероятность более распространенным результатам и низкую вероятность маловероятным результатам. Они также называются,
base rates
и они являются способом масштабирования наших предсказанных вероятностей.
Как применить NaiveBayes, чтобы предсказать результат?
Просто запустите формулу выше для каждого возможного результата. Так как мы пытаемся классифицировать , каждый результат называется a, class
и class label.
наша задача состоит в том, чтобы посмотреть на доказательства, выяснить, какова вероятность того, что это будет тот или иной класс, и назначить метку для каждого объекта. Опять же, мы используем очень простой подход: класс с наибольшей вероятностью объявляется «победителем», и метка этого класса присваивается этой комбинации доказательств.
Пример фруктов
Давайте попробуем это на примере, чтобы улучшить наше понимание: ФП попросил пример идентификации «фрукт».
Допустим, у нас есть данные о 1000 фруктах. Это банан , апельсин или другой фрукт . Мы знаем 3 характеристики о каждом фрукте:
- Будь то долго
- Будь то сладкий и
- Если его цвет желтый.
Это наш «тренировочный набор». Мы будем использовать это, чтобы предсказать тип любого нового фрукта, с которым мы сталкиваемся.
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
___________________________________________________________________
Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500
Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300
Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200
____________________________________________________________________
Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000
___________________________________________________________________
Мы можем заранее рассчитать многое о нашей коллекции фруктов.
Так называемые «априорные» вероятности. (Если бы мы не знали ни одного из атрибутов фруктов, это было бы нашим предположением.) Это нашиbase rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
Вероятность "Доказательства"
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
Вероятность "вероятности"
P(Long|Banana) = 0.8
P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.]
....
P(Yellow|Other Fruit) = 50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75
Учитывая Фрукт, как классифицировать это?
Допустим, нам дали свойства неизвестного фрукта и попросили его классифицировать. Нам говорят, что плод длинный, сладкий и желтый. Это банан? Это апельсин? Или это какой-то другой фрукт?
Мы можем просто запустить числа для каждого из 3 результатов, один за другим. Затем мы выбираем наибольшую вероятность и «классифицируем» наш неизвестный фрукт как принадлежащий к классу, который имел наибольшую вероятность, основываясь на наших предыдущих доказательствах (наш тренировочный набор из 1000 фруктов):
P(Banana|Long, Sweet and Yellow)
P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
= _______________________________________________________________
P(Long) * P(Sweet) * P(Yellow)
= 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)
= 0.252 / P(evidence)
P(Orange|Long, Sweet and Yellow) = 0
P(Other Fruit|Long, Sweet and Yellow)
P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
= ____________________________________________________________________________________
P(evidence)
= (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)
= 0.01875 / P(evidence)
Подавляющим большинством ( 0.252 >> 0.01875
) мы классифицируем этот сладкий / длинный / желтый фрукт как вероятный банан.
Почему Байесовский классификатор так популярен?
Посмотрите, к чему это в конечном итоге сводится. Просто подсчет и умножение. Мы можем предварительно вычислить все эти термины, и поэтому классификация становится простой, быстрой и эффективной.
Let z = 1 / P(evidence).
Теперь мы быстро вычислим следующие три величины.
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
Назначьте метку класса в зависимости от того, какое число больше, и все готово.
Несмотря на название, Naive Bayes оказывается превосходным в определенных приложениях. Классификация текста - это одна из областей, где она действительно сияет.
Надеюсь, что это помогает понять концепции, лежащие в основе наивного байесовского алгоритма.