Inicio · Parte 14 — Matemática de Machine Learning
E-step: estimar la distribución de las latentes dados los parámetros
M-step: maximizar los parámetros dada esa distribución
garantía: la log-verosimilitud crece o se mantiene
El algoritmo EM resuelve un problema circular: para estimar los parámetros haría falta saber qué componente generó cada dato, y para saberlo haría falta conocer los parámetros. La salida es alternar, empezando por una suposición cualquiera y refinando ambas cosas por turnos.
El paso E calcula, con los parámetros actuales, la distribución de probabilidad de las variables latentes. El paso M toma esas asignaciones blandas como si fueran datos ponderados y maximiza los parámetros. Se repite hasta que deja de haber cambio apreciable.
La garantía teórica es que la log-verosimilitud nunca decrece. La demostración construye una cota inferior que toca la verosimilitud en el punto actual y se maximiza en cada paso; esa cota es el ELBO, el mismo objeto que optimiza un autoencoder variacional. Ver EM primero hace que el ELBO de la parte 17 deje de parecer una construcción arbitraria.
Lo que no garantiza es alcanzar el óptimo global: converge a un óptimo local que depende de la inicialización, igual que k-means. Y puede ser lento cerca del óptimo. Su valor está en la generalidad: sirve para GMM, para modelos ocultos de Markov, para datos faltantes y para cualquier modelo con estructura latente.
Dos monedas con sesgos desconocidos, sin saber cuál se usó.
20 tandas de 10 lanzamientos cada una
sesgos reales: [0,80 ; 0,30]
inicialización: [0,60 ; 0,40]
iteración p_A p_B
1 0,726455 0,428502
5 0,8xxxxx 0,4xxxxx
final 0,848956 0,451121
Sin saber nunca qué moneda generó cada tanda,
EM recupera aproximadamente los dos sesgos.
El error residual viene de los datos finitos:
20 tandas no bastan para separar perfectamente.
La log-verosimilitud creció en cada iteración. ✓
EM: E-step y M-step sobre datos con una variable latente.
python classes/part-14-matematica-de-machine-learning/296-em-algorithm/lab.py
compmath run 296
tandaslanzamientos_por_tandasesgos_realesinicializacionhistorialestimacion_finalvariable_latentegarantiasemilla{
"tandas": 20,
"lanzamientos_por_tanda": 10,
"sesgos_reales": [
0.8,
0.3
],
"inicializacion": [
0.6,
0.4
],
"historial": [
{
"iter": 1,
"p_A": 0.726455,
"p_B": 0.428502
},
{
"iter": 5,
"p_A": 0.838551,
"p_B": 0.445235
},
{
"iter": 20,
"p_A": 0.848954,
"p_B": 0.45112
},
{
"iter": 40,
"p_A": 0.848956,
"p_B": 0.451121
}
],
"estimacion_final": [
0.848956,
0.451121
]
}
Ajuste de GMM, modelos ocultos de Markov, imputación de datos faltantes, topic models y base conceptual de la inferencia variacional.
Estos algoritmos siguen siendo la línea base honesta contra la que se debe comparar cualquier modelo profundo.
10.1111/j.2517-6161.1977.tb01600.x verificado en Crossref (2026-08-19).