A Density-Based Algorithm for
Discovering Clusters in Large Spatial
Databases with Noise
M. Ester, H-P. Kriegel, J. Sander, X. Xu
Apresentação: Léia Michelle de Souza
Algoritmos Baseados em
Densidade


Esses algoritmos assumem que os clusters
são regiões de alta densidade de padrões
separadas por regiões com baixa densidade,
no espaço de padrões.
Um cluster é definido como um componente
denso conectado em qualquer direção dada
pela densidade.
Densidade – Características
Principais





Descoberta de grupos de forma arbitrária;
Tratamento de Ruído;
Apenas uma escaneada;
É necessário parâmetros de densidade como
condições.
Separar regiões de objetos de alta e baixa
densidade.
DBScan – Density Based Spatial Clustering
of Applications with Noise

É um algoritmo baseado em densidade para
agrupar os objetos ou pontos.
1. Parâmetros

Para se iniciar um algoritmo DBScan é
necessário definir dois parâmetros principais:

Raio - Distância entre um objeto (Ponto) e
seus vizinhos.

MinPts - Objetos(Pontos) Central.
2. Parâmetros
Eps
Valor que descreve a Medida de Proximidade, isto é,
quantos pontos vizinhos próximos, um par de pontos
necessita ter em comum para serem considerados
próximos.
Raio máximo da vizinhança
 MinPts
Valor relativo a densidade mínima, ou seja, número de
vizinhos próximos que um ponto precisa ter para ser
considerado “Core Point”.
Número de pontos mínimo em Eps desse ponto.

3. Parâmetros





Neps(p) : {q  D | dist(p,q) < = Eps}
Um ponto p é alcançável pela densidade de
um ponto q Eps, MinPts se:
1) p  Neps(q)
2)Condição de Ponto Núcleo:
|Neps(q)| >= MinPts
Exemplo 1
p : border point
q : core point
q
p
MinPts = 5
Eps = 1cm
1. Densidades

Alcançável pela Densidade

Um ponto p é alcançável pela densidade de um ponto q
Eps, MinPts se existe uma cadeia de pontos p1,...,pn,p1
= q,pn = p tal que pi+1 é diretamente alcançável pela
Densidade de pi.
p
q
p1
2. Densidades


Conectado pela Densidade
Um ponto p é conectado pela densidade a
um ponto q Eps, MinPts se existir um ponto
O para ambos, p e q são alcançáveis pela
densidade de O.
p
q
O
1. Regras para gerar Clusters




Um ponto pertence a um cluster K somente se estiver
localizado no raio de um ponto central do cluster;
Um ponto central p, no raio de um outro ponto central pi
qualquer, precisa pertencer ao mesmo cluster K;
Um ponto não central p, no raio de um ponto central
p1...pi, onde i>0 precisa pertencer ao mesmo cluster
cujo objeto central esteja entre p1...pi;
Um ponto não central p que não estiver no raio de
nenhum objeto central é considerado ruído.
2. Regras para gerar Clusters



Para a geração de Clusters é necessário que
se teste o raio de cada ponto da base de
dados. Se o raio de um objeto (ponto) p
contém mais de um ponto central (MinPts),
então criaremos um novo Clusters para o
objeto p.
Os objetos (pontos) no raio p são então
adicionados ao novo Cluster.
Pode-se ocorrer que um objeto central que já
pertença a um Cluster, seja encontrado
dentro de outro Cluster.
3. Regras para gerar Clusters

Os dois Clusters serão agrupados em um só
e o processo se encerra quando não existir
novos pontos a serem adicionados a
qualquer Cluster.
C2
C1
Algoritmo do DBScan
P
Escolha um Ponto arbitrariamente
Recupere todos os pontos alcançáveis
pela densidade de p,Eps,MinPts
Se p é um ponto core, forma-se um grupo
Se p é um ponto fronteira, não há pontos alcançáveis
pela densidade de p, visitar o próximo ponto
Continue o processo até que todos os pontos tenham sido processados
Distância entre dois pontos





Dist(S1,S2) = min{dist(p,q) | p  S1,q  S2}
DBScan (SetOfPoints, Eps,MinPts)
//SetOfPoints is UNCLASSIFIED
ClusterId : = nextId(NOISE);
FOR i FROM 1 TO SetOfPoints.size DO
 Point :=SetOfPoints.get(i);
 IF Point.ClId = UNCLASSIFIED THEN
IF
ExpandCluster(SetOfPoints,Point,ClusterId,E
ps,MinPts) THEN
 ClusterId := nextId(ClusterId)
 END IF

END IF
END FOR
END;//DBScan



Clusters



ExpandCluster(SetOfPoints,Point,ClId,Eps,Minpts):Boolean;
seeds:=SetOfPoints,regionQuery(Point,Eps);
IF seeds.size<MinPts THEN

SetOfPint.changeClId(Point,NOISE);

RETURN false;

ELSE

SetOfPoints.changeClIds(seeds,ClId);

Seeds.delete(Point);

While seeds <> Empty DO







END IF
END;
CurrentP:=seeds.firts();
Result:= SetOfPoints.regionQuery(currentP,Eps);
IF result.size > = MinPts THEN

FOR i FROM 1 TO result.size DO

resultP:=result.get(i);

IF resultP.ClId

IN {UNCLASSIFIED,NOISE} THEN

IF resultP.ClId = UNCLASSIFIED THEN

seeds.append(resultP);

END IF

SetOfPoints.changeClId(result,ClId);

END IF

END FOR
END IF
Seeds.delete(currentP);
END WHILE
RETURN True;
Parâmetros
Valor de Eps
Valor de MinPt
Resultado
Alto
Alto
Poucos clusters grandes e densos
Baixo
Baixo
Muitos clusters pequenos e menos
densos
Alto
Baixo
Clusters grandes e menos densos
Baixo
Alto
Clusters pequenos e densos
Avaliação de desempenho
Agrupamentos descobertos por CLARANS
Avaliação de desempenho
Agrupamentos descobertos por DBSCAN
Run Time em segundos
Algoritmo DBScan

Vantagem


Eficiente em tratar grandes bases de dados
Menos sensível a ruídos
Forma clusters de formato arbitrário
Usuário não precisa especificar a quantidade de clusters

Desvantagem

Sensível aos parâmetros de entrada(Eps e MinPt)


Problemas do DBScan
Agrupamentos diferentes podem ter mesmo
densidades diferentes.
 Agrupamentos podem estar em hierarquias.

Referências Bibliográficas
Download

DBSCAN