230 likes | 315 Views
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.
E N D
A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with NoiseM. 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 MinPts = 5 Eps = 1cm p q
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 p1 q
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,Eps,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 • 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; • END IF • END;
Avaliação de desempenho Agrupamentos descobertos por CLARANS
Avaliação de desempenho Agrupamentos descobertos por DBSCAN
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.