Просте пояснення класифікації наївних Бейсів


547

Мені важко зрозуміти процес Naive Bayes, і мені було цікаво, чи хтось може пояснити це простим покроковим процесом англійською мовою. Я розумію, що це порівняння за часом, яке відбулося як вірогідне, але я не маю уявлення, як дані тренувань пов'язані з фактичним набором даних.

Будь ласка, дайте мені пояснення, яку роль відіграє навчальний набір. Я даю тут дуже простий приклад для фруктів, як, наприклад, банан

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

18
Це досить просто, якщо ви розумієте теорему Байєса. Якщо ви ще не читали теорему Байєса, спробуйте це посилання yudkowsky.net/rational/bayes .
Пінч

1
поясніть, будь ласка, свій приклад. для першого рядка у вашому навчальному наборі: чи круглі класифіковані як червоні, чи це обидва, круглі та червоні змінні, які класифікуються як щось інше? якщо це останнє, які класифікації для кожного запису у вашому навчальному наборі?
K Мехта

22
ПРИМІТКА. Прийнята нижче відповідь не є традиційним прикладом для Naive Naes. Це в основному ак Найближчий сусід. Прочитайте відповідно.
chmullig

1
@Jaggerjack: Відповідь РамНарасімхана добре пояснена, ніж прийнята відповідь.
Unmesha SreeVeni

2
Добре, якщо ви бачите графік з деякими крапками, що насправді не означає, що це KNN :) Як ви обчислите ймовірності, все залежить від вас. Наївний Байєс розраховує це, використовуючи попередньо помножене на вірогідність, так це показав Явар у своїй відповіді. Як дійти до цих імовірностей тут справді не важливо. Відповідь абсолютно правильна, і я не бачу в цьому жодних проблем.
avinash shah

Відповіді:


672

Як я розумію, ваше запитання поділено на дві частини, частина перша - вам потрібно краще зрозуміти класифікатор Naive Bayes, а частина друга - замішання навколо навчального набору.

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

Під час навчального етапу алгоритми навчаються з певним вхідним набором даних (навчальний набір), щоб пізніше ми могли перевірити їх на невідомі входи (яких вони ніколи не бачили), на які вони можуть класифікувати чи прогнозувати тощо (у разі нагляду навчання) на основі їх навчання. Саме на цьому ґрунтується більшість методів машинного навчання, таких як Нейронні мережі, SVM, Байесова тощо.

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

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

Загалом, наприклад, 70% наших даних можуть бути використані як навчальні випадки. Також не забудьте розділити оригінал на навчальний і тестовий набори випадковим чином .

Тепер я приходжу до вашого іншого питання про Naive Bayes.

Щоб продемонструвати концепцію класифікації наївних баїв, розглянемо приклад, наведений нижче:

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

Як зазначено, об'єкти можна класифікувати як 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з яких GREEN20 і 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
Ця відповідь є заплутаною - вона змішує КНН (k найближчих сусідів) та наївних баїв.
Міхал Ілліч

7
Відповідь проходила добре, поки ймовірність не з’явилася. Тож @Yavar використовував K-найближчих сусідів для обчислення ймовірності. Наскільки це правильно? Якщо це так, то які ще інші методи обчислення ймовірності?
вурлу

1
Ви використовували коло як приклад вірогідності. Я читав про наївних баїв Гаусса, де ймовірність гауссова. Як це можна пояснити?
umair durrani

1
Власне, відповідь з knn є правильною. Якщо ви не знаєте розподілу, а значить, імовірності такого розподілу, вам доведеться його якось знайти. Це можна зробити за допомогою kNN або ядер. Я думаю, що відсутні деякі речі. Ви можете переглянути цю презентацію .
CS

1053

Я усвідомлюю, що це старе питання, з усталеною відповіддю. Причиною, яку я публікую, є те, що прийнята відповідь має багато елементів k-NN ( k- найближчих сусідів), різний алгоритм.

І k-NN, і NaiveBayes є алгоритмами класифікації. Концептуально k-NN використовує ідею "близькості" для класифікації нових сутностей. У k-NN «близькість» моделюється такими ідеями, як евклідова відстань або відстань косинуса. Навпаки, в NaiveBayes поняття "ймовірність" використовується для класифікації нових сутностей.

Оскільки питання стосується Naive Bayes, ось як я описав ідеї та кроки комусь. Я спробую зробити це якомога менше рівнянь і простою англійською мовою.

По-перше, умовна ймовірність і правило Байєса

Перш ніж хтось зможе зрозуміти та оцінити нюанси Наївного Байєса, їм потрібно спочатку знати пару споріднених понять, а саме ідею Умовної ймовірності та Правила Байєса. (Якщо ви знайомі з цими поняттями, перейдіть до розділу під назвою " Як дістатися до наївних байєсів" )

Умовна ймовірність простою англійською мовою: яка ймовірність того, що щось станеться, враховуючи, що щось інше вже відбулося.

Скажімо, існує деякий результат О. І деякі докази E. З того, як визначаються ці ймовірності: Імовірність наявності як результату O, так і доказів E є: (Ймовірність виникнення O) помножена на (Проба Е, враховуючи, що О сталося)

Один приклад розуміння умовної ймовірності:

Скажімо, у нас є колекція сенаторів США. Сенаторами можуть бути демократи чи республіканці. Вони також або чоловіки, або жінки.

Якщо вибрати одного сенатора повністю випадковим чином, яка ймовірність того, що ця людина є демократом жінки? Умовна ймовірність може допомогти нам відповісти на це.

Імовірність (демократ і сенатор-жінок) = Проб (сенатор є демократом), помножена на умовну ймовірність бути жінкою, враховуючи, що вони є демократом.

  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)

Тепер все це було лише преамбулою, щоб дістатися до Naive Bayes.

Як дістатися до Naive Bayes '

Поки ми говорили лише про один доказ. Насправді ми мусимо передбачити результат, отримавши численні докази. У цьому випадку математика стає дуже складною. Щоб уникнути цього ускладнення, одним із підходів є "роз'єднання" декількох доказів та розгляд кожного з доказів як незалежного. Такий підхід тому називається наївним Байесом.

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 виявляється відмінним у певних програмах. Класифікація тексту - це одна сфера, де він дійсно сяє.

Сподіваємось, що допоможе зрозуміти поняття, що стоять за алгоритмом Naive Bayes.


14
Дякую за дуже чітке пояснення! Легко один з кращих, що плавають по Інтернету. Питання: оскільки кожен P (результат / докази) множиться на 1 / z = p (докази) (що в плодовому випадку означає, що кожен по суті є ймовірністю, заснованою виключно на попередніх доказах), було б правильно сказати, що z doesn для Наї Байеса це взагалі не має значення? Це означає, що якщо, скажімо, хтось наткнувся на довгий / солодкий / жовтий фрукт, який не був бананом, це було б класифіковано неправильно.
коваріація

7
@ E.Chow Так, ви праві, що обчислення z не має значення для Naive Bayes. (Це спосіб масштабування ймовірностей бути між 0 і 1.) Зауважте, що z є добутком ймовірностей усіх наявних доказів. (Це відрізняється від пріорів, яка є базовою нормою класів.) Ви вірно: Якщо ви знайшли довгий / солодкий / жовтий фрукт, який не є бананом, NB буде класифікувати його неправильно як банан, виходячи з цього навчальний набір. Алгоритм - це «найкраща ймовірнісна здогадка, заснована на доказах», тому він буде неправильно класифікований за певних випадків.
Рам Нарасимхан

1
@Jasper У таблиці міститься загалом 200 "Інших фруктів", і 50 з них - Жовтий. Отже, враховуючи, що плід "Інший фрукт", Всесвіт - 200. 50 з них - Жовтий. Звідси 50/200. Зауважте, що 800 - це загальна кількість жовтих плодів. Отже, якби ми хотіли P (інший фрукт / Жовтий), ми зробили б те, що ви запропонували: 50/800.
Рам Нарасимхан

3
Абсолютно чудове пояснення. Я не можу зрозуміти цей алгоритм із наукових праць та книг. Тому що, езотеричне пояснення, можливо, є загальноприйнятим стилем письма. Це все, і так просто. Дякую.
Доктор наук Суат Атан

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

Рам Нарасимхан дуже добре пояснив цю концепцію тут нижче - це альтернативне пояснення через приклад коду Naive Bayes в дії.
Він використовує приклад проблеми з цієї книги на сторінці 351
Це набір даних, який ми будемо використовувати у наведеному вище наборі даних, якщо ми дамо гіпотеза = тоді яка ймовірність, що він придбає чи не купить комп’ютер. Код нижче точно відповідає на це питання. Просто створіть файл з назвою і вставте наступний вміст.
введіть тут опис зображення
{"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

Ось код, у коментарях пояснюється все, що ми робимо тут! [пітон]

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

Naive Bayes: Naive Bayes підпадає під керівництво машинним навчанням, яке використовувалося для класифікації наборів даних. Він використовується для прогнозування речей на основі попередніх знань та припущень щодо незалежності.

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

Саме алгоритм класифікації приймає рішення для невідомого набору даних. Він заснований на теоремі Байєса, яка описує ймовірність події на основі попередніх знань.

Нижче на схемі показано, як працює наївний Байєс

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

Формула для прогнозування NB:

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

Як використовувати алгоритм Naive Bayes?

Візьмемо приклад того, як 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 Naive-Bayes-Приклади


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 років. Іншими словами, він намагається побудувати розподіл ймовірності функцій для кожного класу на основі тренінгу дані.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.