Застосування правила Байєса у зворотній послідовності
Класифікація ставить питання: враховуючи характеристики точки, якай клас найбільш ймовірно належить? Правило Байєса перевертає це питання, роблячи його часто простішим для відповіді безпосередньо – враховуючи клас, наскільки ймовірні ці характеристики? - і поєднує це з загальною поширеністю кожного класу. Для точки x та класу c, апостеріорна ймовірність пропорційна ймовірності попереднього класу помноженій на ймовірність x за даний клас: P(c | x) пропорційна P(c) * P(x | c). Щоб класифікувати нову точку, обчислюйте цю величину для кожного класу та виберіть найбільшу.
Де місце у всьому
З кількох функцій P(x given c) означає спільну ймовірність усіх ознак разом, що зазвичай вимагає моделювання того, як ознаки корелюють між собою – це дорого і потребує великих обсягів даних. Наївне припущення повністю цього уникає: воно розглядає кожну ознаку як незалежно умовну за класифікацією, тому спільна ймовірність представляється простим добутком одновимірних ймовірностей, по одній на ознаку. Це припущення майже завжди є технічно неправильним, але байєсівський метод залишається потужним і швидким базовим рішенням, оскільки класифікація потребує лише найбільшої апостеріорної ймовірності, а не її точного значення – ранжування між класами часто витримує спрощення незалежності навіть тоді, коли самі ймовірності були б іншими.
Гаусів варіант
Для безперервних функціональних можливостей використовується наївний байєсівський гаусовий підхід, де кожен атрибут у кожній класі розглядається як нормальний розподіл, оцінений напряму з навчальних даних: середнє значення та дисперсія цього атрибута серед точок, позначених цим класом, нічого більше. Навчання, таким чином, є лише арифметикою – проходження по даних для обчислення середніх значень і дисперсій за кожним класом і атрибутом, без будь-якої ітеративної оптимізації.
function gaussianLikelihood(x, mean, variance) {
const exponent = -((x - mean) ** 2) / (2 * variance);
return Math.exp(exponent) / Math.sqrt(2 * Math.PI * variance);
}
function classify(point, classes) {
let best = null, bestScore = -Infinity;
for (const c of classes) {
let logScore = Math.log(c.prior);
for (let d = 0; d < point.length; d++)
logScore += Math.log(gaussianLikelihood(point[d], c.mean[d], c.variance[d]));
if (logScore > bestScore) { bestScore = logScore; best = c; }
}
return best;
}
Визначення руху тіла під дією сили тяжіння
Межа між двома класами визначається місцем, де їхні апостеріорні рівні один одному. Логарифмування перетворює гаусові розподіли на квадратичні вирази відносно x, тому в загальному випадку, коли класи мають різні дисперсії, межа є кривою – параболою, еліптичною або гіперболою залежно від відносних дисперсій. Якщо два класи випадково мають однакову дисперсію у кожному вимірі, квадратні члени точно скасовуються і межа колапсує до прямої, що пояснює, чому гаусове наївне Bayes іноді помилково вважають лінійним класифікатором – воно лінійне лише в цьому особливому, симетричному випадку.
Frequently asked questions
Чому його називають «наївним»?
Бо він припускає, що кожна особливість умовно незалежна від кожної іншої особливості за умови класу – спрощення, яке майже ніколи не є абсолютно точним. Координати x та y точки зазвичай корелюють всередині реального кластера, але класифікатор множить їх окремі ймовірності, ніби вони не пов’язані, і в практиці це рідко сильно впливає на остаточне класифікування.
Чи завжди межа рішень є прямою лінією?
Лише коли кожен клас має однакову дисперсію у кожній особливості. У цьому спеціальному випадку квадратичні члени в лог-постереоріалах скасовуються, і межа є лінійною. Коли класи мають різні дисперсії, що є загальним випадком, межа є кривою – зазвичай параболою, еліпсою або гіперболою.
Як «наївний» Байєса обробляє клас, який він ніколи не бачив значення ознаки для?
Для Гаусових ознак це рідко є серйозною проблемою, оскільки гаусівська щільність ніколи не дорівнює абсолютному нулю, лише дуже маленька далеко від середнього. Для дискретних ознак, таких як лічильники слів у класифікації тексту, справді невидиме значення множило б весь добуток на нуль, тому реалізації додають Laplace smoothing – невелику константу, додану до кожного рахунку – щоб жодна ймовірність ніколи не була абсолютно нульовою.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Naive Bayes Classifier і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Naive Bayes Classifier