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:
- ε (eps): El radi dins del qual es buscaran els punts veïns.
- MinPts: El nombre mínim de punts necessaris per formar un punt central.
Algorisme DBSCAN
L'algorisme DBSCAN segueix els següents passos:
- Inicialització: Selecciona un punt no visitat aleatòriament.
- Veïnatge: Troba tots els punts dins del radi ε del punt seleccionat.
- 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).
- 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.
- 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
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
- Generació de Dades: Utilitzem
make_moons
per generar un conjunt de dades sintètiques amb dues llunes intercalades. - Aplicació de DBSCAN: Configurem DBSCAN amb
eps=0.2
imin_samples=5
, i apliquem l'algorisme a les dades. - 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
imin_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
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus