
Aprendizaje No Supervisado — Clustering
DBSCAN: el algoritmo que encuentra grupos sin pedir permiso
El modelo que no necesita que le digas cuántos grupos hay… y que además detecta el ruido por sí solo.
En el capítulo anterior conocimos a K‑means, un algoritmo ordenado, casi educado: tú le dices cuántos grupos quieres, él busca centros, recoloca puntos y te entrega clusters redonditos y bien definidos. Todo muy limpio, todo muy predecible.
DBSCAN es justo lo contrario.
DBSCAN es rebelde. No quiere que le digas cuántos grupos hay. No quiere formas perfectas. No quiere que le marques el camino.
Lo único que le importa es la densidad. Busca zonas donde los puntos están juntos, apretados, formando «barrios». Y si encuentra un punto solitario, perdido en mitad de la nada… lo marca como ruido sin pestañear.
Hoy vas a conocer el algoritmo que descubre grupos justo donde K‑means levanta las manos y se rinde.

El ejemplo que nos acompaña
Sigamos con nuestra tienda online, la misma del capítulo anterior. Tienes miles de clientes y de cada uno sabes solo dos cosas: cuánto gasta al mes y cuántas veces compra.
Pero esta vez hay un detalle incómodo: algunos clientes no se parecen a nadie. Junto al grupo compacto de compradores fieles y al de clientes esporádicos, se cuela un puñado de casos rarísimos:
- uno que compra 40 veces al mes pero gasta una miseria (¿revendedor? ¿bot?),
- otro que compra una sola vez al año pero se deja una fortuna,
- y otro que, sencillamente, no sigue ningún patrón reconocible.
K‑means intentaría meter a estos tres en algún grupo aunque no encajen, arrastrando sus centros y estropeando la segmentación de paso. DBSCAN no. DBSCAN los mira, decide que no pertenecen a ningún barrio y los aparta como ruido. Y esa capacidad de decir «esto sobra» es precisamente su superpoder.
La intuición: DBSCAN busca «barrios»
K‑means buscaba centros. DBSCAN busca zonas densas.
Imagina el mapa de una ciudad visto desde un avión. Hay barrios donde las casas están pegadas unas a otras, calles llenas de vida, plazas con gente. Y luego hay descampados, solares vacíos, casas aisladas en mitad del campo.
DBSCAN hace exactamente eso:
- donde ve mucha gente junta → dice «esto es un cluster»,
- donde ve una casa perdida y sola → dice «esto es ruido».
Es un algoritmo que piensa como un urbanista: recorre el mapa y va marcando dónde hay vida de barrio y dónde solo hay silencio.
Los tres tipos de puntos
Para hacer ese trabajo, DBSCAN clasifica cada punto en una de tres categorías. Es más fácil de lo que suena si sigues pensando en el mapa de la ciudad:
- Core point (núcleo). Un punto que tiene muchos vecinos cerca. Es el corazón del barrio, la plaza central donde se junta todo el mundo.
- Border point (frontera). Un punto que está pegado a un núcleo pero tiene pocos vecinos propios. Es la casa del borde del barrio: todavía pertenece a él, pero ya casi toca el campo.
- Noise point (ruido). Un punto aislado, sin vecinos suficientes. Es la casa perdida en mitad de la nada, sin barrio al que pertenecer.
Esta clasificación es lo que hace a DBSCAN tan potente: detecta los outliers de forma natural, como un efecto secundario de su forma de trabajar, sin que tú tengas que salir a buscarlos.
Los dos parámetros clave: eps y min_samples
Lo bonito es que, para hacer todo esto, DBSCAN solo necesita dos números:
eps→ el radio de vecindad. Responde a la pregunta «¿qué significa estar cerca?». Es hasta dónde miras alrededor de cada punto para contar vecinos.min_samples→ cuántos vecinos hacen falta para ser un núcleo. Responde a «¿cuántas casas hacen un barrio?».
La magia ocurre cuando combinas los dos. Por ejemplo, conmin_samples = 4: un punto se convierte en núcleo si dentro de su radioepsencuentra al menos 4 vecinos. Si tiene menos vecinos pero está dentro del radio de un núcleo, es frontera. Y si no cumple ninguna de las dos cosas, es ruido.
El equilibrio entre ambos lo cambia todo:
- si
epses muy pequeño → solo detecta barrios ultracompactos y marca casi todo lo demás como ruido, - si
epses muy grande → junta zonas que no deberían ir juntas y acaba con un mega‑cluster que se lo come todo, - si
min_sampleses alto → exige mucha densidad, así que forma pocos clusters y muy exigentes, - si
min_sampleses bajo → forma clusters con demasiada facilidad, y hasta el ruido acaba pareciendo un grupo.
Elegir bien estos dos números es el 90% del trabajo con DBSCAN. Un truco habitual para acertar conepses ordenar cada punto por la distancia a su vecino más cercano y buscar el «codo» en esa curva, igual que hacíamos con el método del codo en K‑means.
¿Por qué DBSCAN es tan distinto a K‑means?
DBSCAN rompe, una por una, casi todas las reglas de K‑means:
- No necesita que le digas K. No tienes que adivinar cuántos grupos hay; los descubre él solito a partir de la densidad.
- Detecta formas raras. K‑means solo se lleva bien con grupos redonditos. DBSCAN encuentra clusters curvos, alargados, con huecos… formas que parecen serpientes, lunas o manchas de café.
- Detecta ruido. K‑means mete a todo el mundo en algún grupo por narices. DBSCAN deja fuera a quien no encaja.
- No depende de centroides. No hay centros que recolocar una y otra vez. Solo hay densidad, vecinos y radios.
Para verlo de un vistazo:
| K‑means | DBSCAN | |
|---|---|---|
| ¿Hay que elegir el número de grupos? | Sí (eliges K a mano) | No (los descubre solo) |
| Formas que detecta | Solo redondeadas y compactas | Cualquier forma: curvas, alargadas, con huecos |
| ¿Qué hace con los outliers? | Los mete a la fuerza en un grupo | Los aparta como ruido |
| Parámetros a ajustar | K | epsymin_samples |
| Velocidad en datasets enormes | Muy rápido | Más lento |
| Sensible a densidades desiguales | Menos | Sí, mucho (su gran talón de Aquiles) |
Ventajas y desventajas de DBSCAN
Como todo en machine learning, DBSCAN no es magia: brilla en unos escenarios y se hunde en otros. Conviene tenerlo claro antes de soltarlo sobre tus datos.
| ✅ Ventajas | ❌ Desventajas |
|---|---|
| No tienes que elegir K de antemano | Elegirepspuede ser complicado y requiere pruebas |
| Detecta outliers automáticamente | Falla cuando los grupos tienen densidades muy distintas |
| Funciona con clusters de formas arbitrarias | Escala peor que K‑means en datasets gigantes |
| Muy intuitivo si piensas en términos de densidad | Sensible a la escala de los datos: hay que normalizar sí o sí |
| Ideal para datos con «barrios» naturales | Un mismoepsno sirve si unos barrios son densos y otros dispersos |
Sobre esa última pega: si tus datos tienen unas zonas muy apretadas y otras muy sueltas, un únicoepsno puede contentar a las dos, y ahí DBSCAN empieza a tropezar. Para esos casos existen variantes como HDBSCAN, pero esa es otra historia.
¿Cuándo usar DBSCAN y cuándo no?
Para que no te equivoques, aquí tienes el resumen visual de cuándo DBSCAN es tu aliado y cuándo mejor mirar hacia otro algoritmo:

En resumen, DBSCAN es tu amigo cuando los clusters tienen formas raras, cuando hay outliers que quieres cazar, cuando no sabes cuántos grupos hay o cuando K‑means te devuelve resultados absurdos. Y no es tu amigo cuando las densidades son muy dispares, cuando necesitas velocidad extrema sobre millones de puntos o cuando los datos, sencillamente, no tienen estructura de densidad.
En resumen
- DBSCAN agrupa datos sin etiquetas buscando zonas densas en lugar de centros.
- No necesitas decirle cuántos grupos hay: los descubre él a partir de la densidad.
- Clasifica cada punto como núcleo, frontera o ruido, y así detecta outliers de forma natural.
- Solo depende de dos parámetros,
eps(qué es estar cerca) ymin_samples(cuántos vecinos hacen un barrio), y elegirlos bien es casi todo el trabajo. - Encuentra formas que K‑means jamás podría detectar, pero sufre cuando las densidades son muy desiguales.

