Я усвідомлюю, що це старе питання, з усталеною відповіддю. Причиною, яку я публікую, є те, що прийнята відповідь має багато елементів 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 характеристики:
- Чи довгий він
- Будь солодкий і
- Якщо його колір Жовтий.
Це наш «навчальний набір». Ми будемо використовувати це для прогнозування типу будь-якого нового фрукта, який ми зустрічаємо.
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.