Розуміння наївного Байєса


47

( Statisoft, Inc.) (2013), Підручник з електронної статистики , "Класифікатор Naive Bayes" :

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

Щоб продемонструвати концепцію класифікації наївних баїв, розглянемо приклад, показаний на ілюстрації вище. Як зазначено, об'єкти можна класифікувати як ЗЕЛЕНІ або ЧЕРВЕНІ. Моє завдання - класифікувати нові випадки по мірі їх надходження, тобто вирішувати, до якої мітки класу вони належать, виходячи з існуючих в даний час об'єктів.

Оскільки ЗЕЛЕНИХ об’єктів удвічі більше, ніж ЧЕРВЕНО, доцільно вважати, що новий випадок (який ще не спостерігався) має вдвічі більше шансів на приналежність до ЗЕЛЕНОГО, а не ЧЕРВЕНОГО. У байєсівському аналізі ця віра відома як попередня ймовірність. Попередні ймовірності ґрунтуються на попередньому досвіді, в цьому випадку відсотках ЗЕЛЕНИХ та КРАСНИХ об'єктів, і часто використовуються для прогнозування результатів до того, як вони насправді відбудуться.

Таким чином, ми можемо написати:

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

Оскільки загалом існує 60 об’єктів, 40 з яких - ЗЕЛЕНІ та 20 ЧЕРВОНІ, то наші попередні ймовірності для належності до класу:

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

Сформулювавши попередню ймовірність, ми зараз готові класифікувати новий об’єкт (БІЛЕ коло). Оскільки об'єкти добре кластеризовані, доцільно припустити, що чим більше ЗЕЛЕНИХ (або ЧЕРВЕНИХ) об’єктів поблизу X, тим більше ймовірність того, що нові випадки належать саме цьому кольору. Щоб виміряти цю ймовірність, ми намалюємо коло навколо X, яке охоплює кількість точок (вибирати їх апріорі) точок незалежно від міток класу. Потім обчислюємо кількість точок у колі, що належать кожній мітці класу. З цього обчислюємо ймовірність:

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

З вищенаведеної ілюстрації видно, що ймовірність отримання X із ЗЕЛЕНОГО менша, ніж ймовірність X даного ЧЕРВЕНОГО, оскільки коло охоплює 1 ЗЕЛЕНИЙ об’єкт та 3 КРАСНІ. Таким чином:

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

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

Хоча попередні ймовірності вказують на те, що X може належати до ЗЕЛЕНОГО (враховуючи, що ЗЕЛЕНО в два рази більше порівняно з КРАСНИМ), ймовірність вказує на інше; що приналежність до класу X є RED (враховуючи, що поблизу X більше об'єктів RED, ніж ЗЕЛЕНО). У байєсівському аналізі остаточна класифікація виробляється шляхом об'єднання обох джерел інформації, тобто попереднього та ймовірного, щоб сформувати задню ймовірність, використовуючи так зване правило Байєса (назване на честь преподобного Томаса Бейса 1702-1761).

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

Нарешті, ми класифікуємо X як RED, оскільки його членство в класі досягає найбільшої задньої ймовірності.

Ось тут і виникають труднощі мого розуміння математики.

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

p (Cj | x1, x2, x ..., xd) - задня ймовірність членства в класі, тобто ймовірність того, що X належить Cj, але навіщо писати його так?

Обчислення ймовірності?

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

Задня ймовірність?

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

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


12
(+1) Я захоплююсь справді обережним і зрозумілим способом, яким ви поставили своє запитання.
rolando2

2
@ rolando2: всі цифри та майже весь текст цього питання походить від statsoft.com/textbook/naive-bayes-classifier
Franck Dernoncourt

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

Належне віднесення прямих котирувань завжди було вимогою на сайтах Stack Exchange. У всякому разі, упущення легко виправляється; & Я це зробив. Видаляти обліковий запис не потрібно - перегляньте.
Scortchi

Відповіді:


50

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

Ми хочемо знайти ймовірність того, що до кожного класу належить новий приклад: ). Потім ми обчислюємо цю ймовірність для кожного класу і вибираємо найбільш ймовірний клас. Проблема полягає в тому, що ми зазвичай не маємо цих ймовірностей. Однак теорема Байєса дозволяє нам переписати це рівняння в більш простежуваній формі.P(class|feature1,feature2,...,featuren

Байєсовий «Там» просто або з точки зору нашої проблеми:

P(A|B)=P(B|A)P(A)P(B)
P(class|features)=P(features|class)P(class)P(features)

Ми можемо спростити це, видаливши . Ми можемо це зробити, тому що ми збираємося класифікувати для кожного значення ; будуть щоразу однакові - це не залежить від . Це залишає нам P(features)P(class|features)classP(features)class

P(class|features)P(features|class)P(class)

Попередні ймовірності, , можна обчислити так, як ви описали у своєму запитанні.P(class)

Це залишає . Ми хочемо усунути масовий і, мабуть, дуже рідкий, спільний ймовірність . Якщо кожна функція не є незалежною, тоді особливість_2 Навіть якщо вони насправді не є незалежними, можна припустити, що вони є (це " наївна "частина наївного Байєса). Я особисто думаю, що простіше продумати дискретні (тобто категоричні) змінні, тому давайте скористаємося трохи іншою версією вашого прикладу. Тут я розділив кожен вимір функції на дві категоричні змінні.P(features|class)P(feature1,feature2,...,featuren|class)

P(feature1,feature2,...,featuren|class)=iP(featurei|class)

Дискретні приклади даних.

Приклад: Навчання класифікатора

Для підготовки класифікатора ми підраховуємо різні підмножини точок та використовуємо їх для обчислення попередніх та умовних ймовірностей.

Пріори тривіальні: Є шістдесят загальних балів, сорок - зелений, а двадцять - червоний. Таким чином,

П(cласс=гrеен)=4060=2/3 і П(cласс=rег)=2060=1/3

Далі ми повинні обчислити умовні ймовірності кожної функції-значення, що задається класом. Тут є дві особливості: та , кожна з яких приймає одне з двох значень (A або B для одного, X або Y для іншого). Тому нам потрібно знати наступне:fеатуrе1fеатуrе2

  • П(fеатуrе1=А|cласс=rег)
  • П(fеатуrе1=Б|cласс=rег)
  • П(fеатуrе1=А|cласс=гrеен)
  • П(fеатуrе1=Б|cласс=гrеен)
  • П(fеатуrе2=Х|cласс=rег)
  • П(fеатуrе2=Y|cласс=rег)
  • П(fеатуrе2=Х|cласс=гrеен)
  • П(fеатуrе2=Y|cласс=гrеен)
  • (якщо це не очевидно, це всі можливі пари характеристик-значень та класу)

Їх легко обчислити шляхом підрахунку та ділення. Наприклад, для ми дивимось лише на червоні точки і підраховуємо, скільки з них є в області "A" для . Є двадцять червоних точок, всі вони знаходяться в області "А", тому . Жодна з червоних точок не знаходиться у регіоні B, тому . Далі робимо те саме, але враховуємо лише зелені точки. Це дає нам і . Повторимо цей процес для , щоб округлити таблицю ймовірностей. Припускаючи, що я правильно порахував, ми отримуємоП(fеатуrе1=А|cласс=rег)fеатуrе1П(fеатуrе1=А|cласс=rег)=20/20=1П(fеатуrе1|cласс=rег)=0/20=0П(fеатуrе1=А|cласс=гrеен)=5/40=1/8П(fеатуrе1=Б|cласс=гrеен)=35/40=7/8fеатуrе2

  • П(fеатуrе1=А|cласс=rег)=1
  • П(fеатуrе1=Б|cласс=rег)=0
  • П(fеатуrе1=А|cласс=гrеен)=1/8
  • П(fеатуrе1=Б|cласс=гrеен)=7/8
  • П(fеатуrе2=Х|cласс=rег)=3/10
  • П(fеатуrе2=Y|cласс=rег)=7/10
  • П(fеатуrе2=Х|cласс=гrеен)=8/10
  • П(fеатуrе2=Y|cласс=гrеен)=2/10

Ці десять ймовірностей (два пріори плюс вісім умов) є нашою моделлю

Класифікація нового прикладу

Давайте класифікуємо білу точку з вашого прикладу. Він знаходиться в області "А" для та в області "Y" для . Ми хочемо знайти ймовірність того, що це є в кожному класі. Почнемо з червоного. Використовуючи формулу вище, ми знаємо, що: Subbing у ймовірності з таблиці отримаємоfеатуrе1fеатуrе2

П(cласс=rег|ехамpле)П(cласс=rег)П(fеатуrе1=А|cласс=rег)П(fеатуrе2=Y|cласс=rег)

П(cласс=rег|ехамpле)131710=730
Потім робимо те ж саме для зеленого:
П(cласс=гrеен|ехамpле)П(cласс=гrеен)П(fеатуrе1=А|cласс=гrеен)П(fеатуrе2=Y|cласс=гrеен)

Підчинення в цих значеннях отримує нас 0 ( ). Нарешті ми подивимось, який клас дав нам найбільшу ймовірність. У цьому випадку це очевидно червоний клас, тож саме тут ми присвоюємо бал.2/302/10

Примітки

У вашому оригінальному прикладі функції безперервні. У такому випадку потрібно знайти спосіб присвоїти P (характеристика = значення | клас) для кожного класу. Ви можете розглянути можливість пристосування до відомого розподілу ймовірностей (наприклад, гаусса). Під час навчання ви знайдете середню величину та відхилення для кожного класу вздовж кожного виду ознак. Щоб класифікувати точку, ви знайдете , підключивши відповідне середнє значення та дисперсію для кожного класу. Інші розповсюдження можуть бути більш підходящими, залежно від деталей ваших даних, але гауссова людина буде гідною відправною точкою.П(fеатуrе=vалуе|cласс)

Я не надто знайомий із набором даних DARPA, але ви зробите по суті те ж саме. Ви, ймовірно, обчислюєте щось на зразок P (атака = ІСТИНА | послуга = палець), P (атака = помилка | служба = палець), P (атака = TRUE | послуга = ftp) тощо, а потім комбінуєте їх у так само, як приклад. Як зауваження, частина хитрості тут полягає у створенні хороших особливостей. Наприклад, вихідний IP, ймовірно, буде безнадійно рідким - ви, мабуть, матимете лише один-два приклади для даного IP. Ви можете зробити набагато краще, якщо ви розмістили IP-адресу та використали "Source_in_same_building_as_dest (true / false)" або щось як функцію.

Я сподіваюся, що це допомагає більше. Якщо що-небудь потребує роз'яснення, я буду радий спробувати ще раз!


3
Звичайно. Якщо з вами все гаразд, я відредагую свою відповідь, щоб було більше місця (і я можу робити LaTex речі).
Метт Крауз

1
Я розширив навчальні та тестові частини і склав їх у свій розділ. Перші пара абзаци однакові ...
Метт Крауз

2
Метт, це набагато чіткіше, ніж будь-яке визначення текстової книги про Найві Бейса, на яке я натрапив. Це, мабуть, найкраща відповідь на будь-яке питання, яке я бачив поки що на цьому веб-сайті.
Жубарб

@Berkan, дякую; це дуже ласкаво з вас (хоча є і багато інших чудових відповідей!) Якщо у вас є якісь пропозиції, я би радий спробувати їх вирішити!
Метт Крауз

+ 1 та stackoverflow.com/questions/10059594/…, де є подібне пояснення
Дрей

6

Спрощуючи позначення за допомогою що позначає дані, ми хочемо знайти, який із різних є найбільшим. Тепер формула Байєса дає де знаменник на право є однаковим для всіх . Якщо ми хочемо знайти, який з , є найбільшим, ми можемо, звичайно, обчислити кожен і порівняти значення. Але зауважте, що порівняння насправді не впливає на значення яке однакове у всіх випадках. Ми могли б однаково добре обчислити всіDП(СjD)

П(СjD)=П(DСj)П(Сj)П(D), j=1,2,
jП(С1D)П(С2D),П(СjD)П(D)П(DСj)П(Сj) і порівняйте (тобто не намагаючись розділити кожен на перед порівняннями), і буде обраний той самий , який має найбільшу задню ймовірність. Іншими словами, апостериорная ймовірність є пропорційним до ймовірності раз апріорна ймовірність Нарешті, коли дані - це сукупність (умовно) незалежних спостережень заданих , ми маємо це П(DСj)П(Сj)П(D)СjП(СjD)П(DСj) П(Сj)
П(СjD)П(DСj)П(Сj).
DC j ) P ( D C j )(х1,х2,,хг)Сj)
П(DСj)=П(х1,х2,,хгСj)=П(х1Сj)П(х2Сj)П(хгСj)=1=1гП(хiСj)

1

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

Це також допомагає моделі наївних баєсів добре узагальнити на практиці. Розглянемо етап навчання: якби ми не зробили це припущення, тоді навчання передбачало б оцінку складного високорозмірного розподілу: p (x1, x2, ..., xn, c), в якому всі функції спільно розподіляються. Натомість ми можемо тренуватися, оцінюючи p (x1, c), p (x2, c), ..., p (xn, c), оскільки знаючи значення c, значення всіх інших ознак роблять невідповідними (вони надають додаткової інформації про x_i) немає.

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

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