Простое объяснение наивной байесовской классификации

547

Мне трудно понять процесс наивного Байеса, и мне было интересно, может ли кто-нибудь объяснить это простым пошаговым процессом на английском языке. Я понимаю, что сравнение требует времени, которое произошло, как вероятность, но я понятия не имею, как данные обучения связаны с фактическим набором данных.

Пожалуйста, объясните мне, какую роль играет тренировочный набор. Я привожу очень простой пример для фруктов здесь, например, банан

training set---
round-red
round-orange
oblong-yellow
round-red

dataset----
round-red
round-orange
round-red
round-orange
oblong-yellow
round-red
round-orange
oblong-yellow
oblong-yellow
round-red
Jaggerjack
источник
18
Это довольно легко, если вы понимаете теорему Байеса. Если вы не читали теорему Байеса, попробуйте эту ссылку yudkowsky.net/rational/bayes .
Ущипните
1
пожалуйста, объясните ваш пример. для первой строки в вашем тренировочном наборе: классифицируется ли раунд как красный, или как круглые, так и красные переменные классифицируются как что-то еще? если это последнее, каковы классификации для каждой записи в вашем тренировочном наборе?
К Мехта
22
ПРИМЕЧАНИЕ. Принятый ответ ниже не является традиционным примером для наивного Байеса. В основном это реализация ближайшего соседа. Читайте соответственно.
chmullig
1
@Jaggerjack: ответ RamNarasimhan хорошо объяснен, чем принятый ответ.
Unmesha SreeVeni
2
Хорошо, если вы видите график с несколькими точками, который на самом деле не означает, что это KNN :) Как вы рассчитываете вероятности, зависит только от вас. Наивный Байес вычисляет его, используя предварительное умножение на правдоподобие, так что именно это Явар показал в своем ответе. Как получить эти вероятности, здесь действительно не важно. Ответ абсолютно правильный, и я не вижу в этом проблем.
авинаш шах

Ответы:

673

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

В общем, все алгоритмы машинного обучения необходимо обучать для контролируемых задач обучения, таких как классификация, прогнозирование и т. Д., Или для неконтролируемых задач обучения, таких как кластеризация.

На этапе обучения алгоритмы обучаются с определенным входным набором данных (обучающим набором), чтобы в дальнейшем мы могли проверить их на неизвестные входные данные (которые они никогда раньше не видели), для которых они могут классифицировать или прогнозировать и т. Д. (В случае наблюдения) обучение) на основе их обучения. Это то, на чем основано большинство методов машинного обучения, таких как нейронные сети, SVM, байесовские и т. Д.

Таким образом, в общем проекте машинного обучения вы должны разделить входной набор на набор разработки (обучающий набор + тестовый набор) и набор тестов (или оценочный набор). Помните, что ваша основная цель состоит в том, чтобы ваша система изучала и классифицировала новые входные данные, которые они никогда раньше не видели ни в наборе Dev, ни в наборе тестов.

Тестовый набор обычно имеет тот же формат, что и обучающий набор. Однако очень важно, чтобы набор тестов отличался от учебного корпуса: если бы мы просто повторно использовали набор тестов в качестве набора тестов, то модель, которая просто запоминала свой ввод, не научившись обобщать на новые примеры, получала бы обманчиво. высокие результаты.

В целом, например, 70% наших данных можно использовать в качестве учебных наборов. Также не забудьте разделить оригинальный набор на обучающий и тестовый наборы случайным образом .

Теперь я перехожу к вашему другому вопросу о наивном байесовском.

Чтобы продемонстрировать концепцию наивной байесовской классификации, рассмотрим пример, приведенный ниже:

введите описание изображения здесь

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

Поскольку GREENобъектов в два раза больше RED, разумно полагать, что новый случай (который еще не наблюдался) имеет в два раза больше шансов, GREENчем членство RED. В байесовском анализе это убеждение известно как априорная вероятность. Предыдущие вероятности основаны на предыдущем опыте, в данном случае процент GREENи REDобъектов, и часто используются для прогнозирования результатов, прежде чем они действительно произойдут.

Таким образом, мы можем написать:

Априорная вероятностьGREEN :number of GREEN objects / total number of objects

Априорная вероятностьRED :number of RED objects / total number of objects

Поскольку существует всего 60объектов, 40из которых есть GREENи 20 RED, наши предыдущие вероятности для членства в классе:

Априорная вероятность дляGREEN :40 / 60

Априорная вероятность дляRED :20 / 60

Сформулировав нашу предыдущую вероятность, мы теперь готовы классифицировать новый объект ( WHITEобведите кружок на диаграмме ниже). Поскольку объекты хорошо сгруппированы, разумно предположить, что чем больше GREEN(или RED) объектов в окрестности X, тем больше вероятность того, что новые случаи принадлежат этому конкретному цвету. Чтобы измерить эту вероятность, мы нарисуем круг вокруг X, который охватывает количество (выбираемое априори) точек независимо от их меток класса. Затем мы вычисляем количество точек в круге, принадлежащих каждой метке класса. Из этого мы рассчитываем вероятность:

введите описание изображения здесь

введите описание изображения здесь

Из иллюстрации выше ясно, что вероятность Xданного GREENменьше вероятности Xданного RED, поскольку круг охватывает 1 GREENобъект и 3 REDединицы. Таким образом:

введите описание изображения здесь

введите описание изображения здесь

Несмотря на то, что предыдущие вероятности показывают , что Xможет принадлежать GREEN(при условии , что есть в два раза больше по GREENсравнению с RED) вероятность указана иной; что членство класса XIS RED(при условии , что есть еще REDобъекты в окрестностях Xчем GREEN). В байесовском анализе окончательная классификация производится путем объединения обоих источников информации, т. Е. Предшествующего и вероятностного, для формирования апостериорной вероятности с использованием так называемого правила Байеса (названного в честь преподобного Томаса Байеса 1702-1761 гг.).

введите описание изображения здесь

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

Явяр
источник
39
разве этот алгоритм выше не похож на k-ближайших соседей?
Рено
251
Этот ответ сбивает с толку - он смешивает KNN (k ближайших соседей) и наивный байес.
Михал Ильич
7
Ответ шел хорошо, пока вероятность не выросла. Таким образом, @Yavar использовал K-ближайших соседей для расчета вероятности. Насколько это правильно? Если да, то каковы другие методы расчета вероятности?
школа
1
Вы использовали круг в качестве примера вероятности. Я читал о гауссовском наивном байесе, где вероятность гауссова. Как это можно объяснить?
Умайр Дуррани
1
На самом деле, ответ с кнн правильный. Если вы не знаете распределение и, следовательно, плотность вероятности такого распределения, вы должны как-то найти его. Это может быть сделано через kNN или ядра. Я думаю, что некоторые вещи отсутствуют. Вы можете проверить эту презентацию, хотя.
CS
1053

Я понимаю, что это старый вопрос с устоявшимся ответом. Причина, по которой я публикую сообщения, состоит в том, что принятый ответ имеет много элементов 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 характеристики о каждом фрукте:

  1. Будь то долго
  2. Будь то сладкий и
  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 оказывается превосходным в определенных приложениях. Классификация текста - это одна из областей, где она действительно сияет.

Надеюсь, что это помогает понять концепции, лежащие в основе наивного байесовского алгоритма.

Рам Нарасимхан
источник
14
Спасибо за очень четкое объяснение! Легко один из лучших, плавающих в Интернете. Вопрос: поскольку каждый P (результат / свидетельство) умножается на 1 / z = p (свидетельство) (что в случае с фруктом означает, что каждый по сути является вероятностью, основанной исключительно на предыдущих доказательствах), было бы правильно сказать, что z не не имеет значения для Наивного Байеса? Таким образом, это означало бы, что если бы, скажем, кто-то натолкнулся на длинный / сладкий / желтый фрукт, который не был бананом, он был бы классифицирован неправильно.
ковариация
7
@ E.Chow Да, вы правы в том, что вычисление z не имеет значения для наивного Байеса. (Это способ масштабирования вероятностей от 0 до 1.) Обратите внимание, что z - это произведение вероятностей всех имеющихся данных. (Это отличается от приоры, которая является базовой ставкой классов.) Вы правы: если вы нашли длинный / сладкий / желтый фрукт, который не является бананом, NB неправильно определит его как банан, основываясь на этом Обучающий набор. Алгоритм является «наилучшим вероятностным предположением, основанным на доказательствах», и поэтому он будет ошибочно классифицироваться в некоторых случаях.
Рам Нарасимхан
1
@Jasper В таблице всего 200 "Других фруктов", из которых 50 желтых. Итак, учитывая, что фрукт - это «Другой фрукт», вселенной 200. 50 из них - Желтые. Отсюда 50/200. Обратите внимание, что 800 - это общее количество желтых фруктов. Поэтому, если бы мы хотели P (другой фрукт / желтый), мы бы сделали то, что вы предлагаете: 50/800.
Рам Нарасимхан
3
Абсолютно отличное объяснение. Я не могу понять этот алгоритм из академических работ и книг. Потому что, эзотерическое объяснение, возможно, является общепринятым стилем письма. Вот и все, и так просто. Спасибо.
Суат Атан PhD
3
Почему вероятности не составляют 1? Доказательство составляет 0,26 в примере (500/100 * 650/1000 * 800/1000), и поэтому окончательный P (банан | ...) = 0,252 / 0,26 = 0,969, а P (другой | ...) = 0,01875 / 0,26 = 0,072. Вместе они составляют до 1,04!
Маурисио
18

Рам Нарасимхан очень хорошо объяснил эту концепцию. Ниже приведено альтернативное объяснение на примере кода Наивного Байеса в действии.
Он использует пример проблемы из этой книги на стр. 351
Это набор данных, который мы будем использовать в приведенном выше наборе данных, если мы дадим гипотеза = тогда какова вероятность того, что он купит или не купит компьютер. Код ниже точно отвечает на этот вопрос. Просто создайте файл с именем named и вставьте следующий контент.
введите описание изображения здесь
{"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

new_dataset.csv

Age,Income,Student,Creadit_Rating,Buys_Computer
<=30,high,no,fair,no
<=30,high,no,excellent,no
31-40,high,no,fair,yes
>40,medium,no,fair,yes
>40,low,yes,fair,yes
>40,low,yes,excellent,no
31-40,low,yes,excellent,yes
<=30,medium,no,fair,no
<=30,low,yes,fair,yes
>40,medium,yes,fair,yes
<=30,medium,yes,excellent,yes
31-40,medium,no,excellent,yes
31-40,high,yes,fair,yes
>40,medium,no,excellent,no

Вот код комментария, объясняющий все, что мы здесь делаем! [Python]

import pandas as pd 
import pprint 

class Classifier():
    data = None
    class_attr = None
    priori = {}
    cp = {}
    hypothesis = None


    def __init__(self,filename=None, class_attr=None ):
        self.data = pd.read_csv(filename, sep=',', header =(0))
        self.class_attr = class_attr

    '''
        probability(class) =    How many  times it appears in cloumn
                             __________________________________________
                                  count of all class attribute
    '''
    def calculate_priori(self):
        class_values = list(set(self.data[self.class_attr]))
        class_data =  list(self.data[self.class_attr])
        for i in class_values:
            self.priori[i]  = class_data.count(i)/float(len(class_data))
        print "Priori Values: ", self.priori

    '''
        Here we calculate the individual probabilites 
        P(outcome|evidence) =   P(Likelihood of Evidence) x Prior prob of outcome
                               ___________________________________________
                                                    P(Evidence)
    '''
    def get_cp(self, attr, attr_type, class_value):
        data_attr = list(self.data[attr])
        class_data = list(self.data[self.class_attr])
        total =1
        for i in range(0, len(data_attr)):
            if class_data[i] == class_value and data_attr[i] == attr_type:
                total+=1
        return total/float(class_data.count(class_value))

    '''
        Here we calculate Likelihood of Evidence and multiple all individual probabilities with priori
        (Outcome|Multiple Evidence) = P(Evidence1|Outcome) x P(Evidence2|outcome) x ... x P(EvidenceN|outcome) x P(Outcome)
        scaled by P(Multiple Evidence)
    '''
    def calculate_conditional_probabilities(self, hypothesis):
        for i in self.priori:
            self.cp[i] = {}
            for j in hypothesis:
                self.cp[i].update({ hypothesis[j]: self.get_cp(j, hypothesis[j], i)})
        print "\nCalculated Conditional Probabilities: \n"
        pprint.pprint(self.cp)

    def classify(self):
        print "Result: "
        for i in self.cp:
            print i, " ==> ", reduce(lambda x, y: x*y, self.cp[i].values())*self.priori[i]

if __name__ == "__main__":
    c = Classifier(filename="new_dataset.csv", class_attr="Buys_Computer" )
    c.calculate_priori()
    c.hypothesis = {"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

    c.calculate_conditional_probabilities(c.hypothesis)
    c.classify()

вывод:

Priori Values:  {'yes': 0.6428571428571429, 'no': 0.35714285714285715}

Calculated Conditional Probabilities: 

{
 'no': {
        '<=30': 0.8,
        'fair': 0.6, 
        'medium': 0.6, 
        'yes': 0.4
        },
'yes': {
        '<=30': 0.3333333333333333,
        'fair': 0.7777777777777778,
        'medium': 0.5555555555555556,
        'yes': 0.7777777777777778
      }
}

Result: 
yes  ==>  0.0720164609053
no  ==>  0.0411428571429

Надеюсь, это поможет лучше понять проблему

мир

Сайед Зайнул Абидин
источник
18

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

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

Это алгоритм классификации, который принимает решение для неизвестного набора данных. Он основан на теореме Байеса, которая описывает вероятность события, основываясь на его предварительных знаниях.

На диаграмме ниже показано, как работает наивный Байес.

введите описание изображения здесь

Формула для предсказания NB:

введите описание изображения здесь

Как использовать наивный байесовский алгоритм?

Давайте рассмотрим пример того, как работает NB

Шаг 1: Сначала мы узнаем вероятность таблицы, которая показывает вероятность да или нет на диаграмме ниже. Шаг 2: Найти апостериорную вероятность каждого класса.

введите описание изображения здесь

Problem: Find out the possibility of whether the player plays in Rainy condition?

P(Yes|Rainy) = P(Rainy|Yes) * P(Yes) / P(Rainy)

P(Rainy|Yes) = 2/9 = 0.222
P(Yes) = 9/14 = 0.64
P(Rainy) = 5/14 = 0.36

Now, P(Yes|Rainy) = 0.222*0.64/0.36 = 0.39 which is lower probability which means chances of the match played is low.

Для получения дополнительной ссылки обратитесь к этим блогам.

См. GitHub Repository Naive-Bayes-Примеры

jitsm555
источник
14

Я пытаюсь объяснить правило Байеса на примере.

Какова вероятность того, что случайный человек, выбранный из общества, является курильщиком?

Вы можете ответить 10%.

Теперь, что, если человек мужчина и 15 лет?

Это не может быть 60%, хотя мы знаем, что процент курильщиков был очень низким. Это также не может быть меньше 10%. 15 или 20% являются лучшими догадками.

Фактически, мы пытаемся обновить первоначальное предположение новыми доказательствами ( P(smoker) vs. P(smoker | evidence)). Правило Байеса - это способ связать эти две вероятности.

P(smoker | evidence) = P(smoker)* p(evidence | smoker)/P(evidence)

Каждое доказательство может увеличить или уменьшить этот шанс. Например, тот факт, что он мужчина, может увеличить вероятность, при условии, что этот процент (будучи мужчиной) среди некурящих меньше. Другими словами, быть мужчиной должно быть хорошим показателем того, чтобы быть курильщиком, а не некурящим.

Мы можем показать этот вклад и по-другому. Для каждого признака вы можете сравнить общность (вероятность) этого признака в данных условиях с его общностью. ( P(f | x) vs. P(f)).

P(smoker | evidence) / P(smoker) = P(evidence | smoker)/P(evidence)

Например, если мы знаем, что 90% курильщиков - это мужчины, недостаточно сказать, является ли мужчина мужчиной или нет. Например, если вероятность быть мужчиной в обществе также составляет 90%, то знание того, что кто-то является мужчиной, нам не поможет ((90% / 90%) = 1. Но если мужчины вносят вклад в 40% общества, а в 90% курят, то знание того, что кто-то является мужчиной, повышает вероятность того, что он станет курильщиком.(90% / 40%) = 2.25 , поэтому увеличивает первоначальное предположение (10%) на 2,25, в результате чего получается 22,5%.

Однако, если вероятность быть мужчиной в обществе составляет 95%, то независимо от того, что процент мужчин среди курящих высок (90%)! доказательство того, что кто-то является мужчиной, снижает вероятность того, что он станет курильщиком!(90% / 95%) = 0.95),

Итак, мы имеем:

P(smoker | f1, f2, f3,... ) = P(smoker) * contribution of f1* contribution of f2 *... =
P(smoker)* 
(P(being a man | smoker)/P(being a man))*
(P(under 20 | smoker)/ P(under 20))

Обратите внимание, что в этой формуле мы предположили, что быть мужчиной и быть моложе 20 лет являются независимыми характеристиками, поэтому мы умножили их, это означает, что знание того, что кто-то моложе 20 лет, никак не влияет на предположение, что он мужчина или женщина. Но это может быть не так, например, может быть, большинство подростков в обществе мужчины ...

Чтобы использовать эту формулу в классификаторе

Классификатор дан с некоторыми особенностями (быть мужчиной и быть моложе 20 лет), и он должен решить, курит он или нет (это два класса). Он использует вышеприведенную формулу для расчета вероятности каждого класса по признаку (признакам) и назначает вход с наибольшей вероятностью. Чтобы обеспечить необходимые вероятности (90%, 10%, 80% ...), он использует обучающий набор. Например, он подсчитывает количество людей в обучающей группе, которые курят, и обнаруживает, что они вносят 10% выборки. Затем для курильщиков проверяется, сколько из них являются мужчинами или женщинами .... сколько людей старше 20 лет или младше 20 лет ... Другими словами, оно пытается построить распределение вероятностей для каждого класса на основе обучения. данные.

Ahmad
источник