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
- Probabilitat condicionada
- El teorema de Bayes: derivació i interpretació
- Priors, likelihood i posterior
- Exemple numèric complet: frau en comandes de MercaFresh
- El parany dels falsos positius (fal·làcia del fiscal)
- Freqüentisme vs. bayesianisme (breu)
- 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:
- P(A ∩ B) = P(A|B) · P(B)
- 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.193np.where(condicio, a, b)assigna a cada comanda la seva probabilitat d'alerta segons sigui frau o no; compararrng.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
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
- El flux de treball d'un projecte de Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Correlació i covariància
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
- Neteja de dades
- Gestió de dades mancants
- Transformació de dades
- Codificació de variables categòriques
- Normalització i estandardització
- Enginyeria de característiques
Mòdul 4: Algorismes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K veïns més propers (K-NN)
- Naive Bayes
- Xarxes neuronals
Mòdul 5: Algorismes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
- Visualització de dades amb t-SNE i UMAP
Mòdul 6: Avaluació i Validació de Models
- Divisió de dades: entrenament, validació i prova
- Mètriques d'avaluació
- Validació creuada
- Corba ROC i AUC
- Overfitting i underfitting
Mòdul 7: Tècniques Avançades i Optimització
- Regularització: Ridge, Lasso i Elastic Net
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privadesa
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a les xarxes socials
- Projecte 4: Detecció de fraus
- Projecte 5: Segmentació de clients
