Faza 01 · lecția 07

Teorema lui Bayes

Scopul lecției: Probabilitatea descrie ceea ce vă așteptați să se întâmple. Teorema lui Bayes descrie ceea ce aflați.

Versiunea curentă AlexBred.com: primele 100 de lecții ale programului în limba română.

Curs
AI Engineering from Scratch
Fază
Fundamente matematice
Lectură
22 min.
Verificat
Cuprinsul lecției
  1. Obiective de învățare
  2. Problema
  3. Conceptul
  4. De la probabilitatea comună la teorema lui Bayes
  5. Cele patru componente
  6. Exemplul testului medical
  7. Exemplul filtrului de spam
  8. Naive Bayes: ipoteza independenței
  9. Estimarea prin verosimilitate maximă (MLE)
  10. Estimarea prin maxim a posteriori (MAP)
  11. Abordarea bayesiană și cea frecventistă: diferența practică
  12. De ce contează gândirea bayesiană în învățarea automată
  13. Construirea implementării
  14. Pasul 1: funcția pentru teorema lui Bayes
  15. Pasul 2: clasificatorul Naive Bayes
  16. Pasul 3: antrenarea pe date de spam
  17. Pasul 4: examinarea probabilităților învățate
  18. Utilizarea implementării
  19. Livrarea rezultatului
  20. Distribuții a priori conjugate
  21. Actualizarea bayesiană secvențială
  22. Legătura cu testarea A/B
  23. Exerciții
  24. Termeni-cheie
  25. Lecturi suplimentare

Probabilitatea descrie ceea ce vă așteptați să se întâmple. Teorema lui Bayes descrie ceea ce aflați.

Tip: Construire Limbaj: Python Cerințe preliminare: Faza 1, lecția 06 (Probabilități și distribuții) Durată: ~75 de minute

Obiective de învățare

  • Aplicarea teoremei lui Bayes pentru calcularea probabilităților a posteriori pe baza probabilităților a priori, a verosimilităților și a evidenței
  • Construirea de la zero a unui clasificator de text Naive Bayes cu netezire Laplace și calcule în spațiul logaritmic
  • Compararea estimărilor MLE și MAP și explicarea corespondenței dintre MAP și regularizarea L2
  • Implementarea actualizării bayesiene secvențiale folosind distribuții a priori conjugate Beta–Binomial pentru testarea A/B

Problema

Un test medical are o acuratețe de 99%. Rezultatul testului dvs. este pozitiv. Care este probabilitatea să aveți într-adevăr boala?

Majoritatea oamenilor răspund 99%. Răspunsul real depinde de raritatea bolii. Dacă o persoană din 10.000 are boala, un rezultat pozitiv înseamnă doar o probabilitate de aproximativ 1% să fiți bolnavi. Celelalte 99% dintre rezultatele pozitive sunt alarme false provenite de la persoane sănătoase.

Nu este o întrebare-capcană. Este teorema lui Bayes. Orice filtru de spam, orice diagnostic medical și orice model de învățare automată care cuantifică incertitudinea folosesc exact acest raționament. Porniți de la o convingere. Observați o dovadă. Apoi vă actualizați convingerea.

Dacă construiți sisteme de învățare automată fără să înțelegeți acest mecanism, veți interpreta greșit ieșirile modelelor, veți stabili praguri necorespunzătoare și veți lansa predicții excesiv de sigure.

Conceptul

De la probabilitatea comună la teorema lui Bayes

Din lecția 06 știți deja că probabilitatea condiționată este:

P(A|B) = P(A și B) / P(B)

Iar prin simetrie:

P(B|A) = P(A și B) / P(A)

Ambele expresii au același numărător: P(A și B). Egalați-le și rearanjați termenii:

P(A și B) = P(A|B) * P(B) = P(B|A) * P(A)

Prin urmare:

P(A|B) = P(B|A) * P(A) / P(B)

Aceasta este teorema lui Bayes: patru mărimi și o singură ecuație.

Cele patru componente

Componentă Denumire Semnificație
P(A|B) Probabilitate a posteriori Convingerea actualizată despre A după observarea evidenței B
P(B|A) Verosimilitate Cât de probabilă este evidența B dacă A este adevărată
P(A) Probabilitate a priori Convingerea despre A înainte de observarea oricărei evidențe
P(B) Evidență Probabilitatea totală de a observa B în toate situațiile posibile

Termenul de evidență P(B) are rol de normalizare. Îl puteți dezvolta folosind formula probabilității totale:

P(B) = P(B|A) * P(A) + P(B|nu A) * P(nu A)

Exemplul testului medical

O boală afectează o persoană din 10.000. Testul are o acuratețe de 99%: detectează 99% dintre persoanele bolnave și produce rezultate fals pozitive în 1% dintre cazuri.

P(bolnav)          = 0.0001     (a priori: boala este rară)
P(pozitiv|bolnav) = 0.99        (verosimilitate: testul detectează boala)
P(pozitiv|sănătos) = 0.01       (rata rezultatelor fals pozitive)

P(pozitiv) = P(pozitiv|bolnav) * P(bolnav) + P(pozitiv|sănătos) * P(sănătos)
            = 0.99 * 0.0001 + 0.01 * 0.9999
            = 0.000099 + 0.009999
            = 0.010098

P(bolnav|pozitiv) = P(pozitiv|bolnav) * P(bolnav) / P(pozitiv)
                  = 0.99 * 0.0001 / 0.010098
                  = 0.0098
                  = 0.98%

Mai puțin de 1%. Probabilitatea a priori domină. Când o afecțiune este rară, chiar și testele performante produc în majoritate rezultate fals pozitive. Din acest motiv, medicii solicită teste de confirmare.

Exemplul filtrului de spam

Primiți un e-mail care conține cuvântul „lottery”. Este spam?

P(spam)                = 0.3      (30% dintre e-mailuri sunt spam)
P("lottery"|spam)      = 0.05     (5% dintre mesajele spam conțin „lottery”)
P("lottery"|nu spam)  = 0.001    (0.1% dintre mesajele legitime conțin „lottery”)

P("lottery") = 0.05 * 0.3 + 0.001 * 0.7
             = 0.015 + 0.0007
             = 0.0157

P(spam|"lottery") = 0.05 * 0.3 / 0.0157
                  = 0.955
                  = 95.5%

Un singur cuvânt modifică probabilitatea de la 30% la 95,5%. Un filtru de spam real aplică teorema lui Bayes simultan asupra a sute de cuvinte.

Naive Bayes: ipoteza independenței

Naive Bayes extinde mecanismul la mai multe caracteristici, presupunând că toate caracteristicile sunt independente condiționat de clasă:

P(clasă | caracteristică_1, caracteristică_2, ..., caracteristică_n)
  = P(clasă) * P(caracteristică_1|clasă) * P(caracteristică_2|clasă) * ... * P(caracteristică_n|clasă)
    / P(caracteristică_1, caracteristică_2, ..., caracteristică_n)

Caracterul „naiv” provine din ipoteza independenței. Într-un text, aparițiile cuvintelor nu sunt independente: „New” și „York” sunt corelate. Totuși, ipoteza funcționează surprinzător de bine în practică, deoarece clasificatorul trebuie doar să ordoneze clasele, nu să producă probabilități calibrate.

Deoarece numitorul este același pentru toate clasele, îl puteți omite și puteți compara doar numărătorii:

scor(clasă) = P(clasă) * produsul valorilor P(caracteristică_i | clasă)

Alegeți clasa cu scorul cel mai mare.

Estimarea prin verosimilitate maximă (MLE)

Cum obțineți P(caracteristică|clasă) din datele de antrenare? Prin numărare.

P("free"|spam) = (numărul mesajelor spam care conțin „free”) / (numărul total al mesajelor spam)

Aceasta este estimarea prin verosimilitate maximă (maximum likelihood estimation, MLE): alegeți valorile parametrilor care fac ca datele observate să fie cât mai verosimile. Maximizați funcția de verosimilitate, care, în cazul numărărilor discrete, se reduce la frecvența relativă.

Problema este că, dacă un cuvânt nu apare niciodată în mesajele spam din datele de antrenare, MLE îi atribuie probabilitatea zero. Un singur cuvânt nevăzut anulează întregul produs. Remediați această problemă prin netezire Laplace:

P(cuvânt|clasă) = (număr(cuvânt, clasă) + 1) / (total_cuvinte_din_clasă + dimensiunea_vocabularului)

Adăugarea valorii 1 la fiecare numărătoare garantează că nicio probabilitate estimată pentru un cuvânt din vocabular nu va fi zero.

Notă tehnică a traducerii: În sens strict, netezirea Laplace adaugă exact 1 fiecărei numărători. Forma generalizată care adaugă o constantă pozitivă alpha se numește netezire Lidstone; parametrul smoothing al implementării de mai jos permite această generalizare.

Estimarea prin maxim a posteriori (MAP)

MLE întreabă: ce parametri maximizează P(date|parametri)?

MAP întreabă: ce parametri maximizează P(parametri|date)?

Conform teoremei lui Bayes:

P(parametri|date) este proporțională cu P(date|parametri) * P(parametri)

MAP adaugă o distribuție a priori asupra parametrilor. Dacă presupuneți că parametrii trebuie să aibă valori mici, exprimați această convingere printr-o distribuție a priori care penalizează valorile mari. Forma regularizării rezultate depinde de distribuția a priori: o distribuție gaussiană conduce la o penalizare L2, iar o distribuție Laplace conduce la o penalizare L1. Penalizarea „ridge” din regresia ridge corespunde unei distribuții gaussiene a priori asupra ponderilor.

Estimare Optimizează Echivalent în învățarea automată
MLE P(date|parametri) Antrenare fără regularizare
MAP P(date|parametri) * P(parametri) Regularizare determinată de distribuția a priori, de exemplu L2 pentru o distribuție gaussiană sau L1 pentru una Laplace

Notă tehnică a traducerii: MAP nu este echivalentă în mod necondiționat cu regularizarea L1 sau L2. Echivalența se obține după aplicarea logaritmului negativ și depinde de forma și scara distribuției a priori, precum și de modelul de verosimilitate.

Abordarea bayesiană și cea frecventistă: diferența practică

Frecventiștii tratează parametrii ca valori fixe necunoscute. Ei întreabă: „Ce s-ar întâmpla dacă aș repeta acest experiment de multe ori?”

Bayesienii tratează parametrii ca distribuții. Ei întreabă: „Ținând cont de ceea ce am observat, ce cred despre parametri?”

Pentru construirea sistemelor de învățare automată, diferența practică este:

Aspect Frecventist Bayesian
Rezultat Estimare punctuală Distribuție asupra valorilor
Incertitudine Intervale de încredere (despre procedură) Intervale de credibilitate (despre parametru)
Volum mic de date Poate produce supraînvățare Distribuția a priori are rol de regularizare
Calcul De obicei mai rapid Necesită adesea eșantionare (MCMC)

Majoritatea sistemelor de învățare automată din producție folosesc abordarea frecventistă: SGD și estimări punctuale. Metodele bayesiene excelează când aveți nevoie de o incertitudine calibrată, de exemplu în decizii medicale și sisteme critice pentru siguranță, sau când datele sunt puține, ca în învățarea cu puține exemple (few-shot learning) și pornirea la rece (cold start).

De ce contează gândirea bayesiană în învățarea automată

Legătura este mai profundă decât o simplă analogie:

Distribuțiile a priori pot induce regularizare. O distribuție gaussiană a priori asupra ponderilor corespunde regularizării L2. O distribuție Laplace a priori corespunde regularizării L1. Mai general, un termen de regularizare poate fi interpretat drept logaritmul negativ al unei distribuții a priori numai dacă definește o distribuție validă după normalizare.

Distribuțiile a posteriori exprimă incertitudinea. O singură probabilitate prezisă nu indică gradul de siguranță al modelului în estimarea respectivă. Metodele bayesiene oferă o distribuție: „Cred că P(spam) se află între 0,8 și 0,95”.

Actualizările bayesiene reprezintă învățare online. Distribuția a posteriori de astăzi devine distribuția a priori de mâine. Când modelul observă date noi, își actualizează treptat convingerile, în loc să fie reantrenat de la zero.

Compararea modelelor este bayesiană. Criteriul informațional bayesian (BIC), verosimilitatea marginală și factorii Bayes folosesc raționamentul bayesian pentru a alege între modele fără supraînvățare.

bayes-update

Construirea implementării

Pasul 1: funcția pentru teorema lui Bayes

def bayes(prior, likelihood, false_positive_rate):
    evidence = likelihood * prior + false_positive_rate * (1 - prior)
    posterior = likelihood * prior / evidence
    return posterior

result = bayes(prior=0.0001, likelihood=0.99, false_positive_rate=0.01)
print(f"P(sick|positive) = {result:.4f}")

Pasul 2: clasificatorul Naive Bayes

import math
from collections import defaultdict

class NaiveBayes:
    def __init__(self, smoothing=1.0):
        self.smoothing = smoothing
        self.class_counts = defaultdict(int)
        self.word_counts = defaultdict(lambda: defaultdict(int))
        self.class_word_totals = defaultdict(int)
        self.vocab = set()

    def train(self, documents, labels):
        for doc, label in zip(documents, labels):
            self.class_counts[label] += 1
            words = doc.lower().split()
            for word in words:
                self.word_counts[label][word] += 1
                self.class_word_totals[label] += 1
                self.vocab.add(word)

    def predict(self, document):
        words = document.lower().split()
        total_docs = sum(self.class_counts.values())
        vocab_size = len(self.vocab)
        best_class = None
        best_score = float("-inf")
        for cls in self.class_counts:
            score = math.log(self.class_counts[cls] / total_docs)
            for word in words:
                count = self.word_counts[cls].get(word, 0)
                total = self.class_word_totals[cls]
                score += math.log((count + self.smoothing) / (total + self.smoothing * vocab_size))
            if score > best_score:
                best_score = score
                best_class = cls
        return best_class

Log-probabilitățile previn subdepășirea numerică (underflow). Înmulțirea multor probabilități mici produce numere prea mici pentru reprezentarea în virgulă mobilă. Adunarea log-probabilităților este stabilă numeric și echivalentă matematic.

Notă tehnică a traducerii: Implementarea didactică atribuie o probabilitate și cuvintelor care nu apar în vocabularul de antrenare, deși numitorul nu include o categorie pentru acestea. Pentru o distribuție normalizată și un comportament comparabil cu CountVectorizer, cuvintele necunoscute trebuie fie ignorate, fie mapate la un token special <UNK> inclus în vocabular și în numitor.

Pasul 3: antrenarea pe date de spam

train_docs = [
    "win free money now",
    "free lottery ticket winner",
    "claim your prize today free",
    "urgent offer free cash",
    "congratulations you won free",
    "meeting tomorrow at noon",
    "project update attached",
    "can we schedule a call",
    "quarterly report review",
    "lunch on thursday sounds good",
    "team standup notes attached",
    "please review the pull request",
]

train_labels = [
    "spam", "spam", "spam", "spam", "spam",
    "ham", "ham", "ham", "ham", "ham", "ham", "ham",
]

classifier = NaiveBayes()
classifier.train(train_docs, train_labels)

test_messages = [
    "free money waiting for you",
    "meeting rescheduled to friday",
    "you won a free prize",
    "please review the attached report",
]

for msg in test_messages:
    print(f"  '{msg}' -> {classifier.predict(msg)}")

Pasul 4: examinarea probabilităților învățate

def show_top_words(classifier, cls, n=5):
    vocab_size = len(classifier.vocab)
    total = classifier.class_word_totals[cls]
    probs = {}
    for word in classifier.vocab:
        count = classifier.word_counts[cls].get(word, 0)
        probs[word] = (count + classifier.smoothing) / (total + classifier.smoothing * vocab_size)
    sorted_words = sorted(probs.items(), key=lambda x: x[1], reverse=True)
    for word, prob in sorted_words[:n]:
        print(f"    {word}: {prob:.4f}")

print("\nTop spam words:")
show_top_words(classifier, "spam")
print("\nTop ham words:")
show_top_words(classifier, "ham")

Utilizarea implementării

Scikit-learn oferă implementări Naive Bayes pregătite pentru producție:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

vectorizer = CountVectorizer()
X_train = vectorizer.fit_transform(train_docs)
clf = MultinomialNB()
clf.fit(X_train, train_labels)

X_test = vectorizer.transform(test_messages)
predictions = clf.predict(X_test)
for msg, pred in zip(test_messages, predictions):
    print(f"  '{msg}' -> {pred}")

Același principiu de clasificare. CountVectorizer gestionează tokenizarea, construirea vocabularului și ignorarea cuvintelor necunoscute, iar MultinomialNB gestionează intern netezirea și log-probabilitățile. Versiunea construită de la zero ilustrează mecanismul de bază în 40 de linii, cu limitarea privind cuvintele din afara vocabularului menționată mai sus.

Livrarea rezultatului

Clasa NaiveBayes construită aici demonstrează întregul flux de procesare (pipeline): tokenizare, estimarea probabilităților cu netezire Laplace și predicție în spațiul logaritmic. Codul din code/bayes.py rulează integral, fără alte dependențe decât biblioteca standard Python.

Distribuții a priori conjugate

Când distribuția a priori și cea a posteriori aparțin aceleiași familii de distribuții, distribuția a priori se numește „conjugată”. Astfel, actualizarea bayesiană devine simplă din punct de vedere algebric: obțineți o distribuție a posteriori în formă închisă, fără integrare numerică.

Verosimilitate Distribuție a priori conjugată Distribuție a posteriori Exemplu
Bernoulli Beta(a, b) Beta(a + succese, b + eșecuri) Estimarea probabilității rezultatului „cap” la aruncarea unei monede
Normală (varianță cunoscută) Normală(mu_0, sigma_0) Normală(medie ponderată, varianță mai mică) Calibrarea senzorilor
Poisson Gamma(a, b) Gamma(a + suma numărărilor, b + n), când b este parametrul de rată Modelarea ratelor de sosire
Multinomială Dirichlet(alpha) Dirichlet(alpha + numărători) Modelarea temelor, modele lingvistice

De ce este important: fără distribuții a priori conjugate, aveți adesea nevoie de integrare numerică, eșantionare Monte Carlo sau inferență variațională pentru a aproxima distribuția a posteriori. Cu distribuții conjugate, actualizați direct parametrii familiei respective.

Notă tehnică a traducerii: Actualizarea Gamma(a + suma numărărilor, b + n) presupune parametrizarea distribuției Gamma prin formă și rată; pentru parametrizarea prin scară, formula diferă. Numărul parametrilor actualizați depinde de familie: Beta–Binomial folosește două valori, în timp ce o distribuție Dirichlet actualizează un vector întreg de parametri.

Distribuția Beta este cea mai frecventă distribuție a priori conjugată în practică. Beta(a, b) reprezintă convingerea despre un parametru de probabilitate. Media este a/(a+b). Cu cât a+b este mai mare, cu atât distribuția este mai concentrată, deci exprimă o siguranță mai mare.

Cazuri speciale ale distribuției Beta a priori:

  • Beta(1, 1) = uniformă. Nu aveți nicio convingere inițială despre parametru.
  • Beta(10, 10) = concentrată în jurul valorii 0,5. Aveți convingerea fermă că parametrul este apropiat de 0,5.
  • Beta(1, 10) = asimetrică spre 0. Considerați că parametrul are o valoare mică.

Regula de actualizare este extrem de simplă:

A priori:     Beta(a, b)
Date:         s succese, f eșecuri
A posteriori: Beta(a + s, b + f)

Fără integrale. Fără eșantionare. Doar adunare.

Actualizarea bayesiană secvențială

Inferența bayesiană este în mod natural secvențială. Distribuția a posteriori de astăzi devine distribuția a priori de mâine. În modelele care admit statistici suficiente actualizabile, precum Beta–Binomial, sistemele pot învăța incremental fără să reproceseze toate datele istorice.

Exemplu concret: estimarea probabilității ca o monedă să cadă cu fața „cap”.

Ziua 1: nu există încă date. Porniți de la Beta(1, 1), o distribuție a priori uniformă. Nu aveți nicio convingere inițială.

  • Media a priori: 0,5
  • Distribuția a priori este uniformă pe [0, 1]

Ziua 2: observați 7 rezultate „cap” și 3 rezultate „pajură”. Distribuția a posteriori = Beta(1 + 7, 1 + 3) = Beta(8, 4)

  • Media a posteriori: 8/12 = 0,667
  • Evidența sugerează că moneda favorizează rezultatul „cap”

Ziua 3: observați încă 5 rezultate „cap” și 5 rezultate „pajură”. Folosiți distribuția a posteriori de ieri ca distribuție a priori pentru astăzi. Distribuția a posteriori = Beta(8 + 5, 4 + 5) = Beta(13, 9)

  • Media a posteriori: 13/22 = 0,591
  • Noile date echilibrate au readus estimarea spre 0,5

Диаграмма к уроку «Teorema lui Bayes»

Ordinea observațiilor nu contează. Actualizarea Beta(1,1) cu toate cele 12 rezultate „cap” și 8 rezultate „pajură” deodată produce Beta(13, 9), adică același rezultat. În modelul Beta–Binomial, actualizarea secvențială și actualizarea pe loturi sunt echivalente matematic, iar distribuția a posteriori este rezumată de numărul cumulat de succese și eșecuri. Astfel, puteți lua decizii în fiecare etapă fără să stocați datele brute.

Notă tehnică a traducerii: Posibilitatea de a renunța la datele istorice se bazează aici pe existența unor statistici suficiente finite. Inferența bayesiană secvențială este generală, dar modelele fără asemenea statistici pot necesita păstrarea datelor, aproximări sau o reprezentare mai complexă a distribuției a posteriori.

Acesta este fundamentul învățării online în sistemele de învățare automată aflate în producție. Eșantionarea Thompson pentru probleme de tip bandit, sistemele de recomandare incrementale și detectoarele de anomalii în flux folosesc toate acest tipar.

Legătura cu testarea A/B

Testarea A/B poate fi formulată ca o problemă de inferență bayesiană, dar există și metode frecventiste de testare A/B.

Notă tehnică a traducerii: Secțiunea următoare descrie o abordare bayesiană a testării A/B. Alegerea cadrului bayesian sau frecventist depinde de întrebarea urmărită, de regula de decizie și de garanțiile statistice necesare.

Configurație: testați două culori pentru un buton. Varianta A este albastră, iar varianta B este verde. Doriți să aflați care dintre ele obține mai multe clicuri.

Testul A/B bayesian:

  1. Distribuții a priori. Porniți de la Beta(1, 1) pentru ambele variante. Nu favorizați inițial niciuna.
  2. Date. Varianta A: 50 de clicuri din 1.000 de afișări. Varianta B: 65 de clicuri din 1.000 de afișări.
  3. Distribuții a posteriori.
    • A: Beta(1 + 50, 1 + 950) = Beta(51, 951). Media = 0,051
    • B: Beta(1 + 65, 1 + 935) = Beta(66, 936). Media = 0,066
  4. Decizie. Calculați P(B > A), probabilitatea ca rata reală de conversie pentru B să fie mai mare decât cea pentru A.

Calcularea analitică a P(B > A) este dificilă. Însă metoda Monte Carlo o face foarte simplă:

1. Extrageți 100.000 de eșantioane din Beta(51, 951)  -> samples_A
2. Extrageți 100.000 de eșantioane din Beta(66, 936)  -> samples_B
3. P(B > A) = proporția eșantioanelor pentru care B > A

Dacă P(B > A) > 0,95, lansați varianta B. Dacă valoarea este între 0,05 și 0,95, continuați colectarea datelor. Dacă P(B > A) < 0,05, lansați varianta A.

Avantajele față de testarea A/B frecventistă:

  • Obțineți o afirmație probabilistică directă: „există o probabilitate de 97% ca B să fie mai bună”
  • Fără confuzia valorii p și fără formulări evazive precum „nu putem respinge ipoteza nulă”
  • Puteți monitoriza distribuția a posteriori pe parcurs, însă o regulă de oprire bazată pe un prag posterior trebuie calibrată separat dacă doriți garanții frecventiste asupra ratei rezultatelor fals pozitive
  • Puteți include cunoștințe a priori, de exemplu faptul că testele anterioare sugerează de obicei rate de conversie între 3% și 8%
Aspect Test A/B frecventist Test A/B bayesian
Rezultat Valoare p P(B > A)
Interpretare „Cât de surprinzătoare sunt aceste date dacă A=B?” „Cât de probabil este ca B să fie mai bună decât A?”
Oprire anticipată Verificarea repetată necorectată poate crește rata rezultatelor fals pozitive Posteriorul rămâne interpretabil în cadrul modelului, dar rata frecventistă a rezultatelor fals pozitive nu este garantată automat
Cunoștințe a priori Nu sunt folosite Codificate ca distribuție Beta a priori
Regula de decizie p < 0,05 P(B > A) > prag

Notă tehnică a traducerii: Oprirea opțională nu invalidează automat inferența bayesiană atunci când modelul și distribuția a priori sunt specificate coerent, dar nici nu păstrează automat o rată frecventistă prestabilită a rezultatelor fals pozitive. Pentru o asemenea garanție, regula de monitorizare și oprire trebuie evaluată sau calibrată explicit.

Exerciții

  1. Teste multiple. Un pacient obține de două ori un rezultat pozitiv la teste independente, ambele având o acuratețe de 99%, iar prevalența bolii fiind de o persoană din 10.000. Care este P(bolnav) după ambele teste? Folosiți probabilitatea a posteriori de la primul test ca probabilitate a priori pentru al doilea.

  2. Efectul netezirii. Rulați clasificatorul de spam cu valorile de netezire 0,01, 0,1, 1,0 și 10,0. Cum se modifică probabilitățile celor mai relevante cuvinte? Ce se întâmplă când smoothing=0 și un cuvânt apare numai în mesajele ham?

  3. Adăugați caracteristici. Extindeți clasa NaiveBayes astfel încât să folosească și lungimea mesajului (scurt/lung) drept caracteristică, pe lângă numărătoarea cuvintelor. Estimați P(scurt|spam) și P(scurt|ham) din datele de antrenare și includeți rezultatul în scorul predicției.

  4. Calculați MAP manual. Pentru datele observate (7 rezultate „cap” în 10 aruncări ale monedei), calculați estimarea MAP a probabilității de apariție a rezultatului „cap”, folosind o distribuție a priori Beta(2,2). Comparați-o cu estimarea MLE (7/10).

Termeni-cheie

Termen Cum îi spune lumea Ce înseamnă de fapt
Probabilitate a priori „Estimarea mea inițială” P(ipoteză) înainte de observarea evidenței. În anumite modele, logaritmul său negativ induce un termen de regularizare.
Verosimilitate „Cât de bine se potrivesc datele” P(evidență|ipoteză). Cât de probabile sunt datele observate în condițiile unei anumite ipoteze.
Probabilitate a posteriori „Convingerea mea actualizată” P(ipoteză|evidență). Probabilitatea a priori înmulțită cu verosimilitatea, apoi normalizată.
Evidență „Constanta de normalizare” P(date) pentru toate ipotezele. Garantează că suma probabilităților a posteriori este 1.
Naive Bayes „Acel clasificator de text simplu” Un clasificator care presupune că toate caracteristicile sunt independente condiționat de clasă. Funcționează bine, deși ipoteza este falsă.
Netezire Laplace „Netezire prin adăugarea valorii unu” Adăugarea exactă a valorii 1 la numărătoarea fiecărei caracteristici, pentru a preveni probabilitățile zero asociate datelor nevăzute. Adăugarea unei alte constante pozitive este netezire Lidstone.
MLE „Folosiți direct frecvențele” Alegerea parametrilor care maximizează P(date|parametri). Nu folosește o distribuție a priori și poate produce supraînvățare când datele sunt puține.
MAP „MLE cu o distribuție a priori” Alegerea parametrilor care maximizează P(date|parametri) * P(parametri). Poate fi interpretată ca MLE regularizată, forma regularizării fiind determinată de distribuția a priori.
Log-probabilitate „Lucrați în spațiul logaritmic” Folosirea log(P) în loc de P pentru a evita subdepășirea în virgulă mobilă atunci când se înmulțesc multe numere mici.
Rezultat fals pozitiv „O alarmă greșită” Testul indică un rezultat pozitiv, deși starea reală este negativă. Contribuie la eroarea neglijării ratei de bază.

Lecturi suplimentare


Sursă: Bayes’ Theorem — original

Navigare: înapoi: 01.06 — Probabilități și distribuții · Faza 1 — Fundamente matematice · Catalog complet · în continuare: 01.08 — Optimizare.