
Aprendizaje No Supervisado — Asociación (parte 2)
Apriori, FP‑Growth y Eclat: tres formas de encontrar patrones sin perderse en millones de combinaciones
Ya sabes qué buscan las reglas de asociación. Ahora toca lo interesante: cómo demonios las encuentran.
En el capítulo anterior aprendiste que las reglas de asociación no agrupan, sino que conectan: descubren qué productos viajan juntos en la misma cesta. Y conociste a los tres jueces que deciden si una regla vale la pena: soporte (¿pasa mucho?), confianza (¿es fuerte?) y lift (¿es real o casualidad?).
Pero dejamos una pregunta colgada en el aire, y es justo la más incómoda:
«Vale, pero… ¿cómo encuentra el algoritmo esos patrones entre miles de productos y millones de cestas?»
Porque a mano sería, literalmente, imposible. Y aquí no exagero: deja que te enseñe por qué.

El problema: por qué «probar todo» no es una opción
Imagina que tu tienda vende solo 10 productos. Parece poco, ¿verdad? Pues las combinaciones posibles entre esos 10 productos ya son más de mil. Sube a 50 productos y las combinaciones se van a los cuatrillones. Con 200 productos, el número es tan absurdo que no hay ordenador en el planeta capaz de revisarlas una por una antes de que el sol se apague.
Este es el famoso problema de la explosión combinatoria: cada producto nuevo que añades no suma opciones, las multiplica. Por eso no basta con «mirar todas las cestas». Hacen falta algoritmos listos que encuentren los itemsets frecuentes (los grupos de productos que aparecen juntos a menudo) sin revisarlo todo.
Y aquí es donde entran nuestros tres protagonistas. Tres personalidades muy distintas, un mismo objetivo:
- Apriori → el clásico. Va paso a paso y poda lo que no sirve.
- FP‑Growth → el rápido. Comprime todas las cestas en un árbol.
- Eclat → el minimalista. Cruza listas y ya está.
Vamos con cada uno, sin prisa.
Apriori — el algoritmo que poda el infinito
Apriori es el más antiguo y el más fácil de entender de los tres. Su idea es tan simple que parece de sentido común, pero es brillante:
Si una combinación grande es frecuente, todas sus partes pequeñas también tienen que serlo. Y al revés: si una combinación pequeña es rara, cualquier combinación más grande que la contenga será todavía más rara.
Piénsalo con la cabeza fría: si leche + pan casi nadie los compra juntos, ¿tiene sentido molestarse en mirar leche + pan + huevos? No. Va a ser aún menos frecuente. Apriori ni lo intenta. Y ahí está su superpoder: en lugar de revisar millones de combinaciones, descarta ramas enteras de golpe.
La intuición: como quien cocina por niveles
Apriori funciona igual que alguien montando recetas por complejidad:
- Primero mira los ingredientes sueltos. ¿Qué productos son populares por sí solos? Los que casi nadie compra, fuera.
- Luego los combina de dos en dos. Pero solo usa los que sobrevivieron al paso anterior.
- Después de tres en tres. Otra vez, solo con los supervivientes.
- Y así sucesivamente, subiendo de nivel, tirando a la basura todo lo que no llega al soporte mínimo.
Un ejemplo en nuestra tienda
Supongamos que ponemos el listón en un soporte mínimo del 5%. Apriori mira primero los productos sueltos y descubre que las gafas de sol solo aparecen en el 2% de las cestas. Adiós: quedan descartadas. A partir de ese momento, Apriori jamás volverá a considerar ninguna combinación que incluya gafas de sol (ni «gafas + gorra», ni «gafas + protector solar», ni nada). De un plumazo se ha ahorrado revisar cientos de combinaciones inútiles. Eso es podar el infinito.
| ✅ Ventajas | ❌ Desventajas |
|---|---|
| Facilísimo de entender | Se vuelve lento con muchos productos |
| Facilísimo de implementar | Genera demasiados candidatos por el camino |
| Perfecto para datasets pequeños o medianos | Escala mal con millones de transacciones |
FP‑Growth — el algoritmo que comprime el universo
FP‑Growth nació precisamente para arreglar el punto débil de Apriori: generaba demasiados candidatos y se atascaba. Y su solución es un cambio de mentalidad total:
En lugar de ir probando combinaciones una a una, ¿y si comprimo todas las cestas en una sola estructura que ya revele los patrones?
Esa estructura se llama FP‑tree (árbol de patrones frecuentes). Es, básicamente, todos los tickets de tu tienda apretujados en un solo árbol.
La intuición: comprimir en vez de enumerar
FP‑Growth hace esto:
- Ordena los productos por popularidad, del más vendido al menos vendido.
- Construye un árbol donde cada rama representa una cesta.
- Y aquí está el truco: las cestas que comparten productos comparten rama. No se repiten.
- Luego extrae los patrones directamente del árbol, sin generar listas interminables de candidatos.
Piénsalo así: si 3.000 clientes compraron «camiseta + pantalón», Apriori los trataría como 3.000 casos que hay que ir contando. FP‑Growth los mete a todos en la misma rama del árbol y listo. Es como comprimir miles de tickets en un ZIP que, además, ya te enseña los patrones al abrirlo.
| ✅ Ventajas | ❌ Desventajas |
|---|---|
| Mucho más rápido que Apriori | Más complejo de implementar |
| No genera candidatos innecesarios | Hay que entender bien cómo funciona el FP‑tree |
| Ideal para grandes volúmenes de datos | El árbol puede ocupar bastante memoria |
Eclat — el algoritmo que cruza listas
Eclat es el más minimalista de los tres. Ni árboles, ni candidatos paso a paso. Su idea cabe en una frase:
Cada producto aparece en ciertas cestas. Si cruzas esas listas de cestas, encuentras al instante lo que se compra junto.
En vez de mirar la tabla «por filas» (cesta a cesta), Eclat le da la vuelta y la mira «por columnas»: para cada producto guarda la lista de cestas donde aparece. A eso se le llama formato vertical.
La intuición: intersecar es encontrar
Imagina que tienes esto guardado:
- camiseta → aparece en las cestas
{1, 3, 5, 8, 10} - pantalón → aparece en las cestas
{3, 5, 8, 11}
¿Quieres saber en cuántas cestas aparecen los dos juntos? No hace falta recorrer nada raro: solo cruzas (intersecas) las dos listas y te quedas con lo que tienen en común:
Tres cestas. Si eso supera tu soporte mínimo, ya tienes un patrón frecuente. Y lo mejor: para encontrar tríos, solo sigues cruzando esa lista resultante con la del siguiente producto. Puro cruce de conjuntos, nada más.
| ✅ Ventajas | ❌ Desventajas |
|---|---|
| Muy rápido con datos en formato vertical | Las listas pueden crecer enormemente |
| Conceptualmente simplísimo | No es tan eficiente con datos dispersos |
| Ideal para datasets densos | Depende mucho del formato de los datos |
Los tres, cara a cara
Tres filosofías distintas para el mismo destino. Así se ven una al lado de la otra:
| Algoritmo | Su filosofía | Brilla cuando… | Sufre cuando… |
|---|---|---|---|
| Apriori | Genera candidatos y poda los raros | Quieres entenderlo y el dataset es pequeño/mediano | Hay muchísimos productos |
| FP‑Growth | Comprime las cestas en un árbol | Tienes millones de transacciones y necesitas velocidad | Necesitas algo simple de programar |
| Eclat | Cruza listas de cestas | Los datos son densos y están en formato vertical | Los datos son muy dispersos |
¿Cuál elijo? El diagrama de decisión
Para que no te líes a la hora de la verdad, aquí tienes el resumen visual:

En una frase: Apriori para aprender y para datos pequeños, FP‑Growth cuando el volumen es enorme, y Eclat cuando tus datos son densos y están en formato vertical.
En resumen
Los tres persiguen exactamente lo mismo (descubrir qué productos aparecen juntos con frecuencia), pero cada uno lo hace a su manera:
- Apriori poda: descarta las combinaciones raras antes de perder tiempo con ellas.
- FP‑Growth comprime: aprieta todas las cestas en un árbol que ya revela los patrones.
- Eclat cruza: interseca las listas de cestas y encuentra las coincidencias al vuelo.
Tres caminos distintos, un mismo final: encontrar los itemsets frecuentes que luego se convertirán en esas reglas de asociación (A → B) tan útiles con las que abrimos el capítulo anterior. Poda, compresión o intersección: elige tu herramienta según el tamaño y la forma de tus datos, y deja que el algoritmo haga el trabajo imposible por ti.

