Імовірність · Баєсівське висновування · Статистика
📅 Квітень 2026 ⏱ ≈ 13 хв читання 🎯 Початковий–Середній · Останнє оновлення: 28 травня 2026 р.

Теорема Баєса на практиці — апріорі, правдоподібність, апостеріорі

Викладена 1763 року в посмертному есеї преподобного Томаса Баєса й незалежно перевідкрита П'єром-Симоном Лапласом, теорема каже нам, як оновлювати оцінку ймовірності, коли надходять нові дані. Сьогодні вона лежить в основі спам-фільтрів, медичної діагностики, пошукових систем, машинного навчання та наукового оцінювання параметрів — усюди, де нам потрібно кількісно міркувати про невизначеність.

1. Умовна ймовірність

Умовна ймовірність P(A|B) — це ймовірність події A за умови, що B сталася. Якщо обмежити простір елементарних подій результатами, де виконується B, то P(A|B) — це частка тих результатів, що також задовольняють A:

P(A|B) = P(A ∩ B) / P(B), за умови P(B) > 0

Це можна переписати як правило добутку: P(A ∩ B) = P(A|B) · P(B). Ту саму сумісну ймовірність також можна записати як P(A ∩ B) = P(B|A) · P(A). Прирівнювання цих виразів дає теорему Баєса.

2. Виведення теореми Баєса

Почнімо з симетрії сумісної ймовірності:

P(H ∩ E) = P(E|H) · P(H) = P(H|E) · P(E)

∴ P(H|E) = P(E|H) · P(H) / P(E)

Це й усе. Теорема — не що інше, як правило добутку, застосоване двічі. Її сила випливає з вибору того, на що зумовлювати:

Нормувальна стала P(E) обчислюється за формулою повної ймовірності сумуванням за всіма взаємовиключними гіпотезами Hi:

P(E) = Σᵢ P(E|Hᵢ) · P(Hᵢ)

3. Апріорі, правдоподібність, апостеріорі, дані

Апріорі

P(H)

У що ми вірили щодо H до того, як побачили дані. Кодує знання предметної області, попередні експерименти чи незнання.

Правдоподібність

P(E|H)

Наскільки ймовірні дані, якщо гіпотеза H істинна? Це те, що модель передбачає для даних.

Апостеріорі

P(H|E)

Наше оновлене переконання після врахування даних. Апріорі, зсунуте даними. Це стає новим апріорі для наступного оновлення.

Знаменник P(E) часто називають маргінальною правдоподібністю або свідченням моделі. Він однаковий для всіх гіпотез і діє як нормувальна стала, що забезпечує суму/інтеграл апостеріорного розподілу, рівний 1.

4. Приклад: точність медичного тесту

Хвороба вражає 1% населення. Тест має 99% чутливість (P(+|хвороба) = 0.99) і 98% специфічність (P(−|немає хвороби) = 0.98, тож P(+|немає хвороби) = 0.02). Яка ймовірність насправді мати хворобу за позитивного результату тесту?

P(D) = 0.01, P(+|D) = 0.99, P(+|¬D) = 0.02

P(+) = P(+|D)·P(D) + P(+|¬D)·P(¬D) = 0.99×0.01 + 0.02×0.99 = 0.0099 + 0.0198 = 0.0297

P(D|+) = 0.99×0.01 / 0.0297 ≈ 0.333

Попри високоточний тест, позитивний результат означає лише 33% шанс насправді мати хворобу — бо хвороба рідкісна (низьке апріорі). Це помилка базової частоти: ігнорування апріорі призводить до вкрай надмірно впевнених діагнозів. Баєсівський підхід робить це явним.

Послідовне оновлення: якщо того самого пацієнта тестують знову й отримують другий позитивний результат, використайте апостеріорі з першого тесту (≈ 0.33) як нове апріорі. Тепер P(D|++): P(+)′ = 0.99×0.33 + 0.02×0.67 ≈ 0.34, тож P(D|++) ≈ 0.96. Кожне незалежне спостереження додає ще один множник відношення правдоподібностей.

5. Спряжені апріорні розподіли — оновлення у замкненій формі

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

Бета-біноміальний: оцінювання зміщення монети

Припустімо, ми підкидаємо монету n разів і спостерігаємо k гербів. Правдоподібність — Binomial(n, θ). Якщо апріорі для зміщення θ є Beta(α, β), то апостеріорі також бета-розподіл:

Апріорі: θ ~ Beta(α, β). Правдоподібність: k гербів за n підкидів ~ Binomial(n, θ). Апостеріорі: θ | дані ~ Beta(α + k, β + (n − k))

// Середнє апостеріорі = (α+k)/(α+β+n) // Рівномірне апріорі: α=β=1 → середнє апостеріорі = (k+1)/(n+2) [згладжування Лапласа]

Інші спряжені пари

6. Баєсівський проти частотного підходу

Дискусія філософська, але практичні наслідки реальні:

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

Хибне тлумачення p-значення: частотне p-значення — це P(дані настільки ж екстремальні, як спостережувані | H₀ істинна), а не P(H₀ істинна | дані). Лише теорема Баєса перетворює дані на ймовірність гіпотези напряму.

7. JavaScript: баєсівський підкид монети та наївний Баєс

Послідовне баєсівське оновлення зміщення монети

// Бета-розподіл для зміщення монети θ ∈ [0,1]
// Аналітичне оновлення: після спостереження [герби, решки] збільшуємо α і β.
class BetaCoinInference {
  constructor(alpha = 1, beta = 1) {   // рівномірне апріорі
    this.alpha = alpha;
    this.beta  = beta;
  }
  observe(heads, tails) {
    this.alpha += heads;
    this.beta  += tails;
  }
  get mean()     { return this.alpha / (this.alpha + this.beta); }
  get variance() {
    const s = this.alpha + this.beta;
    return (this.alpha * this.beta) / (s * s * (s + 1));
  }
  get credible95() {
    // Грубий 95% HPD через нормальне наближення до бета-розподілу
    const mu  = this.mean;
    const std = Math.sqrt(this.variance);
    return [Math.max(0, mu - 1.96*std), Math.min(1, mu + 1.96*std)];
  }
}

const coin = new BetaCoinInference();
coin.observe(3, 1);
console.log(coin.mean.toFixed(3));         // 0.800 (апріорі α=β=1, дані 3 герби 1 решка → α=4,β=2)
coin.observe(7, 9);
console.log(coin.mean.toFixed(3));         // 0.526 (загалом 10 гербів 10 решок → середнє близько 0.5)
console.log(coin.credible95);               // [~0.36, ~0.69]

Наївний баєсівський спам-класифікатор

// Наївний Баєс: P(спам|слова) ∝ P(спам) × Π P(слово|спам)
// Припускає, що появи слів умовно незалежні за заданого класу.
class NaiveBayes {
  constructor() {
    this.counts  = { spam: {}, ham: {} };
    this.totals  = { spam: 0, ham: 0 };
    this.docCount= { spam: 0, ham: 0 };
  }
  train(text, label) {
    this.docCount[label]++;
    for (const word of text.toLowerCase().split(/\W+/)) {
      if (!word) continue;
      this.counts[label][word] = (this.counts[label][word] || 0) + 1;
      this.totals[label]++;
    }
  }
  _logP(word, label) {
    // Згладжування Лапласа: додаємо 1 до кожного підрахунку слів
    const vocabSize = Object.keys({...this.counts.spam, ...this.counts.ham}).length;
    const count = (this.counts[label][word] || 0) + 1;
    return Math.log(count / (this.totals[label] + vocabSize));
  }
  classify(text) {
    const words  = text.toLowerCase().split(/\W+/).filter(Boolean);
    const total  = this.docCount.spam + this.docCount.ham;
    const logSpam = Math.log(this.docCount.spam / total)
                   + words.reduce((s, w) => s + this._logP(w, 'spam'), 0);
    const logHam  = Math.log(this.docCount.ham  / total)
                   + words.reduce((s, w) => s + this._logP(w, 'ham'), 0);
    return logSpam > logHam ? 'spam' : 'ham';
  }
}

const nb = new NaiveBayes();
nb.train('free money win prize lottery', 'spam');
nb.train('click here to claim your reward', 'spam');
nb.train('meeting tomorrow at 3pm in the office', 'ham');
nb.train('please review the attached report', 'ham');

console.log(nb.classify('free prize money claim'));    // 'spam' (спам)
console.log(nb.classify('office meeting agenda review')); // 'ham' (не спам)

8. Застосування в різних галузях

Фільтрація Калмана (навігація)

Фільтр Калмана — це оптимальний баєсівський оцінювач для лінійних гаусових систем. Кожен крок оновлення за вимірюванням застосовує теорему Баєса — множить гаусове апріорі на гаусову правдоподібність, щоб отримати гаусове апостеріорі — за допомогою матричних рівнянь у замкненій формі. GPS-приймачі, автопілоти літаків і локалізація роботів — усі вони використовують фільтри Калмана.

Баєсівські нейронні мережі

Замість навчання єдиного вектора ваг баєсівська нейронна мережа вчить апостеріорний розподіл над вагами. Це дає каліброване оцінювання невизначеності та природну регуляризацію (апостеріорі має пік в оцінці MAP, що дорівнює максимуму правдоподібності з L2-регуляризацією за гаусового апріорі). Варіаційне висновування та Monte Carlo dropout — практичні наближення.

A/B-тестування та оптимізація коефіцієнта конверсії

Замість очікування фіксованого обсягу вибірки та проведення частотного тесту баєсівське A/B-тестування безперервно оновлює апостеріорі над коефіцієнтами конверсії θA та θB. Ви можете обчислити P(θB > θA | дані) у будь-який момент і зупинитися раніше з повним кількісним вираженням впевненості — уникаючи водночас недостатньо потужних тестів і роздутих хибних спрацювань через довільну зупинку.

Інтерактивна ймовірність

Досліджуйте випадкові блукання, дошки Гальтона та центральну граничну теорему — і побачте, як апостеріорні розподіли звужуються зі зростанням обсягу вибірки.

Відкрити симуляцію →

Джерела