• Nenhum resultado encontrado

3.3 Desenvolvimento de Novas Abordagens ao Algoritmo SNN

3.3.4 Abordagem 4: Expansão Iterativa Multi-Dimensional

Nesta etapa são abordados os restantes problemas, nomeadamente a influencia de outras dimensões, além da espacial, no resultado das distâncias entre pontos, e o problema da expansão ocorrer sob a forma retangular.

Também ela se baseando na anterior, esta abordagem passa a receber não M como parâmetro de entrada, mas antes Mx, significando o número e divisões realizado apenas no eixo horizontal da dimensão espacial. Assim, o My representará o número de divisões no eixo vertical, e será calculado automaticamente, de maneira que as expansões sejam feitas sob a forma de quadrados.

Mais eficaz para a redução da probabilidade de erro seria as expansões se efetuarem sob forma de círculo. Assim sendo, será empenhado algum de tempo de processamento neste sentido. Como é possível visualizar na Figura 3.12, quando se atinge a condição de paragem das expansões para uma determinada secção, vai-se continuar a expandir para cima, baixo e para os lados até se conseguir encaixar uma circunferência que toque nos vértices do quadrado desenhado na última expansão.

3.3Desenvolvimento de Novas Abordagens ao Algoritmo SNN

Para erradicar qualquer possibilidade de erro, independentemente da densidade de pontos, falta apenas tratar o efeito da utilização de outras dimensões no cálculo de distâncias entre pontos. Este fator foi tratado através do acréscimo de um número de expansões às efetuadas previamente, que dizem respeito ao peso das dimensões não espaciais no resultado da distância entre pontos.

Ainda antes do passo discutido anteriormente, relativo a realizar expansões para abranger uma circunferência, e após a expansão em que nenhum dos pontos sofre alterações na sua lista de K vizinhos, servindo por isso como condição de paragem, será efetuado um número de expansões calculado por uma função que será descrita de seguida.

Para determinar o número de expansões a realizar em cada secção em processamento, de forma a abranger o efeito de dimensões não espaciais nos dados, começa-se por encontrar o último ponto da lista de K vizinhos mais próximos em cada ponto da secção em processamento. Para cada um destes pontos encontrados, seleciona- se aquele que obteve maior distância ao ponto a cuja lista este pertence, tendo em conta apenas as dimensões presentes na função de distância excetuando as coordenadas espaciais. Esta distância máxima será denominada b para o caso do bearing .

Figura 3.12: Expansão para abranger um círculo.

Após calcular este valor máximo, é efetuada uma regra de três simples. O valor máximo possível que poderá ser atingido pela distância, medida apenas pelas dimensões presentes na função de distância excetuando as coordenadas espaciais, multiplicado pelo seu peso para o resultado da distância final (Wb para o caso do bearing), está para o número máximo de quadriculas seguidas (m), na vertical ou horizontal, também multiplicado pelo peso dado à dimensão espacial (Wp), como o valor máximo calculado anteriormente está para o X. Este valor X calculado deverá ser arredondado, sempre por excesso, às unidades. Agora, o valor X representa o número de expansões que deverão ser efetuadas para garantir que para nenhum ponto são negligenciados outros pontos que poderiam pertencer à sua lista de vizinhos mais próximos, devido a maior similaridade por parte das dimensões não espaciais.

Na implementação realizada para teste, a função de distância entre pontos, para além das dimensões das coordenadas espaciais, utilizou apenas o bearing, sendo então necessário calcular o número de expansões necessárias para que não ocorram erros no cálculo de listas de K vizinhos derivados desta dimensão. Para descrever a função que retorna o número de expansões a efetuar foram definidas as seguintes variáveis:

b – Maior diferença de bearing encontrada entre um qualquer ponto da secção

em processamento e o último ponto da sua lista de K vizinhos. • m – Máximo(Mx,My).

Wb – Percentagem de peso do bearing no cálculo de similaridade entre pontos.

Wp – Percentagem de peso da posição espacial no cálculo de similaridade entre

pontos.

O número de expansões a efetuar devido à dimensão bearing é dado pela seguinte função:

Número de expansões=Wb×b 180 ×

m

2×Wp

Sintetizando, esta abordagem possui três fases principais. Em primeiro lugar são efetuadas expansões, calculando distâncias entre os pontos da secção em processamento

3.3Desenvolvimento de Novas Abordagens ao Algoritmo SNN

com pontos cada vez mais afastados no espaço. Quando for efetuada uma expansão em que nenhuma lista de K vizinhos dos pontos da secção em processamento sofra alterações, considera-se atingida uma condição de paragem. De seguida, numa segunda fase, é calculado o número de expansões a efetuar devido às dimensões diferentes das coordenadas espaciais presentes na função de distância, sendo depois efetuadas essas expansões, comparando todos os pontos obtidos com os presentes na secção em processamento. Finalmente, em terceiro lugar, são efetuadas expansões, agora sob a forma de cruz em vez de forma quadrada como as anteriores, até abranger uma circunferência.

Esta abordagem representa um passo muito importante no desenvolvimento de um algoritmo mais eficiente. É agora possível dar qualquer valor a M sem que isso influencie o resultado do processo de clustering. Como já foi referido anteriormente, aumentanto o valor desta variável prevê-se uma melhoria de desempenho muito significativa, principalmente em datasets com pontos muito concentrados en determinadas áreas do espaço.

Algoritmo da abordagem 4

matriz[][] ← Distribuir(“lista de pontos”)

for i=0 até matriz.length do // percorre colunas

for j=0 até matriz[i].length do // percorre células da coluna pontos = matriz[i][j]

boolean cond = true nível = 1

while (cond)

pts_a_processar =expansão (nível)

cond = calculaDistancia(pontos, pts_a_processar) nível++

end while

nExp = número de expansões (b) // nExp representa o número de expansões necessárias para que não ocorram erros no cálculo de listas de K vizinhos derivados da dimensão bearing. Por sua vez, b representa a maior diferença de bearing encontrada entre um qualquer ponto da secção em processamento (pontos) e o último ponto da sua lista de K vizinhos.

while (nExp>0)

pts_a_processar =expansão (nível) calculaDistancia(pontos, pts_a_processar)

3.3Desenvolvimento de Novas Abordagens ao Algoritmo SNN nível++

nExp--

end while

circ = nExpCirc(nível) // nExpCirc recebe o nível atual de expansão e devolve o número de expansões necessárias para abranger um círculo

nível = 0

while (circ>0)

pts_a_processar =expansãoCirc (nível) // expansãoCirc representa o processo de expansão em cruz falado anteriormente.

calculaDistancia(pontos, pts_a_processar) nível++ circ-- end while end for end for

Resultados

Esta alteração ao algoritmo foi efetuada sob a implementação resultante da aplicação das alterações discutidas na abordagem 3.

Embora exija algumas expansões extra que as abordagens anteriores, esta permite eliminar totalmente o erro derivado do seccionamento da dimensão espacial. Assim, o valor de M poderá atingir qualquer valor sem por isso ocorrer erro.

É por isso pertinente procurar o valor de M mais eficiente, face à densidade do

dataset em questão. No gráfico da Figura 3.13 são mostrados os tempos de

processamento, para o dataset delft, relativamente a diferentes valores de M, para diferentes pesos atribuídos à dimensão espacial. Como pode ser verificado nesse gráfico, a partir de M=300 a eficiência do algoritmo estabiliza, independentemente do peso atribuído à dimensão espacial.

Dada a ampla possibilidade de escolha para a variável M, adoptou-se o valor 500 por já ter uma margem aceitável para o caso de se utilizar um dataset com maior densidade.

Figura 3.13: Tempo de processamento para diferentes pesos para a distância euclidiana. 50 100 150 200 250 300 350 400 450 500 550 600 650 700 0 200000 400000 600000 800000 1000000 1200000 1400000 100% 95% 90% 85%

Nº de quadrículas (no eixo X)

M ili ss eg un do s

3.3Desenvolvimento de Novas Abordagens ao Algoritmo SNN

É agora possível verificar as diferenças entre o seu desempenho e as abordagens anteriores. A Figura 3.14 mostra um gráfico comparativo do tempo de processamento, para diferentes quantidades de dados, entre este algoritmo, os apresentados anteriormente, e o SNN original. Agora a escala de tempo representada é mais curta, para que seja possível visualizar as diferenças.

Através do gráfico da Figura 3.14 verifica-se que, para as quantidades de pontos testadas, este algoritmo demonstra uma curva de crescimento menos acentuada que nas etapas anteriores. Foram processados 200.000 pontos em cerca de 42 segundos, o que, comparado com 1h42m do SNN original, corresponde a um ganho muito considerável.

Figura 3.14: Tempo de processamento entre o SNN e as abordagens 1, 2, 3 e 4.

40000 80000 120000 160000 200000 0 500000 1000000 1500000 2000000 2500000 3000000 snn 1ª abordagem 2ª abordagem 3ª abordagem 4ª abordagem Número de pontos T e m p o ( m ili s s e g u n d o s )

3.3.5 Abordagem 5: Expansão Iterativa Multi-Dimensional

Documentos relacionados