01. Суть алгоритму
Наївний Байєсів класифікатор (Naive Bayes) — це сімейство простих імовірнісних класифікаторів, заснованих на застосуванні теореми Байєса з припущенням про строгу (наївну) незалежність ознак між собою.
Він відповідає на питання: «Яка ймовірність того, що цей об'єкт належить до класу \(C\), якщо ми знаємо, що він має ознаки \(X_1, X_2, \dots, X_n\)?»
Теорема Байєса
- \(P(C|X)\) — апостеріорна ймовірність класу \(C\) при виявленій ознаці \(X\).
- \(P(X|C)\) — правдоподібність (ймовірність ознаки \(X\) всередині класу \(C\)).
- \(P(C)\) — апріорна ймовірність самого класу \(C\) (без урахування ознак).
- \(P(X)\) — повна ймовірність ознаки \(X\) (виступає як нормувальний коефіцієнт).
Накопичення статистики
Ми збираємо великий набір розмічених даних (наприклад, листи: "Спам" чи "Нормальний") та рахуємо частоту зустрічальності кожного слова.
Обчислення ймовірностей
Обчислюємо загальну долю спаму серед усіх листів (апріорні ймовірності) та ймовірність появи кожного слова у спам-листах та нормальних листах.
Комбінування ознак
При отриманні нового листа ми знаходимо всі ключові слова й перемножуємо їхні індивідуальні ймовірності для кожного класу завдяки припущенню незалежності.
Фінальне рішення
Ми порівнюємо отримані результати для двох класів. До якого класу ймовірність є вищою — туди алгоритм і відносить тестове повідомлення.
Навіщо потрібне Згладжування Лапласа (Laplace Smoothing)?
Уявіть, що у новому листі з'явилося слово, яке під час навчання ми жодного разу не бачили в категорії "Спам" (наприклад, ім'я "Олександр"). Тоді його ймовірність у спамі дорівнюватиме \(P(\text{"Олександр"}|\text{Спам}) = 0\). Оскільки у формулі Байєса ми **перемножуємо** всі ймовірності ознак, один єдиний нуль перетворить увесь добуток на нуль: $$P(\text{Спам}|X) \propto P(\text{слово}_1|\text{Спам}) \times 0 \times P(\text{слово}_3|\text{Спам}) = 0$$ Це повністю зламає класифікацію. Для вирішення цієї проблеми додають фіктивну одиницю до чисельника та кількість унікальних слів (розмір словника \(V\)) до знаменника: $$P_s(w|C) = \frac{Count(w, C) + \alpha}{Count(C) + \alpha \cdot |V|}$$ Де зазвичай параметр згладжування \(\alpha = 1\) (Згладжування Лапласа). Тепер жодне слово не матиме нульової ймовірності!
База даних (Словник)
Слів: 6Кількість зустрічань кожного слова в історичних (навчальних) даних:
Додати власне слово у статистику навчання:
Класифікація повідомлення
Напишіть текст повідомлення або клікніть на швидкі шаблони знизу. Алгоритм проаналізує кожне слово, розрахує ймовірність того, що цей текст належить до категорії Спам або до Нормальних (Ham) листів.
0%
Апостеріорний шанс: 0
0%
Апостеріорний шанс: 0
Детальні кроки математичного розрахунку
1 Загальна статистика бази даних
2 Ймовірності для знайдених у тексті слів
Обчислюються з урахуванням згладжування за формулою:
\(P(\text{слово}|\text{Клас}) = \frac{\text{кількість зустрічань} + 1}{\text{всього слів у класі} + V}\)
| Слово | У Спамі | У Нормальних | Формула P(Слово | Spam) | Формула P(Слово | Ham) |
|---|
3 Перемноження індивідуальних ймовірностей
Перемножуємо апріорний шанс класу на ймовірності кожного виявленого слова:
4 Нормалізація (Переведення у відсотки)
Щоб отримати суму 100%, ділимо результат кожного класу на суму результатів обох класів: