Tanquem el mòdul de fonaments amb el resultat de probabilitat més influent en Machine Learning. La lliçó anterior va acabar amb una pregunta pendent: com actualitzar de manera racional el que ja creiem quan arriba evidència nova? El teorema de Bayes és exactament això: una regla per revisar probabilitats a la llum de les dades. A més de sostenir un classificador clàssic que veurem al mòdul 4, el raonament bayesià és imprescindible per interpretar correctament sistemes de detecció —de frau, de malalties, d'spam— on la intuïció humana falla estrepitosament. El construirem pas a pas des de la probabilitat condicionada i l'aplicarem al detector de comandes fraudulentes de MercaFresh.

Contingut

  1. Probabilitat condicionada
  2. El teorema de Bayes: derivació i interpretació
  3. Priors, likelihood i posterior
  4. Exemple numèric complet: frau en comandes de MercaFresh
  5. El parany dels falsos positius (fal·làcia del fiscal)
  6. Freqüentisme vs. bayesianisme (breu)
  7. Bayes en Machine Learning

Probabilitat condicionada

La probabilitat condicionada P(A|B) —llegeix-la "probabilitat d'A donat B"— és la probabilitat d'A sabent que B ha passat:

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

on P(A ∩ B) és la probabilitat que passin totes dues. Condicionar és restringir l'univers: ja no considerem tots els casos possibles, només aquells on B es compleix.

Exemple MercaFresh: si el 3 % de totes les comandes són contra reemborsament i a més fraudulentes, i el 9 % de les comandes són contra reemborsament, aleshores:

P(frau | contra_reemborsament) = 0,03 / 0,09 = 0,33

Entre les comandes contra reemborsament, un terç són fraudulentes, encara que el frau global sigui molt menor.

El punt crucial —origen de gairebé tots els errors d'intuïció— és que P(A|B) ≠ P(B|A):

  • P(mullat | plou) ≈ 1, però P(plou | mullat) és menor (pot haver-te tocat un aspersor).
  • A MercaFresh: P(alerta | frau) —quina proporció de fraus dispara l'alerta— no és el mateix que P(frau | alerta) —quina proporció d'alertes són fraus reals. La segona és la que li importa a l'equip que revisa alertes, i sol ser sorprenentment baixa. Aquesta lliçó gira al voltant de com passar de l'una a l'altra.

El teorema de Bayes: derivació i interpretació

La derivació cap en tres línies. La probabilitat conjunta es pot escriure de dues maneres:

  1. P(A ∩ B) = P(A|B) · P(B)
  2. P(A ∩ B) = P(B|A) · P(A)

Igualant totes dues i aïllant P(A|B):

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

Això és tot el teorema: una conseqüència directa de la definició de probabilitat condicionada. El seu poder és a la lectura: permet invertir el condicionament, calcular la direcció que ens interessa —P(hipòtesi | evidència)— a partir de la direcció que solem conèixer —P(evidència | hipòtesi)—.

Quan el denominador P(B) no es coneix directament, es calcula amb la llei de la probabilitat total, sumant sobre totes les maneres en què B pot passar. Per a una hipòtesi H i la seva negació ¬H:

P(B) = P(B|H) · P(H) + P(B|¬H) · P(¬H)

Aquesta versió "expandida" és la que farem servir a l'exemple numèric.

Priors, likelihood i posterior

En l'ús inferencial del teorema, cada peça té nom propi:

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

Terme Nom Significat MercaFresh (frau)
P(H) Prior (a priori) El que crèiem abans de veure l'evidència Taxa base de frau: 1 % de les comandes
P(E|H) Likelihood (versemblança) Probabilitat de l'evidència si la hipòtesi és certa P(alerta | frau): sensibilitat del detector
P(E) Evidència Probabilitat total d'observar E P(alerta): proporció total de comandes amb alerta
P(H|E) Posterior (a posteriori) La creença actualitzada després de veure l'evidència P(frau | alerta): el que volem saber
graph LR
    A["Prior<br>P(H)"] --> C["Teorema de Bayes"]
    B["Evidencia nova<br>likelihood P(E|H)"] --> C
    C --> D["Posterior<br>P(H|E)"]
    D -. "el posterior d'avui es<br>el prior de dema" .-> A

La fletxa puntejada és la idea més elegant de l'enfocament: l'aprenentatge és iteratiu. Cada nova evidència converteix el posterior en el prior del càlcul següent. En cert sentit, "aprendre de les dades" —la definició mateixa de ML de la lliçó 01-01— és aplicar Bayes una vegada i una altra.

Exemple numèric complet: frau en comandes de MercaFresh

MercaFresh instal·la un detector automàtic de comandes fraudulentes. Dades del sistema:

  • Prior: l'1 % de les comandes són fraudulentes. P(F) = 0,01.
  • Sensibilitat (likelihood): si una comanda és fraudulenta, el detector la marca el 95 % de les vegades. P(alerta|F) = 0,95.
  • Taxa de falsos positius: si una comanda és legítima, el detector s'equivoca i la marca el 4 % de les vegades. P(alerta|¬F) = 0,04.

Pregunta: arriba una alerta. Quina probabilitat hi ha que la comanda sigui realment fraudulenta? Intuïció típica: "el detector encerta el 95 %, així que ~95 %". Vegem-ho.

Pas 1 — Probabilitat total d'alerta (llei de probabilitat total):

P(alerta) = P(alerta|F)·P(F) + P(alerta|¬F)·P(¬F) P(alerta) = 0,95 · 0,01 + 0,04 · 0,99 = 0,0095 + 0,0396 = 0,0491

Pas 2 — Bayes:

P(F|alerta) = P(alerta|F) · P(F) / P(alerta) = 0,0095 / 0,0491 ≈ 0,193

Només el 19,3 % de les alertes correspon a frau real. Quatre de cada cinc alertes són falses alarmes, amb un detector "del 95 %".

La manera més clara de veure-ho és amb freqüències naturals sobre 10.000 comandes:

Alerta Sense alerta Total
Fraudulentes (1 %) 95 (veritables positius) 5 (fraus no detectats) 100
Legítimes (99 %) 396 (falsos positius) 9.504 9.900
Total 491 9.509 10.000

De les 491 alertes, només 95 són frau: 95/491 ≈ 19,3 %. El culpable és el prior: el frau és tan rar que fins i tot una petita taxa d'error sobre l'enorme massa de comandes legítimes (4 % de 9.900 = 396) ofega els veritables positius. Aquesta taula és, en essència, una taula de confusió de probabilitats; al mòdul 6 (lliçó 06-02) la retrobarem com a matriu de confusió d'un classificador, amb mètriques com la precisió (que aquí seria exactament aquest 19,3 %).

Verifiquem-ho amb codi, dues vegades: per fórmula i per simulació.

import numpy as np

# --- Via 1: formula de Bayes ---
p_frau = 0.01            # prior
p_alerta_si_frau = 0.95    # sensibilitat (likelihood)
p_alerta_si_legitim = 0.04 # taxa de falsos positius

p_alerta = (p_alerta_si_frau * p_frau
            + p_alerta_si_legitim * (1 - p_frau))
posterior = p_alerta_si_frau * p_frau / p_alerta
print(f"P(frau | alerta) = {posterior:.3f}")       # 0.193

# --- Via 2: simulacio d'1 milio de comandes ---
rng = np.random.default_rng(42)
n = 1_000_000
es_frau = rng.random(n) < p_frau                   # 1% de fraus reals
prob_alerta = np.where(es_frau, p_alerta_si_frau, p_alerta_si_legitim)
alerta = rng.random(n) < prob_alerta               # el detector actua

print(f"Simulat: {es_frau[alerta].mean():.3f}")    # ~0.193
  • np.where(condicio, a, b) assigna a cada comanda la seva probabilitat d'alerta segons sigui frau o no; comparar rng.random(n) amb aquesta probabilitat simula el resultat (el truc Bernoulli de la lliçó 02-02).
  • es_frau[alerta] filtra les comandes amb alerta, i el seu .mean() és la fracció que són frau: el posterior empíric. Fórmula i simulació coincideixen.

Iterant el prior: suposem que la comanda amb alerta a més és contra reemborsament, i sabem que P(reemborsament|F) = 0,30 davant P(reemborsament|¬F) = 0,08. Fem servir el posterior anterior (0,193) com a nou prior:

P(F | alerta, reemborsament) = (0,30 · 0,193) / (0,30 · 0,193 + 0,08 · 0,807) ≈ 0,47

Dues evidències moderades han portat la probabilitat de l'1 % al 47 %. Així acumula evidència un raonador bayesià. (Compte: encadenar-ho així assumeix que les evidències són independents donat el frau; aquesta suposició "ingènua" té nom propi i el veurem de seguida.)

El parany dels falsos positius (fal·làcia del fiscal)

Confondre P(evidència|innocent) amb P(innocent|evidència) es coneix com a fal·làcia del fiscal, per casos judicials reals on es va argumentar "la probabilitat d'aquesta coincidència en un innocent és de l'1 %, per tant és culpable al 99 %". Com acabes de veure, si la hipòtesi és rara a priori, el posterior pot ser baixíssim encara que el test sembli excel·lent.

Regles pràctiques que es deriven de l'exemple:

  • Amb esdeveniments rars, mana el prior. Cap detector no llueix amb una taxa base de l'1 %: pregunta sempre "quants casos reals hi ha per cada falsa alarma possible?".
  • Pensa en freqüències naturals ("de cada 10.000 comandes...") en lloc de percentatges condicionats: la taula de recomptes fa obvi el que les fórmules amaguen.
  • El cost operatiu dels falsos positius és real: amb 491 alertes diàries i només 95 fraus, l'equip de revisió de MercaFresh dedica el 80 % del seu temps a comandes legítimes (i potser molesta bons clients bloquejant-los). Apujar el llindar del detector redueix alertes però deixa escapar fraus: és el mateix compromís tipus I / tipus II de la lliçó 02-04, ara en versió probabilística.

Freqüentisme vs. bayesianisme (breu)

Les dues grans escoles de l'estadística difereixen en què vol dir "probabilitat":

Aspecte Freqüentista Bayesià
Probabilitat és... Freqüència a llarg termini d'un esdeveniment repetible Grau de creença, actualitzable amb dades
Els paràmetres (μ, p...) són... Fixos però desconeguts Variables amb la seva pròpia distribució
Eines típiques p-valors, intervals de confiança (lliçó 02-04) Priors, posteriors, intervals de credibilitat
"P(hipòtesi) = 0,9" té sentit? No (la hipòtesi és certa o falsa) Sí (és un grau de creença)
Punt fort Procediments objectius i estandarditzats Incorpora coneixement previ; ideal amb poques dades
Punt feble Interpretació retorçada (recorda l'IC del 95 %) Triar el prior té una part subjectiva

En la pràctica del ML modern totes dues conviuen sense drama: avaluem models amb mètodes freqüentistes (tests, intervals) i fem servir idees bayesianes en classificadors, regularització o estimació d'incertesa. Són caixes d'eines complementàries, no religions enfrontades.

Bayes en Machine Learning

  • Naive Bayes (lliçó 04-06). L'encadenament d'evidències que hem fet amb "alerta + contra reemborsament" és literalment el mecanisme del classificador Naive Bayes: combina moltes característiques assumint que són independents donada la classe (d'aquí el naive, ingenu) i tria la classe amb el posterior més gran. Al mòdul 4 el construirem per classificar; aquí ja en tens tota la matemàtica.
  • Interpretar classificadors. Qualsevol detector (churn, frau, spam) que doni probabilitats s'ha de llegir en clau bayesiana: la utilitat de les seves alertes depèn de la taxa base, no només del seu "encert".
  • Pensament d'actualització. Els sistemes que aprenen incrementalment —ajustant creences comanda a comanda— segueixen el cicle prior → evidència → posterior que has practicat.

Errors Comuns i Consells

  • Invertir el condicionament. P(A|B) ≠ P(B|A) és *l'*error. Davant de qualsevol percentatge condicionat, pregunta't: condicionat a què?
  • Ignorar la taxa base. Un test del 95 % sobre un esdeveniment de l'1 % produeix majoria de falses alarmes. Calcula sempre el posterior abans de refiar-te d'una alerta.
  • Oblidar el denominador. P(E) ha d'incloure totes les maneres d'observar l'evidència (fraus detectats + falses alarmes). Ometre el segon sumand infla el posterior.
  • Encadenar evidències correlacionades com si fossin independents. Si dos senyals són gairebé el mateix (import alt i nre. d'articles alt), multiplicar les seves aportacions compta la mateixa evidència dues vegades i exagera el posterior; recorda les correlacions de 02-03.
  • Tractar el prior com un caprici. En aplicacions reals el prior surt de dades històriques (la taxa de frau observada), no d'una intuïció. Documenta'l com qualsevol altra dada.
  • Consell: quan un càlcul bayesià et confongui, tradueix-lo a una taula de freqüències sobre 10.000 casos, com la d'aquesta lliçó. És infal·lible per recuperar la intuïció.

Exercicis

Exercici 1

A MercaFresh, el 20 % dels clients són del segment "família nombrosa". Entre ells, el 60 % compra la marca blanca; entre la resta de clients, només el 25 %. Arriba una comanda amb marca blanca: quina és la probabilitat que sigui d'una família nombrosa? Planteja prior, likelihood i evidència abans de calcular.

Exercici 2

El detector de frau de MercaFresh es recalibra: manté la sensibilitat en 0,95 però redueix els falsos positius de 0,04 a 0,01. Amb el mateix prior de l'1 %, recalcula P(frau|alerta) amb la fórmula de Bayes i reconstrueix la taula de 10.000 comandes. Quant millora el ràtio d'alertes útils?

Exercici 3

Adapta la simulació de NumPy de l'exemple per verificar el teu resultat de l'exercici 2 amb un milió de comandes. Després respon: si en lloc de millorar el detector, la taxa de frau pugés de l'1 % al 5 % (detector original: 0,95 / 0,04), quin posterior obtindries? Què ensenya la comparació de tots dos escenaris?

Solucions

Solució 1

  • Prior: P(FN) = 0,20. Likelihood: P(MB|FN) = 0,60. A més, P(MB|¬FN) = 0,25.
  • Evidència: P(MB) = 0,60·0,20 + 0,25·0,80 = 0,12 + 0,20 = 0,32.
  • Posterior: P(FN|MB) = 0,12 / 0,32 = 0,375.

Veure marca blanca gairebé duplica la probabilitat de família nombrosa (del 20 % al 37,5 %), però continua sent més probable que la comanda no ho sigui: l'evidència actualitza, no sentencia.

Solució 2

  • P(alerta) = 0,95·0,01 + 0,01·0,99 = 0,0095 + 0,0099 = 0,0194.
  • P(F|alerta) = 0,0095 / 0,0194 ≈ 0,49.

Taula sobre 10.000 comandes: 95 veritables positius i 99 falsos positius → 194 alertes, de les quals gairebé la meitat són frau real. Reduir els falsos positius del 4 % a l'1 % (sense tocar la sensibilitat) apuja les alertes útils del 19 % al 49 % i redueix les alertes diàries de 491 a 194: per a esdeveniments rars, abaixar la taxa de falsos positius rendeix molt més que apujar la sensibilitat.

Solució 3

import numpy as np
rng = np.random.default_rng(0)
n = 1_000_000

def posterior_simulat(p_frau, sens, fp):
    es_frau = rng.random(n) < p_frau
    alerta = rng.random(n) < np.where(es_frau, sens, fp)
    return es_frau[alerta].mean()

print(posterior_simulat(0.01, 0.95, 0.01))  # ~0.49  (exercici 2, verificat)
print(posterior_simulat(0.05, 0.95, 0.04))  # ~0.556 (frau al 5%, detector original)

Amb fórmula, el segon escenari: P(alerta) = 0,95·0,05 + 0,04·0,95 = 0,0855, posterior = 0,0475/0,0855 ≈ 0,556. Moralitat: el posterior depèn tant del detector com del prior. Un mateix detector passa de generar un 80 % de falses alarmes a ser majoritàriament fiable només perquè el fenomen és més freqüent. Per això un model de ML validat en un entorn (o una època) amb una taxa base pot degradar-se en canviar aquesta taxa: un fenomen de deriva que reprendrem en parlar de monitoratge al mòdul 8.

Conclusió

Has tancat el mòdul amb la joia de la probabilitat aplicada: partint de la probabilitat condicionada has derivat el teorema de Bayes, has après el vocabulari prior–likelihood–posterior i l'has aplicat al detector de frau de MercaFresh, descobrint que un detector "del 95 %" produeix quatre falses alarmes per cada frau real quan l'esdeveniment és rar, i que l'evidència s'acumula iterant el teorema. També has situat les escoles freqüentista i bayesiana com a eines complementàries i has deixat anotat que el classificador Naive Bayes del mòdul 4 no és res més que aquest teorema convertit en algorisme. Amb això acaben els fonaments d'estadística i probabilitat: ja saps descriure dades, modelar-ne l'aleatorietat, mesurar relacions, quantificar la incertesa i actualitzar creences. Al mòdul 3 posarem aquestes eines a treballar sobre dades reals i imperfectes: començarem per la neteja de dades, el pas on els datasets de MercaFresh —amb els seus duplicats, errors i valors impossibles— es preparen per alimentar els models.

Curs de Machine Learning

Mòdul 1: Introducció al Machine Learning

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algorismes de Machine Learning Supervisat

Mòdul 5: Algorismes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2026. Tots els drets reservats