Introducció

L'algorisme DBSCAN (Density-Based Spatial Clustering of Applications with Noise) és una tècnica d'agrupament basada en la densitat que és capaç de trobar grups de diferents formes i mides en dades espacials, així com identificar punts de soroll (outliers). A diferència d'altres mètodes com K-means, DBSCAN no requereix especificar el nombre de grups a priori.

Conceptes Clau

Abans de profunditzar en l'algorisme, és important entendre alguns conceptes bàsics:

  • Punt central (core point): Un punt és considerat central si té almenys un nombre mínim de punts (MinPts) dins d'un radi especificat (ε).
  • Punt frontera (border point): Un punt que no és central però que està dins del radi ε d'un punt central.
  • Punt de soroll (noise point): Un punt que no és ni central ni frontera.

Paràmetres de DBSCAN

DBSCAN utilitza dos paràmetres principals:

  1. ε (eps): El radi dins del qual es buscaran els punts veïns.
  2. MinPts: El nombre mínim de punts necessaris per formar un punt central.

Algorisme DBSCAN

L'algorisme DBSCAN segueix els següents passos:

  1. Inicialització: Selecciona un punt no visitat aleatòriament.
  2. Veïnatge: Troba tots els punts dins del radi ε del punt seleccionat.
  3. Classificació:
    • Si el nombre de punts veïns és major o igual a MinPts, el punt és un punt central i es crea un nou grup.
    • Si no, el punt es marca com a soroll (aquest punt pot ser reclasificat més tard si es troba dins del radi ε d'un altre punt central).
  4. Expansió: Per a cada punt del veïnatge, si és un punt central, es repeteix el procés per trobar els seus veïns i expandir el grup.
  5. Repetició: Es repeteixen els passos fins que tots els punts han estat visitats.

Exemple Pràctic

A continuació, es presenta un exemple pràctic de com utilitzar DBSCAN amb Python utilitzant la biblioteca scikit-learn.

Instal·lació de les Biblioteques Necessàries

pip install numpy scikit-learn matplotlib

Codi d'Exemple

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons

# Generar dades sintètiques
X, _ = make_moons(n_samples=300, noise=0.05, random_state=0)

# Aplicar DBSCAN
dbscan = DBSCAN(eps=0.2, min_samples=5)
labels = dbscan.fit_predict(X)

# Visualitzar els resultats
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.title('Clustering amb DBSCAN')
plt.xlabel('Característica 1')
plt.ylabel('Característica 2')
plt.show()

Explicació del Codi

  1. Generació de Dades: Utilitzem make_moons per generar un conjunt de dades sintètiques amb dues llunes intercalades.
  2. Aplicació de DBSCAN: Configurem DBSCAN amb eps=0.2 i min_samples=5, i apliquem l'algorisme a les dades.
  3. Visualització: Utilitzem matplotlib per visualitzar els resultats de l'agrupament.

Exercici Pràctic

Exercici

Utilitza l'algorisme DBSCAN per agrupar el següent conjunt de dades sintètiques generat amb make_blobs:

from sklearn.datasets import make_blobs

# Generar dades sintètiques
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# Aplicar DBSCAN
# Completa el codi aquí

# Visualitzar els resultats
# Completa el codi aquí

Solució

from sklearn.datasets import make_blobs

# Generar dades sintètiques
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# Aplicar DBSCAN
dbscan = DBSCAN(eps=0.5, min_samples=5)
labels = dbscan.fit_predict(X)

# Visualitzar els resultats
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.title('Clustering amb DBSCAN')
plt.xlabel('Característica 1')
plt.ylabel('Característica 2')
plt.show()

Errors Comuns i Consells

  • Selecció de Paràmetres: La selecció adequada dels paràmetres eps i min_samples és crucial per obtenir bons resultats. Prova diferents valors i utilitza tècniques com l'anàlisi de gràfics de distància per ajudar a determinar els valors òptims.
  • Dades Escalades: Assegura't que les dades estiguin escalades adequadament, ja que DBSCAN és sensible a les distàncies.
  • Soroll: Si hi ha molt soroll en les dades, ajusta els paràmetres per evitar que massa punts siguin classificats com a soroll.

Conclusió

DBSCAN és una eina poderosa per a l'agrupament de dades, especialment útil per a conjunts de dades amb formes irregulars i presència de soroll. La seva capacitat per identificar punts de soroll i formar grups de diferents formes el fa molt versàtil en diverses aplicacions.

Amb això, has après els fonaments de l'algorisme DBSCAN, com aplicar-lo i alguns consells per millorar els resultats. En el següent mòdul, explorarem altres tècniques d'agrupament no supervisat.

Curs de Machine Learning

Mòdul 1: Introducció al Machine Learning

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats