• Nenhum resultado encontrado

Uma abordagem em análise de cluster para problemas de agrupamento de áreas florestais

N/A
N/A
Protected

Academic year: 2021

Share "Uma abordagem em análise de cluster para problemas de agrupamento de áreas florestais"

Copied!
80
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO

DEPARTAMENTO DE INFORMÁTICA

MESTRADO EM INFORMÁTICA

Uma abordagem em Análise de Cluster para problemas de

agrupamento de áreas florestais

Aluno: Alexsandro Afonso Moura Orientadores: Hannu Tapio Ahonen

Arlindo Gomes Alvarenga

(2)

ÍNDICE

Capítulo 1 Introdução ... 1

Capítulo 2 Caracterização do Problema ... 3

Capítulo 3 Ferramentas de Agrupamento ... 6

3.1. Métodos Hierárquicos ... 7

3.2. Métodos de Partição ... 11

3.3. Métodos com abordagem em teoria dos grafos ... 13

3.3.1 Algoritmo HCS (highly connected subgraph) ... 16

3.3.1.1. Algoritmo de Corte Mínimo ... 23

3.3.2 Agrupamento através de Minimum Spanning Tree... 28

3.3.2.1. Algoritmo MST (Minimum Spanning Tree) ... 28

Capítulo 4 Estratégia de Solução ... 31

4.1. Implementação dos algoritmos ... 33

4.2. Comparação dos métodos ... 37

4.3. Novos critérios ... 41

4.3.1 Novo exemplo... 43

4.4. Melhorias importantes ... 44

4.5. Modelo de classes ... 45

4.5.1 Classes para o HCS ... 45

4.5.2 Classes para o MST-Clustering invertido ... 49

Capítulo 5 Testes Numéricos ... 51

Capítulo 6 Conclusões... 62

(3)

LISTA DE FIGURAS

Figura 1 - Mapa de áreas florestais ... 3

Figura 2- Diagrama em árvore ... 7

Figura 3 -Diagrama por single linkage... 10

Figura 4 - Diagrama com segunda escolha ... 11

Figura 5 – Algoritmo K-Means ... 12

Figura 6 – Algoritmo de Herwig et ali ... 13

Figura 7 – Algoritmo CAST ... 15

Figura 8 – Algoritmo FormKernels ... 17

Figura 9 – Algoritmo CLICK ... 18

Figura 10 – Algoritmo HCS ... 19

Figura 11 – Exemplo de execução do HCS ... 20

Figura 12 – Algoritmo HCS incrementado ... 22

Figura 13 – Exemplo de entrada para o problema de corte mínimo ... 24

Figura 14 – “Identificação” de nós ... 25

Figura 15 - Algoritmo de Corte Mínimo por Identificação de Nós ... 25

Figura 16 – Início do primeiro passo do minimum cut ... 26

Figura 17 – Final do primeiro passo do minimum cut... 26

Figura 18 – Segundo passo do algoritmo de minimum-cut ... 27

Figura 19 – Último passo (n-1) do algoritmo de minimum cut ... 27

Figura 20 – Algoritmo de Kruskal ... 29

Figura 21 – Algoritmo Partitional MST ... 30

Figura 22 – Algoritmo de Agrupamento via HCS ... 34

Figura 23 – Algoritmo GeraGrafoSimilaridade ... 35

Figura 24 – Algoritmo MST-Clustering Invertido ... 36

(4)

Figura 26 – Matriz de Adjacências 1 ... 37

Figura 27 – Grafo de Similaridade 1 ... 38

Figura 28 – Clusters por HCS 1 ... 38

Figura 29 – Máxima Spanning Tree 1 ... 38

Figura 30 – Conjunto de plantios 2 ... 39

Figura 31 – Matriz de Adjacências 2 ... 39

Figura 32 – Grafo de Similaridade 2 ... 40

Figura 33 – Clusters por HCS 2 ... 40

Figura 34 – Máxima SpanningTree 2 ... 40

Figura 35 – Conjunto de Plantios 3... 43

Figura 36 – Matriz de Adjacências 3 ... 43

Figura 37 – Grafo de Similaridade 3 ... 44

Figura 38 – Máxima Spanning Tree 3 ... 44

Figura 39 – Modelo de Classes para HCS (Elemento e Vértice) ... 46

Figura 40 – Modelo de Classes para HCS ... 47

Figura 41 – Modelo de Classes para MST-Clustering invertido ... 50

Figura 42 – Exemplo de conjunto de 50 plantios ... 52

Figura 43 – Gráfico de tempo de execução para conjuntos de 100 plantios ... 59

Figura 44 - Gráfico de tempo de execução para conjuntos de 50 plantios... 59

Figura 45 - Gráfico do número de clusters e singletons gerados para conjuntos de 100 plantios .... 60

Figura 46 - Gráfico do número de clusters e singletons gerados para conjuntos de 50 plantios ... 60

Figura 47 - Gráfico de similaridade dos clusters gerados para conjuntos de 100 plantios ... 61

(5)

LISTA DE TABELAS

Tabela 1 – Similaridade de idade ... 32

Tabela 2 – Similaridade da classe de densidade ... 32

Tabela 3 – Similaridade do tipo de regeneração ... 33

Tabela 4 – Similaridade da localização ... 33

Tabela 5 – Ajuste de Produtividade na Idade ... 41

Tabela 6 – Similaridade de idade ... 42

Tabela 7 – Exemplo de matriz de adjacências de 50 plantios ... 53

Tabela 8 - Dados dos testes nos conjuntos de 100 plantios... 55

Tabela 9 - Dados dos testes nos conjuntos de 50 plantios ... 57

Tabela 16 – Matriz de adjacências do conjunto 1 de 50 plantios ... 73

Tabela 17 – Matriz de adjacências do conjunto 2 de 50 plantios ... 74

(6)

Capítulo 1 Introdução

Uma empresa que produz materiais em grande quantidade e com características diferentes tem a necessidade de uma organização desses materiais ou matérias-primas, de modo que a empresa possa entregá-los ou usá-los com boa qualidade e em tempo.

Para o bom planejamento, todo o conjunto de produtos deve estar mapeado fornecendo informações necessárias para as tomadas de decisão. Quanto maior o detalhe das informações sobre os produtos, mais detalhada será a análise.

Sabendo-se onde estão sendo produzidos ou armazenados, como ordenar a produção ou o recebimento de suprimentos de determinados produtos no tempo mais propício para sua venda ou utilização? Este problema pode ser caracterizado com um problema de agrupamento ou clustering, onde serão criados grupos de produtos homogêneos para que o analista possa fazer um planejamento melhor.

Um exemplo é o controle das áreas florestais de uma empresa de fabricação de celulose. Normalmente, uma empresa desse ramo mantém uma área florestal enorme distribuída em áreas menores que podem estar bem distantes umas das outras. As árvores são plantadas em diferentes épocas e dependendo da localização podem ter um crescimento mais lento ou acelerado. Além disso, estudos genéticos e de fertilização vão gerando novas plantas cada vez melhores para a produção de celulose. Nessa floresta, a empresa deve colher uma quantidade de madeira de forma contínua e programada para suprir sua fábrica de celulose. Também deve se preocupar em maximizar o aproveitamento da madeira colhida, observando o período ideal para o corte, reduzir os gastos com maquinário e operação de corte procurando cortar madeira de áreas próximas em períodos subseqüentes e equilibrar a composição da madeira como material de fabricação para garantir a qualidade da celulose.

Dessa forma é necessário um bom mapeamento das características de cada grupo de árvores plantadas, pois em cima dessas características é que serão feitas as análises para definição dos

(7)

Existem vários estudos sobre clustering, principalmente nas áreas de estatística e aplicadas à medicina. Vamos estudar essas técnicas para definir uma boa abordagem para o problema.

O objetivo será fornecer uma solução para o problema especificado para auxiliar um planejamento de corte de madeira baseado na existência de grupos homogêneos dentro da área total plantada.Os grupos homogêneos ou clusters são resultado da aplicação da técnica de clustering ou agrupamento. Primeiramente, no Capítulo 3 , serão apresentadas algumas técnicas de clustering com suas abordagens, algoritmos ou heurísticas e alguns resultados ou exemplos de uso. Num segundo momento tomaremos a abordagem conhecida por HCS (Highly Connected Subgraphs) e seguiremos com sua implementação. Para efetivar essa parte, necessitaremos de alguns métodos auxiliares para mapear computacionalmente e manipular as informações dos elementos a serem agrupados, e ainda pode ser necessária alguma adaptação dos algoritmos usados.

Em seguida, direcionaremos a implementação para suportar dados similares a uma floresta real de madeira de corte - um estudo de caso - com a definição de uma estratégia para a formação dos grupos (características avaliadas, semelhanças e diferenças).

Finalizaremos apresentando, no Capítulo 5 , os resultados da aplicabilidade da solução para o problema comparando com uma abordagem que simule a análise humana para o mesmo caso e os resultados possíveis.

(8)

Capítulo 2 Caracterização do Problema

No cenário de uma empresa que planta e colhe madeira para processamento figura a necessidade de uma organização das áreas florestais visando a época do corte, de modo que a fábrica receba produtos de boa qualidade e em tempo.

Observe na Figura 1, que a extensão da área plantada pode ser muito grande. A diversidade de tipos de madeira também.

Figura 1 - Mapa de áreas florestais

Para o bom planejamento toda a área florestal deve estar identificada, fornecendo as informações necessárias para as tomadas de decisão. Como diferentes regiões são plantadas e colhidas em tempos diferentes, as menores áreas homogêneas são chamadas de plantios. Os dados vão da localização e área de um plantio até a espécie, densidade da madeira e fator de crescimento, entre outros. Vejamos alguns exemplos:

(9)

 Idade – as árvores têm um tempo médio propício para a colheita, no caso do eucalipto é de seis a sete anos. Portanto, o primeiro passo para saber se um plantio pode ser cortado é avaliar sua idade.

 Localização do plantio – diferentes áreas podem estar prontas para o corte no mesmo período. Entretanto, a equipe de colheita não pode cobrir toda a área ao mesmo tempo e não é bom que faça um vai e vem dispendioso. Numa análise rápida do mapa, percebe-se a existência de quatro grandes aglomerados de área plantada. Uma pessoa pode já descartar a união de áreas de colheita que estejam em aglomerados diferentes, ou seja, a colheita deve ser feita por uma equipe diferente. Em um desses aglomerados é mais complicado tomar a decisão de quais áreas agrupar. Neste caso, outras condições devem ser consideradas.

 Proximidade entre plantios – plantios próximos podem ser cortados por uma mesma equipe em seqüência, o que torna esse um fator essencial, mas não simples. Apesar da proximidade geográfica, algum obstáculo, natural ou não, pode impedir o acesso rápido de uma área à outra. Por exemplo, pode haver um rio entre elas. Por outro lado, se houver uma estrada de fácil acesso passando por um local, até plantios não muito próximos poderiam fazer parte do mesmo grupo.  Rede de transporte – o ponto de escoamento da madeira e as condições desse caminho é

importante para saber se é viável ou não que a madeira saia por ele. Não só o caminho próximo do plantio, mas até as opções de via de transporte disponíveis entre o plantio e a fábrica.

 Área de corte – se, por algum motivo, a empresa precisar controlar a área total cortada, um limite deve ser estabelecido para os grupos de corte. Por exemplo, para não deixar grandes áreas desmatadas.

 Densidade da madeira – para a produção de celulose é muito importante o controle da densidade da madeira que está sendo processada. Não há grandes restrições, mas deve-se buscar um equilíbrio do total processado. Portanto, saber que um grupo de plantios fornecerá madeira de uma certa densidade num determinado período é essencial.

(10)

 Regeneração – vários custos envolvem o problema de organizar um novo plantio após a colheita. Isso implica em saber se devem ser plantadas novas mudas ou deixar que haja uma rebrota.

 Produtividade – a influência genética e o uso do solo podem fazer com as árvores se desenvolvam num ritmo diferente, podendo-se optar por cortar a madeira mais cedo, seja por alcançar um volume de corte mais rapidamente ou pelo custo de se esperar pelo seu desenvolvimento ser muito alto sendo melhor cortá-la para dar lugar a um novo plantio.

 Outros plantios – muitas vezes a empresa tem áreas com madeira não própria para a celulose que pode ser usada serraria pode até ser área nativa de preservação, portanto, devendo ser excluída do processo.

Existem ainda muitos outros fatores considerados para o planejamento de áreas florestais que envolvem desde a compra de novas áreas (e aonde comprá-las), o tipo de árvore a plantar (e o desenvolvimento de espécies melhores), cuidados no manejo e transporte até chegar no suprimento da fábrica. Sem esquecer das necessidades do mercado, que vão regular a produção.

Tomando o mapa da área total plantada e suas características, como ordenar o corte delas no tempo mais propício para suprir a fábrica? Este problema de agrupamento ou clustering, onde serão criados grupos ou unidades de corte com madeira homogênea, deve ter uma solução que oriente o analista para fazer um planejamento mais correto.

Neste estudo não temos a intenção de cobrir todas as variáveis que envolvem o problema, mas propor a adaptação de soluções existentes para agrupamento para o caso dos plantios. Serão escolhidas algumas características próprias dos plantios existentes para análise. Veja que há uma dificuldade muito grande de se mapear a rede de transporte e obstáculos naturais das áreas florestais sem o auxílio de um sistema de informação geográfica, levando-nos a considerar, neste trabalho, apenas a localização por latitude e longitude. No Capítulo 4 será definida a estratégia de solução com as características escolhidas para a análise. A identificação correta delas é a chave de entrada para um bom processamento das abordagens apresentadas no próximo capítulo.

(11)

Capítulo 3 Ferramentas de Agrupamento

Agrupamento ou clustering, como visto, é a atividade de se criar grupos a partir de um conjunto diverso de elementos. Deve-se considerar ainda que não há interseção entre os grupos e que a união de todos os grupos é exatamente o conjunto inicial. Cada grupo é chamado de cluster e o resultado final é uma clustering solution.

Esse é o objetivo da Análise de Cluster, que pode ser encontrada na maioria das ciências naturais, sociais e da vida, discutida em estatística, matemática e computação, de uma literatura rica e diversa.

Para se definir regras de agrupamento é necessário caracterizar cada elemento. Depois, a análise é feita sobre dois tipos de entrada, basicamente. Pode ser cada elemento e seus dados em uma série de características ou a diferença entre cada elemento usualmente calculada em função das características de cada um.

Assim, dada uma das duas entradas, o objetivo é particionar o conjunto de elementos de forma que os grupos ou clusters resultantes sejam homogêneos e bem separados, ou seja, os elementos de um mesmo cluster devem ser o mais similar possível entre si e os elementos de clusters diferentes devem ser o mais dissimilar possível.

Qual o critério usar? Homogeneidade ou separação? Qual tipo de clustering considerar? Qual a complexidade da execução desse clustering? Como ele pode ser realizado? Como saber se os resultados do clustering são bons?

Essas considerações (Hansen e Jaumard, 1997) devem ser feitas ao se lidar com um problema de análise de cluster e, como se pode imaginar, existem diferentes abordagens, mas que podem ser agrupadas da seguinte forma (Michailidis, 2000):

 Métodos hierárquicos  Métodos de Partição

(12)

 Outras abordagens

Cada abordagem possui seu mérito e pode ser mais bem aplicada dependendo do problema.

3.1. Métodos Hierárquicos

Os métodos hierárquicos baseiam-se na iteratividade para criação dos grupos. Inicia-se com um elemento e, a cada passo da execução, um outro elemento ainda não agrupado é adicionado ao grupo já formado. Para definir qual será o novo elemento, todos os elementos não ainda agrupados são comparados com o grupo e o mais similar é escolhido.

A chave então, está na forma de executar essa comparação.

A visualização da formação dos grupos é muito bem vista através de um diagrama conhecido como

dendrogram (Figura 2), ou simplesmente diagrama em árvore. Esse diagrama é uma árvore onde as

folhas representam os elementos avaliados e as raízes representam grupos formados pelas suas ramificações. As arestas unem os grupos e indicam um peso para essa união, ou seja, a dissimilaridade entre cada grupo.

Observe que na Figura 2, os elementos 3 e 4 formam um grupo e a aresta que os une tem peso 5, No final da execução este grupo se une ao grupo maior com uma aresta de peso 11 aproximadamente.

(13)

Para identificar a dissimilaridade ou diferença entre dois elementos deve-se encontrar o menor subconjunto que os contenha. Por exemplo, a diferença entre os elementos 2 e 10 é a aresta que une o cluster {2} ao cluster {7,8,9,10}, que tem peso 7. Quanto menor esse peso, maior a similaridade entre grupos.

Alguns autores fazem uso da seguinte desigualdade originada pelo processo: Seja lij a diferença entre i e jj- e O o conjunto de clusters na árvore,

O k j i l l lijmax{ik, jk}, , ,  (1)

Neste caso, a matriz de dissimilaridade seria transformada em uma matriz de distâncias.

Entretanto, uma atenção maior é dada não a essas distâncias, mas sim à ordenação dos tamanhos, através de algoritmos aglomerativos e uma visão bottom-up para juntar repetidamente conjuntos de objetos, como na figura anterior.

A idéia é tornar cada elemento um cluster e a partir daí começar a avaliar qual o par de clusters mais similar. Esse par é transformado num novo cluster e o processo se repete até que tenhamos um único cluster contendo todos os elementos.

Pelas definições apresentadas por Michailidis, existem três formas principais para se avaliar a similaridade entre clusters por métodos aglomerativos, lembrando que o valor associado na matriz é a dissimilaridade: single linkage, complete linkage e average linkage.

Sejam Ci e Cj clusters | Ci O e Cj O,

d(s,t) a dissimilaridade entre dois elementos de O e nk o número de elementos do cluster k,

a dissimilaridade d(Ci,Cj) entre dois clsuters de O é definida por:

Single Linkage:d(Ci,Cj)mins,t{d(s,t)|sCi,tCj} (2) Complete Linkage: d(Ci,Cj)maxs,t{d(s,t)|sCi,tCj} (3)

Average Linkage: j i C s t C j i n n t s d C C d

 

ij  ) , ( ) , ( (4)

(14)

Quando as diferenças entre clusters forem iguais ou muito próximas, não se tem um par mais similar muito bem definido e a escolha pode influenciar muito os resultados, o que não permite, para a maioria dos critérios de avaliação, assumir que a árvore completa satisfaz algum critério de otimalidade.

Vejamos um exemplo de uso do single linkage:

Seja O um conjunto de 5 elementos com a seguinte matriz de dissimilaridade:

D =                 0 6 9 4 11 0 10 5 3 0 8 4 0 15 0

, onde d(i,j) é a dissimilaridade entre i e j, com i,j{0,1,2,3,4}

Inicialmente, cada elemento é transformado em um cluster. A menor dissimilaridade da matriz é 3 e ocorre entre os clusters 3 e 0. Os dois se unem e a dissimilaridade entre o novo cluster e os restantes deve ser calculada da forma apresentada em (2). Veja:

d((3,0),1) = min{d(3,1),d(0,1)} = min{5,15} = 5 d((3,0),2) = min{d(3,2),d(0,2)} = min{10,4} =4 d((3,0),4) = min{d(3,4),d(0,4)} = min{6,11} = 6

O novo cluster é inserido na matriz e os clusters 3 e 0 são retirados. Assim, temos uma nova matriz:

D = } 4 { } 2 { } 1 { } 0 , 3 { 0 9 4 6 0 8 4 0 5 0                    

Agora, a menor dissimilaridade é 4 e ocorre em dois casos (2,0) e (3,1). Qual dos dois escolher? Sem muita complexidade, pode-se escolher o primeiro e então temos:

d((2,0),1) = min{d(2,1),d(0,1)} = min{8,5} = 5 d((2,0),3) = min{d(2,3),d(0,3)} = min{9,6} =6

(15)

D = } 4 { } 1 { } 0 , 3 , 2 { 0 4 6 0 5 0                

A próxima união será entre 1 e 2 da nova matriz, fazendo

d((1,2),0) = min{d(1,0),d(2,0)} = min{5,6} = 5

A Figura 3 mostra o diagrama resultante:

Figura 3 -Diagrama por single linkage

Se no segundo passo fossem escolhidos os clusters 3 e 1, teríamos:

d((3,1),0) = min{d(3,0),d(1,0)} = min{6,5} = 5 d((3,1),2) = min{d(3,2),d(1,2)} = min{9,8} =8

O novo cluster é inserido na matriz e os clusters 2 e 0 são retirados. Assim, temos uma nova matriz:

D = } 2 { } 4 , 1 { } 0 , 3 { 0 8 4 0 5 0                

A próxima união será entre 0 e 2 da nova matriz, fazendo

d((0,2),1) = min{d(0,1),d(2,1)} = min{5,8} = 5

Por fim, o diagrama resultante é apresentado na Figura 4.

Nesse exemplo o resultado final foi o mesmo, só mudando a ordem de geração dos clusters, mas de uma forma geral a técnica pode não discernir clusters mal separados.

Os outros tratamentos podem produzir diferentes resultados também, principalmente nos níveis mais baixos, por causa da ordem de escolha das uniões.

(16)

1

2

3

4

5

6

0 1 2 3 4 Figura 4 - Diagrama com segunda escolha

3.2. Métodos de Partição

Os métodos hierárquicos vistos anteriormente fornecem uma configuração de clusters de forma seqüencial, de forma que a solução pode ser escolhida dentro dessa configuração, avaliando-se o peso das arestas que uniram clusters intermediários. Afinal, o último passo forma um único cluster. A abordagem dos métodos de partição chega a um conjunto final de clusters baseada na informação de quantos clusters devem ser gerados. O conjunto de elementos é avaliado para que nos K clusters necessários, existam elementos bem semelhantes e entre os diferentes clusters haja uma boa separação. Uma questão que algoritmos dessa abordagem devem definir, portanto, é se priorizam a avaliação da homogeneidade ou da separação dos clusters.

Com base nas informações de Michailidis, pode-se trabalhar com a idéia de diâmetro de um cluster (a dissimilaridade máxima entre seus elementos), com a soma das dissimilaridades entre elementos do cluster e os que estão fora dele (separação), ou mesmo a menor dessas dissimilaridades, entre outras.

(17)

Caso não queira priorizar uma das avaliações pode-se encontrar um equilíbrio entre separação e homogeneidade, o importante é procurar um resultado ótimo. Para particionar n elementos em K

clusters não vazios existem N(n,K) formas, dadas por:

          K k n k K k k K K K n N 1 ) 1 ( ! 1 ) , ( (5)

Dessa forma, a maioria dos algoritmos conhecidos precisa de um número polinomial n de operações - são problemas conhecidos por Nphard.

Um algoritmo de partição bem conhecido é o K-Means (MacQueen, 1965). Sua idéia é ter um número K de partições ou clusters no início do processamento e, a partir daí, começar a avaliar uma série de transformações possíveis para que elementos de uma partição migrem para outra. Cada elemento é comparado com os clusters diferentes do seu atual e se o custo desse outro cluster com o elemento for menor do que o custo dele sem o elemento, então o elemento passa a compor o cluster.

Figura 5 – Algoritmo K-Means

O custo Cp na Figura 5 é originalmente calculado por MacQueen como sendo o somatório das

distâncias euclidianas entre o vetor de características (fingerprints) de cada elemento i de P com o vetor da centróide do cluster de i. Assim, o algoritmo busca minimizar a dissimilaridade entre os componentes dos clusters.

Para contornar a restrição de se determinar o número de clusters a gerar, Herwig (Herwig et ali,1999) apresenta uma adaptação ao algoritmo anterior onde é necessário informar o similaridade máxima admitida entre dois clusters distintos e também entre um elemento e um cluster diferente

Seja N um conjunto de elementos, P um conjunto de K partições de N e CPijo custo da solução P considerando que o elemento i seja movido para o cluster j. 1- Inicie um conjunto P de partições de N em K clusters

2 – Enquanto existir elemento iN e cluster j P(i) tal que mínimo(CPij)<Cp

(18)

O algoritmo (Figura 6) parte de um conjunto inicial de clusters e então, cada elemento ainda fora de

clusters é comparado com os clusters existentes. Se sua similaridade ao cluster for maior que , adiciona-se este elemento ao cluster. Se nenhum cluster for suficientemente similar, forma-se um novo cluster. À medida que as inserções acontecem, os clusters também são comparados entre si para identificar se algum par de clusters tem similaridade maior que  para uni-los. Um detalhe importante é que um elemento pode ser adicionado a mais de um cluster e isso influencia no cálculo da centróide do cluster e portanto, nas comparações seguintes. Por isso, ao final do processo, cada elemento fica associado ao cluster mais similar.

Figura 6 – Algoritmo de Herwig et ali

3.3. Métodos com abordagem em teoria dos grafos

Nessa abordagem a matriz de similaridade é mapeada em uma estrutura de grafo, onde cada vértice representa um elemento e cada aresta indica a similaridade entre os elementos que conecta.

Antes de entrar nas abordagens, vamos a algumas definições importantes sobre grafos:  G(V,E) é um grafo com um conjunto V de vértices e E de arestas.

1 - Inicie com um conjunto de objetos suficientemente dissimilares como clusters. 2 - Para cada objeto restante

Para cada cluster C tal que Similaridade(i,C)   - Adicione i a C

- Enquanto existir um cluster C’ tal que Similaridade(C,C’)   Una C e C’

- Se i não foi adicionado a algum cluster Forme um novo cluster {i}

3 - Depois de processar todos os objetos, associe cada objeto ao cluster que lhe for mais similar.

(19)

 GR = G(R,ER) é o subgrafo induzido por um subconjunto RV de vértices, retirando-se todos os

vértices que não estão em R e todas as arestas incidentes nestes, e com ER={(i,j)  E : i,j  R}

 Um corte (ou cut) T é um subconjunto de arestas cuja remoção desconecta G.  |G | é o número de vértices de G.

 |T | é o número de arestas de T.

 O peso de T é a soma dos pesos de suas arestas

 Um corte de peso mínimo de G ou (minimum weighted cut) é um corte T de G com peso mínimo.

 O caminho entre dois vértices u e v é o conjunto de arestas que ligam u a v em G.

 A distância d(u,v) entre os vértices u e v, é o tamanho do menor caminho entre u e v. Se não existe caminho, d(u,v)=.

 O diâmetro diam(G) é a distância máxima entre qualquer par de G.  O grau deg (v) é o número de arestas incidentes em v.

 Clique é um grafo completo, ou seja, qualquer vértice está conectado a qualquer outro vértice. O conjunto de clusters da solução é alcançado realizando-se cortes no grafo de forma que cada subgrafo tenha uma similaridade ótima entre seus vértices (arestas de peso máximo) e uma ótima separação entre vértices de subgrafos distintos (arestas de peso mínimo). Não deve haver interseção entre os subgrafos.

Procurando-se por valores mínimos de similaridade entre subgrafos diferentes, o conjunto de arestas que gera o corte deve ter peso mínimo.

Um primeiro algoritmo com essa abordagem é o CAST(Cluster Affinity Search Technique), introduzido por Ben-Dor (Ben-Dor et ali,1999), que trabalha com uma matriz de similaridade onde

Similaridade(i,j)  [0,1]. Para as avaliações de similaridade é assumido um marco (threshold) que

indica um limite mínimo de similaridade para que um vértice esteja em um cluster. Essa similaridade é chamada de afinidade (a) e a afinidade de v a um cluster C é dada por:

(20)

a(v)=

C u v u de Similarida ( , ) (6)

Assim, o algoritmo (Figura 7) inicia com um elemento como cluster e começa a avaliar sua afinidade com os elementos restantes, adicionando-os se ela for maior do que o threshold. À medida que elementos novos são adicionados, os antigos devem ter sua afinidade reavaliada, pois se for menor que o threshold,deve ser retirado do cluster. Quando nenhum elemento for adicionado, reinicia-se o processo com um elemento fora de clusters como um novo cluster. Os clusters vão sendo gerados um a um até que todo o processo se estabilize. Com isso, o algoritmo pode construir uma solução melhor do que a dos algoritmos hierárquicos, já que uma decisão pode ser reavaliada num passo seguinte.

Figura 7 – Algoritmo CAST

Uma outra abordagem é o HCS(Highly Connected Subgraph) definido por Hartuv e Shamir (Hartuv e Shamir, 2000) que, semelhante ao CAST, tem um marco (threshold) pré-definido para verificar quais vértices têm similaridade maior do que o threshold e definir o peso das arestas que os conectam. Esse peso tem valor 1 para todas as arestas entre vértices com similaridade maior que o

threshold e valor 0, ou sem aresta, para vértices não conectados por baixa similaridade.

Dado:

ADICIONA: adiciona um objeto fora de cluster v com máxima afinidade a C se

a(v)>t|C|.

REMOVE: remove um objeto u de C com afinidade mínima se a(u)t|C|. Início

Enquanto existir elementos fora de clusters Inicie um novo cluster

Repita ADICIONA e REMOVE até que não ocorram mudanças: Adicione C à lista de clusters finais.

(21)

Um grafo G é altamente conectado se o seu valor de corte mínimo excede à 2 G

, ou seja, G

permanece conectado mesmo que 2 G

arestas sejam removidas.

O algoritmo busca então, particionar um grafo em subgrafos que sejam altamente conectados, chamados kernels. A homogeneidade dos clusters gerados é muito forte e comprovada pelos estudos do autor, pois o diâmetro de cada cluster gerado é de no máximo 2 e o número de arestas do

cluster é maior ou igual à metade do número de arestas de um suposto clique para o cluster.

Por último, existe uma abordagem que utiliza minimum spanning trees (MST) no algoritmo de

clustering. É uma abordagem prática e interessante apresentada por Tavakoly (Tavakoly, 2003),

originalmente para tratamento de informações de genes.

Cada cluster corresponde a uma subárvore da MST, assim um problema de clustering multidimensional é convertido num problema de particionamento de árvore, trazendo a vantagem da estrutura simples de uma árvore, que facilita implementações eficientes e de baixo custo computacional. Além disso, não depende de uma forma geométrica detalhada do cluster, o que elimina muitas das dificuldades encontradas em algoritmos como o K-means e um outro conhecido por Self Organized Map (Kohonen,19990), baseado em redes neurais, que não abordamos aqui. Ainda existem outras abordagens, mas não entramos em detalhes por achar melhor aprofundar os estudos sobre HCS, que nos pareceu um método muito satisfatório para o problema dos plantios e sobre uso de MST, que é bem prático, para simular a atuação humana. Por isso, nos dois próximos capítulos faremos um detalhamento sobre estes algoritmos.

3.3.1 Algoritmo HCS (highly connected subgraph)

Como apresentado no capítulo anterior, o algoritmo HCS usa um threshold pré-definido para criar arestas entre os vértices do grafo que tenham similaridade maior que o threshold. Para chegar a um conjunto de subgrafos altamente conectados Shamir e Sharan apresentam um algoritmo básico que avalia se o subgrafo correntemente tratado é um kernel (altamente conectado). Se não for, um corte

(22)

de peso mínimo é calculado e os dois novos subgrafos resultantes recebem o mesmo tratamento de avaliação. Quando ocorrer um subgrafo com apenas um vértice, ele é adicionado a um conjunto de

singletons (objetos isolados). Quando não ocorrerem mais cortes, o algoritmo retorna uma lista de kernels que são base para eventuais clusters.

O algoritmo básico para esse processo é mostrado na Figura 8 abaixo.

Figura 8 – Algoritmo FormKernels

Além do HCS, seus autores apresentam outro algoritmo com essa mesma base de processamento chamado CLICK (Cluster Identification via Conectivity Kernels). Antes de aprofundarmos no HCS, vamos comentar um pouco sobre este algoritmo.

CLICK usa conceitos de probabilidade para verificar se o subgrafo é um kernel. Ele será um kernel quando para todo corte T no subgrafo, a probabilidade dele conter somente arestas entre pares for maior do que a probabilidade de T conter somente arestas entre não-pares. Também se assume que a similaridade de um par de vértices é distribuída normalmente (por uma função de densidade normal) e calcula-se a probabilidade de que dois vértices escolhidos aleatoriamente sejam pares. Com isso, o grafo de similaridade formado tem no peso wij da aresta (i,j) um reflexo da

probabilidade de i e j serem pares.

Se V(G)={v} //tem um único elemento

mova v para o conjunto de singletons R. Senão se G for um Kernel

retorne V(G). Senão

(H,H )  MinWeightedCut(G) FormKernels(H)

(23)

Na Figura 9 há uma apresentação do algoritmo. Primeiro são produzidos kernels. Depois, nessa base de eventuais clusters, são adicionados (ou adotados) os singletons, verificando a similaridade entre as características (fingerprints) deles com os clusters. Ainda se realiza uma união entre

kernels com similaridade maior do que o threshold e, por último mais uma adoção para os singletons restantes.

Figura 9 – Algoritmo CLICK

Para reduzir o tempo de execução do algoritmo em grandes instâncias uma heurística de recusa é aplicada, calculando-se o peso médio dos vértices proporcional ao tamanho do conjunto e comparando essa média com o peso dos vértices, para que vértices de pouco peso sejam retirados de grandes conjuntos. À medida que vértices sejam retirados, um novo peso médio é calculado. Os vértices removidos são marcados como singletons e tratados após o processamento do algoritmo.

Dado N, o conjunto inicial de elementos no grafo de similaridade

L, a lista corrente de kernels R, o conjunto de singletons e GR, o subgrafo induzido por R

Início

RN

Enquanto alguma mudança ocorrer

Form-Kernels(GR)

Adoção(L’,R) União(L’,R) Adoção(L’,R) Fim

(24)

O HCS (Figura 10) também se baseia no algoritmo Formkernels e para descrever o algoritmo precisamos de algumas definições a mais:

 k(G) é o mínimo k de arestas cuja remoção resulta num grafo desconexo. Se k(G)=l, G é um grafo l-conexo.

 S é um corte mínimo (mincut) de um grafo não-trivial G se e somente se |S| =k(G).

Os subgrafos altamente conectados que o algoritmo busca devem ser como um subgrafo HG com

k(H)=

2 | | H

. Estes subgrafos são identificados como clusters.

Figura 10 – Algoritmo HCS

Segue abaixo (Figura 11) um exemplo citado por Hartuv a Shamir, onde o HCS recebe um grafo G e o divide em G1 e G2. Depois, divide G2 em G3 e G4, dando como resultado final a solução {G1, G3, G4}. Os cortes realizados estão representados pelas linhas pontilhadas.

HCS(G(V,E)) Início

(H, H , C) mincut(G)

Se G é altamente conectado então retorne (G) Senão

HCS(H) HCS(H )

Fim Se Fim

(25)

Figura 11 – Exemplo de execução do HCS

Dado um grafo G com n vértices e m arestas, o número N de clusters encontrado e a complexidade (n,m) de se computar um corte mínimo no grafo G:

O tempo de execução do HCS é no máximo 2N x (n,m).

De acordo com Hartuv e Shamir, o HCS tem as seguintes propriedades: 1. O diâmetro de qualquer grafo altamente conectado é dois

Considerando um grafo G, um corte mínimo S em G e os subgrafos induzidos H e H gerados por S:

2. Se H é o menor subgrafo e | H | > 1, então |S |  | H | , com igualdade somente se H for um

clique.

3. Suponha que G não seja altamente conectado, mas tenha diâmetro 2 e |H |  |H |. Então:

a. Cada vértice em H é incidente em S.

b. H é um clique.

c. Se | H | >1, cada vértice em H incide numa única aresta de S. 4. O número de arestas num grafo altamente conectado é quadrático.

(26)

A forte homogeneidade é alcançada pelas propriedades 1 e 4, que indicam que no máximo duas arestas separam qualquer par de vértices de um grafo altamente conectado e que ele tem pelo menos a metade da densidade de um clique.

Já a forte separação entre clusters é alcançada com as propriedades de 3 e 5, pois qualquer conjunto não trivial, dividido pelo algoritmo dificilmente terá diâmetro 2 e o número de arestas removidas a cada iteração é linear em comparação com o número quadrático dos clusters finais.

Para incrementar a velocidade e a performance do algoritmo na prática, existem algumas sugestões de Hartuv e Shamir:

 Repetir o HCS um certo número de vezes para evitar, no caso de haver mais de um corte mínimo possível, que a escolha de um corte mínimo não leve à melhor solução e até gere

singletons desnecessários, como na Figura 11 se escolher um corte que tire x de G2. Na prática

poucas iterações são necessárias (1 a 5).

 Executar o processo “adoção” de singletons para que cada singleton seja adicionado a um

cluster com o qual tenha um número suficientemente grande de vizinhos. Como isso altera a

configuração atual, o processo deve ser repetido para acomodar as adoções feitas.

 Remover vértices de baixo grau para diminuir a probabilidade de se realizar um corte que gera

singletons, pois é custoso e pouco informativo para o agrupamento, além de poder acontecer

várias vezes num grafo extenso. Com isso, o tempo de execução reduz.

Com os refinamentos incluídos, temos um novo algoritmo (Figura 12), onde d1, d2, ..., dp é uma

seqüência decrescente de inteiros fornecida como entrada externa para validação do grau dos vértices:

(27)

Figura 12 – Algoritmo HCS incrementado

Pelas informações de Hartuv e Shamir, a execução do algoritmo tanto com dados simulados quanto reais teve resultados muito bons, concluindo que:

 HCS tem complexidade polinomial baixa.  É eficiente na prática.

 Não é necessário predefinir o número de clusters.  Gera clusters de diâmetro 2 - homogeneidade.

 Pode ser interessante não assumir como cluster um subgrafo H com conectividade 2

n

, mesmo

com diâmetro 2, pois consistem de dois cliques com 2

n

vértices conectados por um casamento

perfeito (perfect matching). Ao menos que n seja muito pequeno, isso parece mais uma união de dois clusters.

HCS_LOOP (G (V,E)) Início

Para ( i =1 até p) faça

Remova vértices já em clusters de G

HG

Repedidamente remova todos os vértices de grau < d(i) de H

Até Que (nenhum cluster seja encontrado pela chamada do HCS) faça HCS(H )

Execute adoção de singletons Remova vértices já em clusters de H Fim Até Que

Fim Para Fim

(28)

 Pode-se também tratar subgrafos com n = 2 de forma especial nas implementações.

 Para o futuro do algoritmo, eles propõem trabalhar com peso nas arestas e ver a possibilidade de determinar um valor ótimo para o marco (threshold) dos valores de similaridade usados para formar o grafo de similaridade.

Para implementar o algoritmo, é necessária uma solução para o problema de corte mínimo. Uma solução é apresentada a seguir.

3.3.1.1. Algoritmo de Corte Mínimo Dados G=(V,E), um grafo não direcionado

ue , uma função de capacidade, onde ue > 0 para cada e E, (S) = {vw: vw  E, v  S, w  S}, onde S  V,

O problema do corte mínimo se resume em encontrar um conjunto A = (S) tal que

  S  V e u(A) seja mínimo.

Corte mínimo em grafos é um tema muito discutido nas teorias sobre problemas de fluxo máximo, onde se observa que a solução de um fluxo máximo é solução para um corte mínimo (Cook, W. J. et ali, 1998). Especificamente para grafos não direcionados, o problema de corte mínimo pode ser resolvido de forma mais eficiente do que com a aplicação de métodos de fluxo máximo.

Podemos assumir que G é conexo, pois caso contrário, a solução é trivial. Quando ue= 1 o mínimo é

a conectividade das arestas de G, ou k(G) visto na seção 3.3.1. Como um corte (S) separa v,w de G

se e somente se exatamente um dos dois vértices está em S, (S) é um (v,w)-cut.

Cook apresenta um algoritmo para corte mínimo com base no que ele chama de “Identificação de Nós”. Sejam v,w vértices distintos de G(V,E). Identificar um vértice v em w é retirar do grafo os dois vértices mais a aresta (ou as arestas) que os conecta e inserir um novo vértice x, gerando Gvw.

Para cada aresta e E, o extremo p de e em G, será o extremo de e em Gvw se pv,w. Caso

contrário, o extremo p de e será o novo vértice x.

(29)

Suponha que façamos uma seqüência de identificações de nós começando por G. Então, temos um grafo G’. Cada um desses cortes é um corte de G. Assim, um corte mínimo de G’ é um candidato a ser um corte mínimo de G, mas alguns cortes de G foram ''perdidos'', ou seja, não são cortes de G’. Isso indica que podemos resolver o problema de corte mínimo pelo seguinte processo: escolha um par de nós v,w, compute um (v,w)-cut mínimo em G e substitua G por Gvw. Depois de n-2 passos,

vamos ter um grafo para o qual o problema de corte mínimo é trivial, pois terá apenas um corte. Assim, temos acumulado n-1 cortes em vários grafos obtidos de G por identificação de nós e o melhor dos cortes é um corte mínimo de G. Se fizermos isso numa seqüência direta, teremos que resolver n-2 problemas de (r,s)-cut mínimos.

Como a escolha de v,w está ao nosso alcance, podemos encontrar um (v,w)-cut mínimo de forma simples buscando uma ordem legal (legal ordering) de G, que é uma ordenação v1,v2,...,vn de

vértices de G tal que

u((Vi-1)  (vi))  u((Vi-1)  (vj)) para 2  i < j  n, onde Vi = {v1,...,vi}. ( 7)

Ou seja, escolhemos qualquer vértice para ser v1 e no passo i escolhemos vi para ser o vértice com a

maior capacidade total de arestas unindo-o aos vértices escolhidos anteriormente. Por exemplo, na Figura 13, uma ordem legal começando por a é a,b,c,d,e,h,g,f. Uma ordem legal pode ser encontrada em tempo O(n2).

Se v1,...,vn é uma ordem legal de G, então (vn) é um (vn,vn-1)-cut mínimo de G.

A Figura 14 mostra o efeito da identificação dos nós f,g no exemplo da Figura 13 abaixo.

(30)

Figura 14 – “Identificação” de nós

De fato, no exemplo da Figura 13, (f) é um (f,g)-cut mínimo. Portanto, um corte mínimo deste

grafo é (f) ou um corte mínimo do grafo da Figura 14. O procedimento de ordem legal indica que o

algoritmo (Figura 15) abaixo retorna um corte mínimo e ainda executa num tempo O(n3).

Figura 15 - Algoritmo de Corte Mínimo por Identificação de Nós

Segue um exemplo da execução do corte mínimo por identificação de nós: Tomando a Figura 13, a execução do algoritmo tem os seguintes passos: Identificar uma ordem legal para a,...,h

Começando com o vértice a, a aresta de maior peso é b. Assim, unimos a e b, como na Figura 16. Inicie M com  e A como indefinido;

Enquanto G tiver mais que um vértice

Encontre uma ordem legal v1,v2,...,vn de G;

Se u((vn)) < M

Substitua M por u((vn)) e A por (vn);

Substitua G por Gvn-1vn;

(31)

Figura 16 – Início do primeiro passo do minimum cut

Continuando por (a,b), selecionamos a aresta de maior peso c, pois as duas arestas que surgiram somam os pesos e assim por diante, como mostra a Figura 17.

Figura 17 – Final do primeiro passo do minimum cut

Neste ponto então, temos uma ordem legal a,b,c,d,e,h,g,,f, onde (vn) = (f) = {g,f} e u((vn)) = u((f)) = 8.

M=8 e A=(f).

(32)

Para o segundo passo (Figura 18), substituímos vn,vn-1 por um novo vértice x, substituímos G por

n n v v

G 1 e reiniciamos o processo.

Figura 18 – Segundo passo do algoritmo de minimum-cut

Aqui temos a ordem legal de Ggf = a,b,c,d,e,x,h, onde (vn) = (h) = {h} e u((h)) = 8.

Para o terceiro passo, substituímos h e x por y e Ggf por Gxh e reiniciamos o processo, começando

sempre por a. Teremos a ordem legal de Gxh = a,b,c,d,e,y, onde (vn) = (y) = {y} e u((y)) = 7.

Continua-se a execução até chegar ao passo trivial, na Figura 19.

Figura 19 – Último passo (n-1) do algoritmo de minimum cut

Temos a ordem legal de Gbt = a,s, onde  (vn) = (s) ={s} e u( (s)) = 8.

Chegamos ao final do algoritmo com M=7 e A= (y) (do terceiro passo). Onde y = {x,h} = {f,g,h}.

(33)

3.3.2 Agrupamento através de Minimum Spanning Tree

Uma abordagem prática e interessante em clustering para tratamento de informações de genes é apresentada por Tavakoly (Tavakoly,2003) com uso de minimum spanning tree(MST).

Cada cluster corresponde a uma sub-árvore da MST e o autor defende que assim, um problema de

clustering multidimensional é convertido num problema de particionamento de árvore, e enumera

suas vantagens:

A estrutura simples de uma árvore facilita implementações eficientes, do contrário seria altamente custoso computacionalmente;

Não depende de uma forma geométrica detalhada do cluster, o que elimina muitas das dificuldades encontradas em algoritmos como o K-means e o Self Organized Map (SOM) .

3.3.2.1. Algoritmo MST (Minimum Spanning Tree)

Em um grafo G=(V,E) conectado, não direcionado e com pesos, um subconjunto T de E cujas arestas criam um caminho entre quaisquer dois nós de G e a soma dos pesos de suas arestas é mínima, é chamado de minimum spanning tree.

Os dois algoritmos clássicos para MST, são Kruskal e Prim. O algoritmo Prim inicia com um vértice qualquer como raíz da árvore e então, num loop, seleciona um vértice mais leve (de menor peso) que conecte a árvore corrente a um vértice fora dessa árvore. Ele usa uma fila de prioridades mínimas para todos os vértices que não estão atualmente conectados à árvore que está sendo construída.

(34)

O algoritmo de Kruskal (Figura 20) cria conjuntos disjuntos para cada vértice de V. Iterativamente adiciona à árvore que está sendo construída uma aresta de menor peso que conecte dois conjuntos disjuntos. A cada aresta escolhida, os dois vértices se unem num mesmo conjunto. No final, todos os vértices estarão conectados pela árvore gerada.

Figura 20 – Algoritmo de Kruskal

O tempo de execução é O(E log(V)), visto que calculado Incluir {v} em F leva O(V) para todos os vértices e ordenar arestas leva O(E log(E)), pesquisar cada aresta e encontrar conjunto (FIND-SET) leva O(E (V)) e união leva O(1), o que dá O(E log(E)) = O(E log(V)).

Tavakoly utiliza o algoritmo de Prim associado à idéia do Single-link dos métodos hierárquicos, que considera a cada passo a união de dois vértices que possuam o menor peso na matriz de dissimilaridade. Com a lista ordenada de arestas da spanning tree são retiradas as n-1 arestas de menor peso, são as chamadas arestas inconsistentes. Dessa forma temos k grupos formados, que representam a solução do problema. O resultado esta na Figura 21 abaixo.

Seja FIND-SET(u, F) um procedimento para selecionar o elemento C de F tal que u  C.

G(V,E) o grafo de entrada e w o conjunto de pesos das arestas de E.

MST-KRUSKAL(G,w) 1. A = {}, F = {}

2. Para cada vértice v em V 3. Incluir {v} em F 4. Fim Para

5. Ordene as arestas de E em ordem decrescente do peso em w

6. Para cada aresta(u,v) em E, tomada de w em ordem decrescente de peso 7. Cu = FIND-SET(u, F); Cv = FIND-SET(v, F) 7. Se Cu != Cv 8. A = A  {(u,v))} 9. Remova Cu de F 10. Remova Cv de F 11. Incluir Cu  Cv em F 12. Fim Se 13. Fim Para retorna A

(35)

Figura 21 – Algoritmo Partitional MST Seja D = {c1, c2,..., cn}, o conjunto de elementos.

A, a matriz de adjacência com a distância entre os elementos K, o número de clusters desejado

M, o mapeamento representado por um conjunto de pares ordenados. Início

M = MST (A);

Identifica arestas inconsistentes em M; Remove k – 1 arestas inconsistentes; Cria representação de saída;

(36)

Capítulo 4 Estratégia de Solução

A organização dos plantios de eucalipto de uma empresa de fabricação de celulose para garantir madeira de boa qualidade no tempo previsto é uma tarefa complexa e dispendiosa pelo número de variáveis a ser considerado.

Como visto no Capítulo 2 , existem fatores de localização e área de um plantio até a espécie, densidade da madeira e fator de crescimento, idade e outras características próprias dos plantios existentes.

Dentro do grupo de problemas de agrupamento ou clustering, devemos escolher uma melhor abordagem que busque uma boa solução para dizer quais serão os grupos ou unidades de corte criados com madeira homogênea ao analista de planejamento.

Das abordagens estudadas e apresentadas anteriormente não poderíamos tirar bom proveito pelo fato dos métodos hierárquicos partirem para uma comparação um a um direta e sem possibilidade de voltar atrás para melhorar o resultado. Já com os métodos de partição temos o problema de indicar um número pré-definido de grupos. A não ser a variação do k-means com abordagem de avaliação de limite de similaridade entre elementos do mesmo cluster e de clusters diferentes, que não precisa da pré-definição, mas ainda tem alta complexidade.

Com isso mais a necessidade de se garantir uma boa qualidade da solução (homogeneidade desses grupos), optamos pela implementação do algoritmo HCS, que garante sobretudo uma forte homogeneidade dos seus grupos.

Para estudarmos o desempenho do algoritmo, vamos utilizar uma simulação de dados reais de plantios de eucalipto.

Neste estudo tínhamos a intenção de comparar o processamento do método HCS com uma abordagem que seguisse os padrões de avaliação de um analista humano. Pela complexidade de se levantar essa metodologia e todas as variáveis consideradas num planejamento real, precisamos simplificar o número de características avaliadas dos plantios e a simulação do analista será feita

(37)

por uma abordagem interessante e prática, apesar de ser um algoritmo guloso: agrupamento com uso de minimum spanning tree(MST), apresentada no item 3.3.2.

Num primeiro momento vamos avaliar as características de idade (através do ano e mês de plantio), classe de densidade da madeira(1,2,3,4), tipo de regeneração(reforma=0 ou rebrota=1) e localização(latitude e longitude).

Nesse contexto vamos avaliar a similaridade (em pontos) da seguinte forma:  Idade:

Tabela 1 – Similaridade de idade

Diferença de Meses Similaridade diferença < 2 1.0

2  diferença < 4 0.6 4  diferença < 6 0.2

diferença  6 0.0

 Classe Densidade:

Retorna 1-|diferença de classes| /3

Considerando as possíveis classes (1,2,3,4), os resultados serão:

Tabela 2 – Similaridade da classe de densidade

Diferença de Classes Similaridade

diferença = 0 1.0

diferença = 1 2/3

diferença = 2 1/3

diferença = 3 0.0

(38)

Tabela 3 – Similaridade do tipo de regeneração

Comparação de tipos Similaridade

Tipos iguais 1.0

Tipos diferentes 0.0

 Localização

Retorna 1-( |diferença de latitudes| +|diferença de longitudes| )/2) Tabela 4 – Similaridade da localização

Soma das diferenças de coordenadas

Similaridade

0.1 0.95

0.2 0.90

0.4 0.80

Considerando a proximidade em termos de coordenadas, um resultado bom é 0.95, médio é 0.90 e baixo é 0.80. A partir daí é mais baixo ainda.

Avaliando cada item, vamos definir que um plantio é similar a outro se o retorno em cada etapa for respectivamente maior ou igual a 0.6, 0.67, 1.0 e 0.90. Ou seja,

,

3.17 2 1 

n i i

p

p

d

Nos testes iniciais usamos conjuntos pequenos de plantios para termos uma noção do desenvolvimento do algoritmo.

O primeiro caso foi uma indução direta de dados para gerar o grafo apresentado na discussão sobre HCS (Figura 13) para verificarmos se a implementação geraria os mesmos clusters e gerou. Os outros veremos mais à frente.

4.1. Implementação dos algoritmos

Apresentamos abaixo a forma de implementação dos algoritmos escolhidos para trabalharem com o problema de agrupamento de áreas florestais.

(39)

De modo geral, nosso algoritmo será o da Figura 22.

Figura 22 – Algoritmo de Agrupamento via HCS

Hartuv e Shamir apenas indicam que a adoção de singletons seja feita por um cluster com relativamente próximo ao singleton e que este cluster não seja o próprio cluster de singletons. Em princípio vamos apenas procurar pelo cluster mais próximo e verificar se ele é diferente do conjunto de singletons.

O algoritmo de corte mínimo usado para dar suporte ao HCS é o mesmo da Figura 15, que usa a idéia de identificação de nós.

Nessa abordagem, precisamos de um grafo de similaridade gerado a partir da análise dos dados dos elementos (fingerprints), onde basicamente, devemos decidir quais elementos vão estar ligados por arestas devido a sua forte similaridade.

A idéia segue abaixo:

Dados c1,c2,...,cn características de plantio, a similaridade entre dois elementos p1e p2 temos duas

opções:

1. Cada ci tem uma regra de semelhança, onde ci(p1) =ci(p2) ou ci(p1)  ci(p2)

2. A regra dá uma pontuação (grau de semelhança) entre ci(p1) e ci(p2) .

De qualquer forma deve-se definir um marco inicial (threshold) t na opção 1 para tomar a decisão e na opção 2 para criação de uma aresta entre p1 e p2 caso

n

i

grauDeSemelhanca( ci( p1) ,ci( p2) ) > t. (8)

Optando-se então, por 2, criamos a aresta se

n

i

grauDeSemelhanca(ci( p1) ,ci( p2) ) > t, já que

cada característica possui uma forma de avaliação diferente, muitas vezes não permitindo o uso de uma fórmula de cálculo de similaridade única.

G(V,E)  GeraGrafoSimilaridade;

(40)

Assim temos o algoritmo da Figura 23 para geração de grafo de similaridade:

Figura 23 – Algoritmo GeraGrafoSimilaridade

Este algoritmo tem complexidade da ordem O(n2) .

Para efetuar a comparação com outro método, tomamos a implementação da abordagem de Tavakoly aplicando o método de Kruskal.

Um detalhe importante desta implementação é o fato de trabalharmos com valores de similaridade. Neste caso deveríamos pensar na idéia de Complete link e não Single link, da avaliação de similaridade dos métodos hierárquicos, que busca ligações de maior peso. Entretanto, teríamos um problema com a solução do MST, pois aí já seria interessante mantermos somente as arestas de maior peso. A alternativa então, é modificar o algoritmo de MST para buscar a máxima spanning

tree e a idéia de Complete link. No final retiramos as arestas de menor peso.

Outra questão é quanto à necessidade de informar o número de clusters desejado. O que fazer se não queremos informar k?

Uma solução é usar o threshold m calculado para o HCS de forma que as arestas com peso menor que m sejam retiradas, formando os clusters.

GeraGrafoSimilaridade(conjunto de n elementos P) Crie um grafo G com n vértices.

Para i=0 até n-1 faça

Para j=i+1 até n-1 faça

Se

n

i

grauDeSemelhanca( ci( p1) ,ci( p2) ) > m então

Crie uma aresta ( i,j) . Fim Para

Fim Para Retorne G

(41)

Assim, temos o algoritmo da Figura 24 para agrupamento:

Figura 24 – Algoritmo MST-Clustering Invertido

Aqui o grafo G(V,E) é um grafo completo, na verdade um clique, pois cada vértice tem uma ligação com todos os outros. Para o tratamento do HCS temos um grafo apenas com as arestas que ultrapassam o threshold e sem peso. Dessa forma vamos usar uma estrutura auxiliar para guardar a matriz de adjacências, com a similaridade (peso) de cada aresta para o MST.

De qualquer forma, o processamento para construção do grafo de similaridade e da matriz de adjacências é o mesmo: comparar cada elemento com os outros n-1 calculando seu grau de similaridade. A diferença é que a decisão tomada em comparação com o threshold acontece antes do processamento para o algoritmo HCS e no final do MST-Clustering invertido.

Sejam FIND-SET(u, S) um procedimento para selecionar o elemento C de S tal que u  C.

G(V,E) o grafo de entrada e w o conjunto de pesos das arestas de E.

MST-KRUSKAL-INVERTIDO(G,w) a função MST-KRUSKAL ordenando arestas de maior peso.

MAKE-SET(v, S) : incluir {v} em S UNION(u,v,S) : Remova Cu de S

Remova Cv de S

Incluir Cu  Cv em S

t um threshold para a avaliação de similaridade

Início

1. S = {}

2. A = MST-KRUSKAL-INVERTIDO(G,w) 3. Para cada vértice v em V

4. S = S  MAKE-SET(v,S) 5. Fim Para

6. Para cada aresta(u,v) em A 7. Cu = FIND-SET(u, S) 8. Cv = FIND-SET(v, S) 9. Se Cu  Cv e w(u,v)>t 10. UNION(u,v,S) 11. Fim Se 12. Fim Para 13. Retorna S

(42)

4.2. Comparação dos métodos

Usando a informação da seção anterior sobre a avaliação de similaridade, executamos alguns pequenos testes para verificar e entender o comportamento dos algoritmos.

A entrada para os programas é um arquivo texto com um conjunto de plantios em que as colunas representam identificador do plantio, grupo, ano de plantio, mês de plantio, classe de densidade, tipo de regeneração, latitude e longitude.

No primeiro conjunto (Figura 25) temos:

0 0 1999 2 4 0 -19.20 -41.00 1 0 1999 2 2 0 -19.30 -40.50 2 0 2000 1 1 0 -19.30 -40.00 3 0 2000 1 3 0 -19.50 -40.50 4 0 2000 2 1 0 -19.50 -40.10 5 0 1999 12 1 0 -19.50 -40.00 6 0 1999 12 2 0 -19.20 -40.10 7 0 1998 9 1 0 -19.10 -40.10 8 0 1998 9 3 0 -19.20 -40.50 9 0 1998 9 1 0 -19.10 -40.50 10 0 1999 2 2 0 -19.10 -41.00 11 0 1999 2 1 0 -19.20 -40.00

Figura 25 – Conjunto de plantios 1

O conjunto gera a matriz de adjacências da Figura 26 abaixo:

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [0] 0 [1] 3,7 0 [2] 1,45 2,75 0 [3] 2,6 2,9 3,65 0 [4] 1,4 2,7 3,85 3,8 0 [5] 1,35 2,65 3,9 3,75 3,55 0 [6] 2,55 2,75 3,9 3,65 3,45 3,8 0 [7] 1,7 2,9 2,85 2,6 2,8 2,75 2,95 0 [8] 2,95 3,15 2,7 2,85 2,65 2,6 2,8 3,75 0 [9] 1,9 3,1 2,65 2,8 2,6 2,55 2,75 3,8 3,95 0 [10] 3,95 3,65 2,4 2,55 2,35 2,3 2,5 2,75 2,9 2,95 0 [11] 2,5 3,7 2,95 2,6 2,8 2,85 2,95 3,1 2,95 2,9 3,45 0 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

Figura 26 – Matriz de Adjacências 1

(43)

1 0 11 10 7 9 8 6 2 3 4 5

Figura 27 – Grafo de Similaridade 1

E na Figura 28 temos os grupos homogêneos (clusters) gerados.

7 0 1998 9 1 0 -19.1 -40.1 8 0 1998 9 3 0 -19.2 -40.5 9 0 1998 9 1 0 -19.1 -40.5 2 1 2000 1 1 0 -19.3 -40.0 5 1 1999 12 1 0 -19.5 -40.0 6 1 1999 12 2 0 -19.2 -40.1 3 1 2000 1 3 0 -19.5 -40.5 4 1 2000 2 1 0 -19.5 -40.1 0 2 1999 2 4 0 -19.2 -41.0 1 2 1999 2 2 0 -19.3 -40.5 10 2 1999 2 2 0 -19.1 -41.0 11 2 1999 2 1 0 -19.2 -40.0

Figura 28 – Clusters por HCS 1

Um resultado muito esperado já que o grafo é composto de três subgrafos desconexos entre si. Para o MST-Clustering invertido, a spanning tree gerada a da Figura 29 abaixo:

Figura 29 – Máxima Spanning Tree 1

(44)

Veja que as únicas arestas com peso menor que o threshold t = 3.17, definido no início deste capítulo, são (7,6) e (8,1). Ao retirá-las da árvore, ficamos com os três clusters.

O segundo exemplo (Figura 30) foi:

0 0 1999 2 1 0 -19.20 -41.00 1 0 1999 2 3 1 -19.10 -40.90 2 0 1999 2 2 1 -19.30 -41.90 3 0 1999 6 4 0 -19.10 -40.70 4 0 1999 4 1 0 -19.30 -40.70 5 0 1999 8 4 0 -19.10 -40.50 6 0 1999 4 2 0 -19.30 -40.50 7 0 1999 8 1 0 -19.10 -40.40 8 0 1999 8 1 0 -19.10 -40.30 9 0 1999 6 1 0 -19.30 -40.30 10 0 1999 6 2 0 -19.10 -41.30 11 0 1999 8 1 0 -19.20 -40.50

Figura 30 – Conjunto de plantios 2

Com a seguinte (Figura 31) matriz de adjacências:

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [0] 0 [1] 2,9 0 [2] 2,5 3,4 0 [3] 2 2,1 1,5 0 [4] 3,4 2,4 2 2,5 0 [5] 1,7 1,8 1,2 3,5 2 0 [6] 3,3 2,3 1,9 3,4 3,9 3,1 0 [7] 2,65 1,75 1,15 2,45 2,95 2,95 3,05 0 [8] 2,6 1,7 1,1 2,4 2,9 2,9 3 3,95 0 [9] 2,8 1,8 1,4 2,7 3,4 2,4 3,5 3,45 3,5 0 [10] 3 2 1,8 3,7 3,2 3,2 3,1 3,15 3,1 3,4 0 [11] 2,75 1,75 1,25 2,45 3,05 2,95 3,15 3,9 3,85 3,45 3,15 0 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

Figura 31 – Matriz de Adjacências 2

Aqui temos uma diferença menor de idade, mas foi introduzida uma indicação de tipo de regeneração diferente em dois plantios.

(45)

1 0 11 10 7 9 8 6 2 3 4 5

Figura 32 – Grafo de Similaridade 2

E o resultado (Figura 33) foi:

10 0 1999 6 2 0 -19.1 -41.3 3 0 1999 6 4 0 -19.1 -40.7 5 0 1999 8 4 0 -19.1 -40.5 4 1 1999 4 1 0 -19.3 -40.7 6 1 1999 4 2 0 -19.3 -40.5 0 1 1999 2 1 0 -19.2 -41.0 7 2 1999 8 1 0 -19.1 -40.4 8 2 1999 8 1 0 -19.1 -40.3 9 2 1999 6 1 0 -19.3 -40.3 11 2 1999 8 1 0 -19.2 -40.5 1 3 1999 2 3 1 -19.1 -40.9 2 3 1999 2 2 1 -19.3 -41.9

Figura 33 – Clusters por HCS 2

Os dois plantios com tipo de regeneração diferente ficaram num grupo à parte.

E o máximo spanning tree gerou apenas dois clusters, dada a spanning tree da Figura 34 abaixo:

Figura 34 – Máxima SpanningTree 2

Veja que somente a aresta (1,0) está abaixo de 3.17. Diferente do HCS, aqui não se separou (6,9) e (9,10), cujos custos são 3.5 e 3.4 respectivamente. Considerando que o HCS trabalhou com um grafo em que só havia arestas com peso superior a 3.17, os seus clusters são mais homogêneos pela definição de que são altamente conectados ao terem, cada um, um minimum cut com número igual

(46)

ou superior à metade dos seus vértices. Observe também que, a união de 3,5 e 10 ao conjunto{7,8,9,11} se faz completamente por arestas de peso menor que 3.17, exceto (10,9), o que nos leva a refletir que uma análise mais criteriosa realmente subdividiria o grupo.

4.3. Novos critérios

Num caso real o tipo de regeneração não seria muito útil para separação de corte já que não influencia diretamente na produção. As classes de densidade, que no real seriam fortes separadores, de forma que plantios de classes diferentes não poderiam ficar juntos, poderiam ser substituídas por densidade simplesmente, representada por um número inteiro. A similaridade entre densidades pode ser calculada então, de forma contínua, tomando por base o mínimo e máximo conhecidos e sua diferença como pior caso. Densidades iguais são o melhor caso. Por último, seria interessante usar o fator de produtividade (boa, média, ruim) de um plantio, de forma que se a produtividade for boa aumentamos a idade em 6 meses, pois podemos colher mais cedo e se a produtividade for ruim, aumentamos em 1 ano, pois é melhor começar novo plantio do que manter um de alto custo. Aproveitando, ano e mês de plantio podem ser substituídos por idade simplesmente, representada por um número decimal para dar a precisão dos meses.

Nesse contexto vamos avaliar a similaridade (em pontos) da seguinte forma:  Idade:

Primeiro avalia-se a produtividade, somando-se um fator à idade como um ajuste para a colheita. Tabela 5 – Ajuste de Produtividade na Idade

Produtividade Idade

B (boa) + 0.5

M (média) ----

(47)

Tabela 6 – Similaridade de idade

Diferença de Meses Similaridade diferença < 2 1.0

2  diferença < 4 0.6 4  diferença < 6 0.2

diferença  6 0.0

 Classe Densidade:

Retorna 1-|diferença de densidade|/240

Como as classes variam de (417...645), pegamos a diferença e dividimos por 240 para fazer uma normalização e termos um valor entre 0 e 1.

 Localização Retorna 1- ( 2 longitudes de diferença latitudes de diferença 2 2 )

Aqui também dividimos por um valor normalizador para ter uma similaridade entre 0 e 1. O valor 2vem do fato de se considerar 1 grau de latitude e 1 grau de longitude um limite razoável para manter áreas num mesmo grupo, não sendo viável processar o algoritmo para localizações mais distantes.

Assim, para 0.1 de latitude e longitude, temos um valor bom = 0.9.

Avaliando cada item, vamos definir que um plantio é similar a outro se o retorno em cada etapa for respectivamente maior ou igual a 0.6, 0.5 e 0.90. Ou seja,

,

2 2 1 

n i i

p

p

s

Referências

Documentos relacionados

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

Código Descrição Atributo Saldo Anterior D/C Débito Crédito Saldo Final D/C. Este demonstrativo apresenta os dados consolidados da(s)

Mas ele é ( verbo ser, no Presente do Indicativo ) apenas um gato e não tinha tido ( verbo ter, no Pretérito Mais-Que-Perfeito Simples do Indicativo ) tempo de aprender (

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis

O TBC surge como uma das muitas alternativas pensadas para as populações locais, se constituindo como uma atividade econômica solidária que concatena a comunidade com os