Inicio · Parte 14 — Matemática de Machine Learning
p(x) = Σ πₖ·N(x | μₖ, σₖ²)
responsabilidad: γₖ(x) = πₖN(x|μₖ,σₖ²) / p(x)
Σ πₖ = 1
Una mezcla de gaussianas es un modelo generativo: supone que cada punto se generó eligiendo primero una componente según los pesos π y muestreando después de su normal. Ajustar el modelo es estimar los pesos, las medias y las varianzas que mejor explican los datos observados.
Su diferencia con k-means es la asignación blanda. En vez de decidir a qué grupo pertenece cada punto, calcula la probabilidad de pertenecer a cada uno —la responsabilidad—. Un punto entre dos grupos recibe 0,5 y 0,5 en vez de una asignación arbitraria, y esa información es valiosa: identifica los casos ambiguos.
La segunda diferencia es la flexibilidad de forma. k-means impone grupos esféricos del mismo tamaño; un GMM con covarianza completa modela grupos elípticos, rotados y de tamaños distintos. De hecho k-means es el caso límite de un GMM con covarianzas esféricas iguales y responsabilidades llevadas al extremo.
El ajuste se hace con EM, y la log-verosimilitud crece monótonamente, lo que sirve de comprobación de la implementación. Hay una trampa conocida: si una componente colapsa sobre un solo punto, su varianza tiende a cero y la verosimilitud a infinito. Se evita con una cota inferior en la varianza o con regularización.
Mezcla de dos componentes ajustada por EM.
componentes: 2
medias: (−1,3009 ; 1,9702)
varianzas: ( 0,3721 ; 0,9484)
pesos de mezcla: ( 0,4481 ; 0,5519) suman 1 ✓
log-verosimilitud por iteración:
−145,345385
−144,860751
−144,766128
Nunca baja ✓
Las varianzas son distintas: 0,37 frente a 0,95.
k-means habría impuesto grupos del mismo tamaño y
habría clasificado mal la frontera entre ambos.
Mezcla de gaussianas: asignación blanda en lugar de dura.
python classes/part-14-matematica-de-machine-learning/295-gaussian-mixture-models/lab.py
compmath run 295
componentesmediasvarianzaspesos_de_mezclalog_verosimilitudla_log_verosimilitud_nunca_bajaasignacion_blandakmeans_es_el_caso_limite{
"componentes": 2,
"medias": [
-1.3009,
1.9702
],
"varianzas": [
0.3721,
0.9484
],
"pesos_de_mezcla": [
0.4481,
0.5519
],
"log_verosimilitud": [
-145.345385,
-144.860751,
-144.766128
],
"la_log_verosimilitud_nunca_baja": true
}
Agrupamiento probabilístico, modelado de densidad, detección de anomalías, separación de hablantes y segmentación de imágenes.
Estos algoritmos siguen siendo la línea base honesta contra la que se debe comparar cualquier modelo profundo.