• Nenhum resultado encontrado

AGRUPAMENTO DE DADOS UTILIZANDO ALGORITMO DE COLÔNIA DE FORMIGAS. André Luís Lauro

N/A
N/A
Protected

Academic year: 2021

Share "AGRUPAMENTO DE DADOS UTILIZANDO ALGORITMO DE COLÔNIA DE FORMIGAS. André Luís Lauro"

Copied!
84
0
0

Texto

(1)

COPPE/UFRJ COPPE/UFRJ

AGRUPAMENTO DE DADOS UTILIZANDO ALGORITMO DE COLÔNIA DE FORMIGAS

André Luís Lauro

Dissertação de Mestrado apresentada ao Programa de Pós-graduação em Engenharia Civil, COPPE, da Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Mestre em Engenharia Civil.

Orientadora: Beatriz de Souza Leite Pires de Lima

Rio de Janeiro Setembro de 2008

(2)

ii

AGRUPAMENTO DE DADOS UTILIZANDO ALGORITMO DE COLÔNIA DE FORMIGAS

André Luís Lauro

DISSERTAÇÃO SUBMETIDA AO CORPO DOCENTE DO INSTITUTO ALBERTO LUIZ COIMBRA DE PÓS-GRADUAÇÃO E PESQUISA DE ENGENHARIA (COPPE) DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIAS EM ENGENHARIA QUÍMICA.

Aprovada por:

________________________________________________ Profª. Beatriz de Souza Leite Pires de Lima D.Sc.

________________________________________________ Prof. Nelson Francisco Favilla Ebecken, D.Sc.

________________________________________________ Profª. Valeria Menezes Bastos, D.Sc.

RIO DE JANEIRO, RJ - BRASIL SETEMBRO DE 2008

(3)

iii

Lauro, André Luís

Agrupamento de Dados Utilizando Algoritmo de Colônia de Formigas/ André Luís Lauro. – Rio de Janeiro: UFRJ/COPPE, 2008.

IX, 75 p.: il.; 29,7 cm.

Orientadora: Beatriz de Souza Leite Pires de Lima Dissertação (mestrado) – UFRJ/ COPPE/ Programa de Engenharia Civil, 2007.

Referencias Bibliográficas: p. 69-72.

1. Agrupamento de Dados. 2. Colônia de Formigas. I. Lima, Beatriz de Souza L. P. de. II. Universidade Federal do Rio de Janeiro, COPPE, Programa de Engenharia Civil. III. Titulo.

(4)

iv AGRADECIMENTOS

Aos Professores Beatriz Lima e Nelson Ebeken, pela orientação e apoio ao longo deste trabalho.

Ao Diretor do HNMD, Alte Montenegro, e demais companheiros de trabalho, pela compreensão durante minha última e crucial etapa da elaboração da dissertação.

Aos funcionários do Programa de Engenharia Civil da COPPE, em especial à Elizabeth, por seu apoio na minha vida acadêmica.

Aos amigos e irmãos que, direta ou indiretamente contribuíram durante a elaboração deste trabalho, Paulo, Urias, Adriano, Rodrigo e Assis.

Aos meus pais, Tarcísio e Cléa, a quem devo tudo o que já conquistei.

(5)

v

Resumo da Dissertação apresentada à COPPE/UFRJ como parte dos requisitos necessários para a obtenção do grau de Mestre em Ciências (M.Sc.).

AGRUPAMENTO DE DADOS UTILIZANDO ALGORITMO DE COLÔNIA DE FORMIGAS

André Luís Lauro

Setembro /2008

Orientadora: Beatriz de Souza Leite Pires de Lima Programa: Engenharia Civil

O objetivo deste trabalho é fazer um estudo sobre o Algoritmo Simples de Agrupamento por Colônia de Formigas.

O Algoritmo de Agrupamento por Colônia de Formiga é uma ferramenta da linha de computação baseada em modelos encontrados na natureza, que busca solução para o problema de agrupamento de dados.

O estudo apresenta uma revisão bibliográfica referente ao surgimento e modificações propostas no Algoritmo, analisando sua dinâmica e seus parâmetros, e apresenta experimentos de aplicação do algoritmo em algumas bases de dados.

Para a realização dos experimentos, o algoritmo foi implementado no software MATLAB, de forma que se pudesse avaliar seu comportamento no que diz respeito aos seus parâmetros e convergência ao longo das iterações.

(6)

vi

Abstract of Dissertation presented to COPPE/UFRJ as partial fulfillment of the requirements for the degree of Master of Science (M.Sc.)

DATA CLUSTERING APPLYING STANDART ANT CLUSTERING ALGORITHM

André Luís Lauro

September/2008

Advisor: Beatriz de Souza Leite Pires de Lima Department: Civil Engineering

The purpose of this work is to study and analyze the Standard Ant Clustering Algorithm (SACA) and other variations of this algorithm.

The Standard Ant Clustering Algorithm is a computational intelligence paradigm inspired by the behavior of natural ants which seeks solutions for data clustering problems.

This study presents a literature review concerning the appearance and proposed changes in the algorithm SACA, analyzing its dynamics and its parameters, and present experiments of applying this algorithm on some databases.

The algorithm was implemented using MATLAB software, so that it is possible to evaluate a number of well-known benchmark data sets. The results were analyzed and commented in detail.

(7)

vii SUMÁRIO 1 - INTRODUÇÃO ... 1 1.1-MOTIVAÇÃO... 1 1.2-OBJETIVO... 1 1.3-ORGANIZAÇÃO DO TRABALHO... 2 2 - ANÁLISE DE AGRUPAMENTO... 3 2.1-O AGRUPAMENTO NO COTIDIANO... 3

2.2-PRINCIPAIS CONCEITOS ABORDADOS NOS ALGORITMOS DE AGRUPAMENTO... 4

2.2.1-OBJETO E ATRIBUTO... 4

2.2.2-DISTÂNCIA E SIMILARIDADE... 4

2.2.3-MATRIZ DE DADOS E DE SIMILARIDADE... 5

2.2.4-GRUPO OU “CLUSTER” ... 6

2.3-CARACTERÍSTICAS RECOMENDÁVEIS PARA UM MÉTODO DE AGRUPAMENTO... 6

2.4-MÉTODOS DE AGRUPAMENTO... 8

2.4.1-MÉTODOS FUNDAMENTADOS EM PARTICIONAMENTO... 9

2.4.2-MÉTODOS HIERÁRQUICOS... 9

2.4.3-MÉTODOS BASEADO EM DENSIDADE... 10

2.4.4-MÉTODOS BASEADOS EM ESTRUTURAS DE GRADE... 10

2.4.5-MÉTODOS BASEADOS EM MODELOS... 10

3 - ALGORITMO SIMPLES DE CLUSTERIZAÇÃO POR COLÔNIA DE FORMIGA... 11

3.1-INTRODUÇÃO... 11

3.2-DESCRIÇÃO DO ALGORITMO DE AGRUPAMENTO INSPIRADO EM COLÔNIA DE FORMIGAS... 13

3.2.1-PRINCÍPIOS BÁSICOS... 13

3.2.2-DINÂMICA DO ALGORITMO: ... 14

3.2.3-“PSEUDOCÓDIGO” DO SACA... 16

3.2.4-FUNÇÕES E PARÂMETROS ENVOLVIDOS NO ALGORITMO... 16

4 - PRINCIPAIS ALTERAÇÕES PROPOSTAS NO ALGORITMO BÁSICO DE CLUSTERIZAÇÃO – SACA... 20

4.1-MÉTODO “ANT-CLASS”- APLICAÇÃO DO ALGORITOM “K-MEANS”... 20

4.2-APERFEIÇOAMENTOS NO ALGORITMO ORIGINAL... 22

(8)

viii

4.2.2-MEMÓRIA CURTA COM “LOOK-AHEAD” DOS AGENTES... 22

4.2.3-RAIO DE PERCEPÇÃO CRESCENTE... 23

4.2.4-SEPARAÇÃO ESPACIAL... 23

4.2.5-VIZINHANÇA PONDERADA... 24

4.2.6-MODIFICAÇÃO DAS FUNÇÕES PROBABILIDADES ORIGINAIS... 25

4.2.7-AJUSTE DOS PARÂMETROS INDEPENDENTES DOS DADOS... 26

4.2.8-PARÂMETROS DEPENDENTES DAS CARACTERÍSTICAS DA BASE DE DADOS... 27

4.3-APLICAÇÃO DE REDE-NEURAL E ALGORITMO GENÉTICO NO SACA... 28

4.3.1-–REDE NEURAL... 29

4.3.2-ALGORITMO GENÉTICO... 30

4.3.3-EXPERIMENTOS... 30

4.4-UTILIZAÇÃO DE ALGORITMO GENÉTICO PARA A DEFINIÇÃO DOS PARÂMETROS DO SACA 31 4.4.1-ALTERAÇÕES NO SACA ... 31

4.4.2-UTILIZAÇÃO DO ALGORITMO GENÉTICO... 32

4.5-“ADAPTATIVE ANT CLUSTERING ALGORITHM:A2CA” ... 34

4.5.1-PROBABILIDADE DE DEIXAR O OBJETO... 34

4.5.2-ROTINA DE ADAPTAÇÃO DE KP... 35

4.5.3-VISÃO PROGRESSIVA DO AGENTE... 36

4.5.4-HEURÍSTICA FEROMÔNIO... 37

4.6-SEGMENTAÇÃO DE DADOS EM UM NÚMERO DESCONHECIDO DE GRUPOS... 39

5 - IMPLEMENTAÇÃO ... 41

5.1-FLUXOGRAMA... 41

5.2-DESCRIÇÃO DA IMPLEMENTAÇÃO... 42

5.3-PARÂMETROS A SEREM ESTABELECIDOS... 43

5.4-ALTERAÇÕES IMPLEMENTADAS... 44

6 - EXPERIMENTOS E RESULTADOS ... 47

6.1-BASE DE DADOS “RUSPINI”... 47

6.1.1-EXPERIMENTO I ... 48

6.1.2-EXPERIMENTO II... 51

6.1.3-EXPERIMENTO III... 54

6.1.4-EXPERIMENTO IV ... 56

(9)

ix

6.2.1-EXPERIMENTO I ... 59

6.2.2-EXPERIMENTO II... 62

6.3-BASE DE DADOS HEART... 65

6.3.1-EXPERIMENTO I ... 65

7 - CONCLUSÕES E TRABALHOS FUTUROS ... 69

REFERÊNCIAS BIBLIOGRÁFICAS...72

(10)

1 - INTRODUÇÃO 1.1 - MOTIVAÇÃO

A Análise de Agrupamento é uma importante atividade humana. Desde criança, nós aprendemos a distinguir diferenças entre grupos de objetos. Aprendemos as diferenças entre cachorros e gatos, entre animais e plantas, assim como muitos outros casos. Inconscientemente nós vamos continuamente melhorando nossa capacidade de distinguir grupos em tudo que observamos.

Em “data-mining”, esta atividade é formalizada, estudada e largamente utilizada. Considerando o amplo espectro das ferramentas disponíveis nesta área de conhecimento humano, a Análise de Agrupamento é uma ferramenta fundamental. Ela permite extrair as primeiras informações, após seu pré-processamento, de uma base de dados que nunca tenha sido trabalhada. E obviamente extrai aquelas informações ocultas, que poderão ser trabalhadas, estudadas e utilizadas exaustivamente. Já existem muitas ferramentas para realizar esta atividade. Infelizmente, ainda não existe a ferramenta perfeita. Todas elas necessitam de muitos parâmetros de entrada, muitas vezes são parâmetros difíceis de serem definidos. E a maioria das ferramentas disponíveis necessita da informação de quantidade de grupos existentes na base de dados. Esta informação nem sempre é disponível.

No primeiro contato que se tem com o algoritmo de agrupamento inspirado na natureza denominado “Standart Ant Clustering Algorithm, “SACA”, pode-se observar que o mesmo possui uma vantagem com relação a maioria dos outros algoritmos de agrupamento. Ele não necessita da informação inicial do número de grupos da base de dados a ser trabalhada.

1.2 - OBJETIVO

O algoritmo de agrupamento por colônia de formigas é um algoritmo que foi proposto recentemente, e cujos recursos ainda não estão totalmente explorados. Ele teve sua primeira abordagem para aplicação como uma ferramenta de agrupamento de dados em 1994 (LUMER e FAIETA).

Este trabalho tem o objetivo de esmiuçar o algoritmo e apresentá-lo de uma forma bem clara, de forma a possibilitar a avaliação de sua evolução, dinâmica e desempenho.

(11)

1.3 - ORGANIZAÇÃO DO TRABALHO

A dissertação é composta, além deste capítulo, de seis outros capítulos que estão organizados da seguinte forma:

O capítulo 2 faz uma abordagem do problema de agrupamento. Apresenta tópicos sobre o significado do agrupamento no cotidiano; os principais conceitos sobre o assunto, que serão largamente utilizados ao longo desta dissertação; as características recomendáveis para um método de agrupamento; e quais os principais métodos de agrupamento existentes.

O capítulo 3 apresenta o “Standart Ant Clustering Algorithm – SACA”, Algoritmo Simples de Agrupamento por Colônia de Formigas. Faz uma descrição do algoritmo original; apresenta seu “pseudocódigo” e as funções e parâmetros envolvidos.

O capítulo 4 apresenta as principais alterações propostas no algoritmo original, existentes na literatura sobre o assunto. Estas propostas foram motivadas, principalmente, pelos problemas de convergência relatados na maioria dos artigos pertinentes.

O capítulo 5 apresenta a implementação do algoritmo, assim como algumas das alterações apresentadas no capítulo anterior, no software MATLAB.

O capítulo 6 apresenta alguns experimentos realizados com o algoritmo, com o objetivo de se fazer um estudo do comportamento de sua dinâmica e seus principais parâmetros.

O capítulo 7 apresenta as conclusões do trabalho e aponta sugestões para trabalhos futuros em linhas de pesquisa abordando o algoritmo de colônia de formigas.

(12)

2 - ANÁLISE DE AGRUPAMENTO 2.1 - O AGRUPAMENTO NO COTIDIANO

Em mineração de dados, o processo de se agrupar um conjunto de dados que representam um conjunto de objetos físicos ou abstratos em classes de objetos similares é chamado de agrupamento, ou “clusterização”. Um grupo é uma coleção de objetos que são similares entre si dentro do mesmo grupo, e são dissimilares em relação a objetos de outros grupos. Um conjunto de dados semelhantes, que atenda ao conceito citado, dentro de uma base de dados, pode ser considerado coletivamente como um grupo, ou “cluster”, para efeito de muitas aplicações.

Em termos práticos, a Análise de Agrupamento tem sido largamente utilizada em numerosas aplicações, tais como reconhecimento de padrões, análise de dados, processamento de imagens e pesquisas de mercado. Seguem-se algumas das aplicações típicas das técnicas provenientes da Análise de Agrupamento: Nas grandes empresas, a clusterização, utilizando-se as bautilizando-ses de dados relativos aos clientes, pode auxiliar o gerente a descobrir distintos grupos dos mesmos, definindo seus padrões de consumo. Em biologia, a técnica pode ser utilizada para se deduzir a taxonomia de plantas e animais, associando-se genes com a similaridade de suas funcionalidades, e esclarecer estruturas inerentes a populações. A análise de agrupamento também pode ser usada na Web para ajudar a classificar documentos com o objetivo de se descobrir informações.

Trata-se de uma importante ferramenta de “data-mining”, que pode ser usada isoladamente, para o esclarecimento de distribuições de determinado conjunto de dados, observando-se as características de cada cluster. Por meio dessas ferramentas, pode-se identificar regiões densas e esparsas no hiper-espaço da base de dados, e, conseqüentemente, descobrir padrões gerais de distribuição, e correlações interessantes, até então ocultas, dentre os atributos dos dados. Pode ser usada, também, como um degrau de pré-processamento para outros algoritmos, como a classificação, que será operada considerando-se os grupos detectados.

Como um ramo da estatística, a Análise de Agrupamento tem sido estudada há muitos anos, focando, principalmente, na análise de grupos baseada em distâncias (k-means). Diferentemente da ferramenta “classificação”, a “clusterização” não dispõe de conjuntos de classes pré-definidas para servirem como exemplo. Por esta razão, a clusterização é uma forma de aprendizagem baseada na observação, e não no exemplo.

(13)

Em “data-mining”, muito tem sido o esforço em se encontrar métodos eficientes para se fazer análise de agrupamento em grandes bases de dados. Muita pesquisa tem sido feita no sentido de se encontrar métodos de agrupamento que atendam ao máximo das características recomendáveis para sua eficiência na aplicação de casos reais. Um resumo dessas características será apresentado em item seguinte.

2.2 - PRINCIPAIS CONCEITOS ABORDADOS NOS ALGORITMOS DE AGRUPAMENTO

Serão apresentados, a seguir, alguns conceitos mais freqüentemente encontrados na análise de agrupamento, e que serão amplamente utilizados no presente trabalho.

2.2.1 - OBJETO E ATRIBUTO

Na literatura de análise de agrupamento, encontram-se diferentes palavras para expressarem o mesmo conceito. Os termos “objeto”, “item”, “indivíduo”, “registro”, “observação” denotam um item individual da base de dado. No presente trabalho serão utilizados, principalmente, os termos registro e item. Considerando-se um registro em um espaço, utilizam-se os termos “variável” ou “atributo” para denominarem as suas características observadas e registradas (os componentes escalares individuais). Um registro, portanto, possui vários atributos.

Matematicamente, um conjunto de dados com n objetos, cada qual caracterizado por d atributos, é representado por D={x1,x2,....,xn}, onde xi=(xi1,xi2,...,xid)T é o um vetor que

representa o objeto de ordem i, e xij é o componente que representa o atributo de ordem j do

objeto xi. O número de atributos d é chamado de dimensionalidade do conjunto de dados.

2.2.2 - DISTÂNCIA E SIMILARIDADE

Distância e similaridade representam uma importante regra em análise de agrupamento. Na literatura sobre análise de agrupamento, medida de similaridade, coeficiente de similaridade, medida de dissimilaridade, ou simplesmente distância são termos utilizados para expressarem a quantificação de similaridade ou dissimilaridade entre dois objetos do conjunto de dados.

(14)

A generalização da fórmula de distância entre dois objetos é dada pela distância de Minkowski, a saber (HAN e KAMBER, 2001):

( )

(

q

)

q jd id q j q j i x x x x x x j i d 1 2 12 2 1 .... , = − + − + + −

Onde q é um inteiro positivo. Esta fórmula representa a distância de Manhattan, quando q =1, e a distância Euclidiana, quando q=2.

2.2.3 - MATRIZ DE DADOS E DE SIMILARIDADE

Uma matriz de dados representa n registros, tais como pessoas, por exemplo, com d atributos, tais como idade, altura, peso, raça, e etc. A estrutura pode ser em forma de uma tabela relacional ou uma matriz n × d (n objetos × d variáveis):

          nd n d x x x x ... : : : ... 1 1 11

Matriz dissimilaridade representa as medidas de dissimilaridades por meio de uma

tabela n × n, onde d(i,j) é a medida de dissimilaridade entre os objetos i e j. De uma forma

geral, d(i,j) é um número não negativo que se aproxima de 0 quando os objetos i e j são altamente similares, e se torna maior quanto mais os objetos são dissimilares. Considerando-se que d(i,j)=d(j,i), e d(i,i)=0, a matriz toma a Considerando-seguinte forma:

( )

                0 ... ... ) 2 , ( ) 1 , ( : : : 0 ) 2 , 3 ( 1 , 3 0 ) 1 , 2 ( 0 n d n d d d d

(15)

2.2.4 -GRUPO OU “CLUSTER”

Na Análise de Agrupamento, o termo grupo, “cluster” ou classe é utilizado para definir um subconjunto de objetos pertencentes a um conjunto de dados que possuem entre si alguma relação, que os definem como sendo do mesmo grupo.

Geralmente, o senso comum sobre um “cluster” o define como sendo um conjunto de objetos cujos itens possuem algumas características, a saber:

 compartilham as mesmas propriedades (atributos) ou as possuem bem

parecidas;

 possuem pequenas distâncias, ou dissimilaridades mútuas;

 são claramente distintos dos outros objetos, que não pertencem ao grupo, do

conjunto de dados.

Considerando-se o hiper-espaço dos atributos, um grupo normalmente ocupa uma região relativamente densa e contínua desse espaço, que podem constituir as mais diversas formas.

2.3 -CARACTERÍSTICAS RECOMENDÁVEIS PARA UM MÉTODO DE

AGRUPAMENTO

Existem atualmente muitos métodos disponíveis para a realização da análise de agrupamento. Apesar de existirem alguns consensos, sobre as qualidades de muitos algoritmos tradicionais, e até alguns novos, não existe, ainda, um algoritmo perfeito, que atenda a todas as características requeridas para um método ideal. Pode-se enumerar as principais características recomendáveis para um algoritmo de agrupamento, a saber (HAN e KAMBER, 2001):

 Escalabilidade - Muitos algoritmos de agrupamento funcionam muito bem

quando são aplicados a pequenas bases de dados, contendo menos de 200 objetos. Existem, contudo, bases de dados contendo milhões de objetos. Se no agrupamento for considerado somente uma amostra da base de dados, os resultados poderão ser viciados. A escalabilidade é, portanto, uma característica altamente recomendável para um bom algoritmo. O mesmo deve funcionar tanto em bases pequenas quanto nas grandes, com um custo computacional compatível.

(16)

 Capacidade de tratar diferentes tipos de atributos - Muitos algoritmos

são projetados para agruparem dados baseados em distância (dados numéricos, portanto). Existem, no entanto, em bases de dados que requeiram um trabalho de agrupamento, vários tipos de atributos, tais como binários, nominais e ordinais.

 Capacidade de descobrir grupos com formatos diversos - Muitos

algoritmos de agrupamento determinam os grupos baseados em medidas de distância Euclidiana ou Manhattan. Algoritmos baseados em tais medidas de distância tendem a encontrarem grupos esféricos com tamanhos e densidades similares. No entanto, um cluster pode possuir outra forma qualquer. É importante, portanto, que sejam disponibilizados algoritmos capazes de trabalharem e descobrirem diferentes formatos de clusters.

 Reduzida necessidade de parâmetros de inicialização – Muitos

algoritmos necessitam que sejam utilizados certos parâmetros para sua inicialização, tal como o número desejado de grupos. O resultado da análise do agrupamento desses algoritmos podem ser sensíveis aos parâmetros de entrada. E, normalmente, esses parâmetros são difíceis de serem estimados, principalmente em bases de dados com objetos com alta dimensionalidade. Isto não somente pode tornar-se um ônus para o usuário, mas pode acarretar um controle difícil da qualidade dos resultados obtidos.

 Capacidade de tratar dados com ruídos – A maioria das bases de dados

reais contém “outliers”, faltas de dados, dados desconhecidos, ou errados. Alguns algoritmos de clusterização podem ser sensíveis a essas exceções a ponto de conduzirem a um resultado de baixa qualidade.

 Independência da ordem de apresentação dos dados – Alguns algoritmos

são sensíveis à ordem que os dados são introduzidos. Por exemplo, alguns conjuntos de dados, quando apresentam os dados ordenados de forma diferente, podem gerar grandes diferenças na formação dos grupos pelo algoritmo. Isto é extremamente inconveniente, pois é importante que a ordem apresentada não interfira no resultado. No mundo real, não há como se ter o controle da ordenação mais adequada a um determinado algoritmo, principalmente quando a base de dados é muito extensa.

(17)

 Tratar dados de alta dimensionalidade – Uma base de dados ou uma

“data warehouse” pode conter muitas dimensões, ou atributos. Muitos algoritmos são excelentes quando os dados possuem poucos atributos, tais como dois ou três. Os olhos humanos são excelentes para visualizarem agrupamentos, no máximo, em espaços tridimensionais. É um desafio, no entanto, a visualização de grupos em espaços de altas dimensões, especialmente quando se considera que os dados podem ser esparsos e podem formar grupos com as formas (hiper-formas) mais variáveis. Os algoritmos devem se adequar, portanto, para trabalharem com dados com maiores quantidades de atributos.

 Agrupamento de acordo com restrições impostas – Há casos, no mundo

real, em que é necessário estabelecerem-se vários tipos de limites para os quais se quer o agrupamento. Um exemplo seria o agrupamento de necessidades de clientes por regiões. Uma tarefa desafiante para um eficiente algoritmo seria encontrar grupos que satisfizessem determinadas limitações especificadas pelo usuário.

 Interpretabilidade e empregabilidade – Os usuários de um algoritmo de

agrupamento esperam que eles consigam resultados que possam ser interpretados, compreensíveis e utilizáveis. É importante, portanto, estudar qual o objetivo da aplicação que se deseja para se selecionar o método mais adequado, dentre os existentes ou disponíveis.

2.4 - MÉTODOS DE AGRUPAMENTO

Existem inúmeros algoritmos de agrupamento disponíveis atualmente na literatura. A escolha do algoritmo apropriado vai depender principalmente do tipo de dados no qual se quer trabalhar e qual o propósito da aplicação. Se a análise de agrupamento for utilizada como uma ferramenta exploratória ou descritiva, é possível e até recomendável que se tente vários algoritmos para se descobrir qual é o mais adequado.

De uma forma geral, os métodos de agrupamento podem ser classificados de acordo com as seguintes categorias, de acordo com HAN e KAMBER, 2001:

(18)

2.4.1 -MÉTODOS FUNDAMENTADOS EM PARTICIONAMENTO

Dado uma base de dados com n objetos, o algoritmo constrói k partições de dados,

onde cada partição representa um cluster, e k ≤ n. Os dados são classificados em k grupos,

que satisfazem as seguintes exigências: cada grupo deve conter pelo menos um objeto, e cada objeto deve pertencer a exatamente um grupo.

Dado o valor de k, o número de partições a serem construídas, o método cria uma partição inicial. Então ele utiliza uma técnica de realocação iterativa que tenta melhorar as partições por meio do movimento dos objetos de uma partição para a outra. O critério geral de uma boa partição é que os objetos na mesma partição estejam “próximos” ou relacionados uns com os outros, ao passo que objetos de partições diferentes estejam “distantes” ou bem diferentes. Existem outros critérios para se julgar a qualidade das partições.

Para se concluir o agrupamento com êxito, torna-se necessário o registro exaustivo de todas as possíveis partições. Ao invés disso, a maioria das aplicações adota um dos dois métodos: (1) algoritmo k-means, onde cada grupo é representado pela média dos valores dos objetos pertencentes ao mesmo; e (2) algoritmo k-medoid, onde cada cluster é representado por um objeto localizado próximo ao centro do grupo. Esses métodos de agrupamento heurísticos trabalham bem para encontrarem grupos em formatos esféricos, em bases de dados médias para grandes. Para encontrar grupos com formatos complexos e trabalhar com bases de dados grandes, o método baseado em particionamento puro já não atende tão eficazmente.

2.4.2 -MÉTODOS HIERÁRQUICOS

Um método hierárquico cria uma decomposição hierárquica de um dado conjunto de dados. Um método hierárquico pode ser classificado em aglomerativo ou divisor, baseado em como a decomposição hierárquica é formada. A abordagem aglomerativa, também chamada de abordagem “bottom-up” começa com cada objeto formando um grupo separado. Ele vai combinando sucessivamente os objetos ou grupos próximos, até que todos os grupos formem um único grupo (o mais elevado nível da hierarquia), ou até atingir uma determinada condição. A abordagem divisora, também denominada de abordagem “top-down”, inicia com todos os objetos pertencentes ao mesmo grupo. Em cada iteração sucessiva, um grupo é dividido em grupos menores, até cada grupo contiver somente um objeto ou uma determinada condição de parada.

(19)

2.4.3 -MÉTODOS BASEADO EM DENSIDADE

A maior parte dos métodos baseados em particionamento agrupa os objetos considerando-se a distância entre os mesmos. Desta maneira, esses métodos ficam limitados a encontrarem grupos em formato esférico, pois encontram dificuldades em descobrirem grupos com formatos distintos. Outros métodos foram desenvolvidos baseados na noção de densidade. A idéia geral é que o método faça um desenvolvimento contínuo de um dado grupo enquanto a densidade (número de objetos) em sua “vizinhança” exceda algum limite estabelecido, ou seja, para aquele objeto dentro de um dado grupo, a “vizinhança” de um dado raio deve conter um mínimo de objetos. Desta maneira, este método pode ser utilizado para filtrar “outliers” e descobrir grupos com formatos diversos.

2.4.4 -MÉTODOS BASEADOS EM ESTRUTURAS DE GRADE

Esses métodos dividem o espaço dos objetos em um número finito de células, de forma a formarem uma estrutura de grade. Todas as operações de agrupamento são realizadas nessa estrutura. A principal vantagem dessa abordagem é o tempo de processamento, que é independente do número de objetos, dependendo somente do número de células em cada dimensão do espaço dividido.

2.4.5 -MÉTODOS BASEADOS EM MODELOS

Esses métodos supõem um modelo estatístico para o agrupamento, e encontra o melhor ajuste dos dados para o dado modelo. Um algoritmo baseado em modelo aloca os grupos por meio da construção de uma função densidade que reflita uma distribuição espacial dos itens dos dados, de acordo com o modelo previamente estabelecido.

(20)

3 - ALGORITMO SIMPLES DE CLUSTERIZAÇÃO POR COLÔNIA DE FORMIGA

3.1 -INTRODUÇÃO

O comportamento coletivo complexo dos insetos sociais forma-se oriundo da interação do comportamento simples de cada indivíduo que forma a coletividade. Esse comportamento permite o desenvolvimento de um largo espectro de atividades essenciais para o desenvolvimento e sobrevivência da coletividade afim. As atividades vão desde a procura por alimentos e construção de ninhos, até o controle térmico da colônia e arrumação da ninhada. Formação de cemitérios e arrumação da ninhada são dois exemplos notáveis de comportamento coletivo de insetos. A formação de cemitérios tem sido observada em diferentes espécies de formigas, tais como Pheidole pallidula (figura 1), Lasius Níger e Messor sancta. Quando as formigas morrem, elas são carregadas para fora dos ninhos pelas formigas operárias, onde são depositadas em montes. O mecanismo fundamental por trás deste comportamento que leva ao agrupamento surge em função da atração entre corpos já depositados e as operárias que estão carregando outros corpos. Pequenos grupos de corpos atraem as operárias para depositarem novos corpos, e através deste mecanismo de feed-back, os tamanhos dos grupos vão aumentando (HARTMANN, 2005).

(21)

A organização das larvas (ninhada) foi observada na espécie Leptothorax unifasciatus (figura 2). DENEUBOURG et al. (1991), observaram que os ovos são arrumados numa pilha próxima à pilha das larvas, porém mais afastados da pilha dos casulos, ou então as três categorias eram colocadas em locais completamente diferentes do ninho. A organização da ninhada na formiga Leptothorax quando se movimenta para um novo local de ninho foi estudado por FRANKS et al (1992). Esse estudo mostrou que os itens da ninhada eram arrumados em forma de anéis concêntricos. Os ovos e micro-larvas de tamanho padrão eram colocados no centro, e aqueles de tamanhos maiores eram distanciados do centro proporcionalmente à sua dimensão – quanto maior, mais afastado. As pupas e pré-pupas eram distribuídas em posições externas entre os anéis das larvas correspondentes aos seus tamanhos, conforme figura 2 (HARTMANN, 2005).

Figura 2 - Organização da ninhada da espécie Leptothorax unifasciatus (HANDL, 2003)

Os comportamentos coletivos dos insetos sociais têm inspirado a ciência da computação em fazer simulações computacionais para tentar reproduzi-los. Há, pelo menos, dois grandes motivos para isto. O primeiro é que os mecanismos subjacentes responsáveis por esses comportamentos são ainda desconhecidos. Por meio da simulação, esses mecanismos subjacentes podem ser estudados e desvendados, estudos que trazem, como conseqüência, um melhor entendimento da natureza. O outro motivo é que esses comportamentos coletivos possuem características muito atraentes, tais como robustez e

(22)

confiabilidade devido à redundância. Aplicações dos comportamentos coletivos dos insetos à ciência da computação podem conduzir a excelentes técnicas. Modelos computacionais baseados nas atividades de agrupamento e arrumação dos insetos tem levado a algoritmos eficientes para utilização na área de data-mining.

O agrupamento de corpos mortos pela espécie de formiga Pheidole pallidula inspirou DENEUBOURG et al. (1991) sobre o agrupamento por um grupo de agentes homogêneos. O modelo apresentado contém formigas que se movem randomicamente, e é baseado no princípio que quando uma formiga descobre um objeto, a probabilidade dela pegar o objeto é maior se o objeto estiver isolado. De forma similar, a probabilidade de deixar o objeto é alta se a formiga estiver numa área contendo outros objetos. A base do modelo é, portanto, duas probabilidades, uma para pegar, e outra para deixar o objeto. Esse trabalho inicial tem inspirado muitas outras pesquisas em computação e implementações robóticas com coletividade de agentes que realizam o agrupamento ou organização de objetos. Uma implementação robótica de agrupamento, inspirada nesse modelo, foi realizada por BECKERS, HOLLAND e DENEUBOURG, 1994. No experimento, eles utilizaram robôs simples, que não tinham memória. Utilizando esses agentes simples, os autores puderam observar um comportamento que levava ao agrupamento de objetos pelos robôs.

DENEUBOURG et al., (1991) também apresentaram uma extensão desse mecanismo de agrupamento que organiza dois diferentes tipos de objetos. A base desse mecanismo é diferente nas probabilidades de pegar e largar os objetos. Objetos que são isolados ou localizados em áreas com uma alta densidade do outro tipo de objeto possuem uma alta probabilidade de serem pegos. Por outro lado, a probabilidade de se deixar o objeto aumenta se a formiga estiver numa área de alta densidade do mesmo tipo do objeto.

LUMER e FAIETA (1994), generalizaram o modelo de DENEUBOURG et al. para a aplicação na análise exploratória de dados. Diferentemente de DENEUBOURG et al., eles utilizaram uma função de similaridade contínua para avaliar a similaridade entre diferentes objetos.

3.2 - DESCRIÇÃO DO ALGORITMO DE AGRUPAMENTO INSPIRADO EM COLÔNIA

DE FORMIGAS

3.2.1 -PRINCÍPIOS BÁSICOS

O Algoritmo Simples de Clusterização por Formiga (Standart Ant Clustering Algorithm - SACA) foi apresentado inicialmente por LUMER e FAIETA (1994). Esse

(23)

modelo foi inspirado no estudo do comportamento que levam a espécie de formiga Pheidole pallidula (figura 1) a organizar seus corpos mortos em grupos de itens semelhantes. O mesmo consiste, basicamente, em uma simulação de colônia de “agentes de formigas” que se move aleatoriamente em uma grade toroidal bidimensional, onde objetos (registros dos dados) estão posicionados.

Os registros (índices dos dados) são, inicialmente, dispostos (espalhados) randomicamente na grade bidimensional, independentemente da dimensão dos dados. Cada célula da grade só pode conter um registro, e cada registro só pode ocupar uma célula por vez. Desta forma, uma célula da grade pode estar vazia ou estar hospedando um registro específico.

Os agentes também deverão estar espalhados, inicialmente randomicamente, pela grade. Eles têm a capacidade de pegar, um por vez, itens (índice de dados) dentro da grade e movê-los para outra posição da grade, deixando-os ou não nessa nova posição, conforme uma prévia avaliação. A idéia geral é dispor itens que são similares no espaço original N-dimensional dentro de uma vizinhança na grade biN-dimensional. Isto significa que, no final do processo, os índices que são vizinhos dentro da grade bi-dimensional, serão similares no seu espaço de atributos original.

Na dinâmica do processo, com relação aos agentes, as seguintes situações poderão acontecer: (1) o agente está carregando um item “i” e avalia a probabilidade de deixá-lo na posição corrente, de acordo com uma “probabilidade de deixar” o item; (2) o agente está numa célula ocupada por um item “solto”, então avalia a “probabilidade de pegar” o item.

A probabilidade de um agente pegar um item aumenta com a baixa densidade de presença de itens na vizinhança, e diminui com a presença de itens similares na vizinhança. Inversamente, a probabilidade de um agente deixar um item aumenta com a alta densidade de itens semelhantes na vizinhança e diminui com a baixa densidade de presença de itens similares na vizinhança.

3.2.2 -DINÂMICA DO ALGORITMO:

I - Fase Inicial:

1 - Todos os itens que representam os índices dos dados são espalhados randomicamente na grade bidimensional toroidal. Cada item ocupa uma célula.

2 – Cada agente pega, randomicamente, um item;

(24)

II – Fase de agrupamento:

1 – Um agente é selecionado randomicamente;

2 – O agente executa um passo, de acordo com um determinado padrão, carregando o item, e assumindo uma nova posição na grade;

3 – O agente decide probabilisticamente se deixará o item em sua nova posição. Se a decisão for de “deixar” o item, ele “deixa” o item na célula corrente, e imediatamente vai procurar outro item “livre” para “pegá-lo”. Ao selecionar um novo item “livre” – escolhendo randomicamente dentro de um índice com todos os itens disponíveis – o agente decide probabilisticamente, considerando a posição do item, se vai “pegar” o item. Caso decida não “pegar”, o agente seleciona outro item e faz a avaliação novamente. Este processo continua até o agente “pegar” um item.

4 – Volta-se ao passo inicial, e repete-se o processo para outros agentes, por um número de iterações pré-estabelecido.

(25)

3.2.3 - “PSEUDOCÓDIGO” DO SACA

HANDL (2003), apresentou o seguinte pseudocódico:

Algorithm 1 basic-ant

1: begin

2: INITIALISATION PHASE

3: Randomly scatter data items on the toroidal grid

4: for each j in 1 to #agents do

5: i := randon_select (remaining items)

6: pick_up (agent (j),i)

7: g := randon_select (remaining_empty_grid_locations)

8: place_agent (agent (j), g)

9: end for

10: MAIN LOOP

11: for each it_ctr in 1 to #iterations do

12: j := randon_select(all_agents)

13: step (agent (j), stepsize)

14: i := carried_item (agent(j))

15: drop: = drop_item? (f*(i))

16: if drop = TRUE then

17: while pick = FALSE do

18: i := randon_select(free_data_items)

19: pick: = pick_item? (f*(i))

20: end while

21: end if

22: end for

23: end

3.2.4 -FUNÇÕES E PARÂMETROS ENVOLVIDOS NO ALGORITMO

A probabilidade de um agente pegar um item deve aumentar com a baixa densidade de presença de itens na vizinhança, e deve diminuir com a presença de itens similares na vizinhança. Inversamente, a probabilidade de um agente deixar um item deve aumentar com a alta densidade de itens semelhantes na vizinhança e deve diminuir com a baixa densidade de presença de itens similares na vizinhança.

As operações de pegar ou deixar os dados são, portanto, decisões probabilísticas. Suas respectivas probabilidades podem ser fornecidas pelas funções de densidade de DENEUBOURG et al., a saber:

(26)

( )

( )

2         + = i f k k i p p p p (1)

( )

( )

( )

2       + = i f k i f i p d d (2)

Os parâmetros kp e kd determinam a influência que a “função vizinhança” ou “função

densidade”, f(i), exerce no cálculo das probabilidades do agente em pegar e deixar o item. Os autores estabeleceram seus valores em 0.1 e 0.3, respectivamente.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 f(i) p ro b p e g a r (k p = 0 ,1 )

(27)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 f(i) p ro b d e ix a r (k d = 0 ,3 )

Figura 4 - Variação da probabilidade de deixar em função de f(i)

LUMER e FAIETA definiram a “função vizinhança”, dada por:

( )

( )

( )

      >       − =

casos outros em i f se j i i f j 0 0 , 1 1 2 α δ σ (3)

A dissimilaridade entre os itens, δ

( )

i, ∈j

[ ]

0,1, quantifica a distância entre os dois dados em seu espaço original N-dimensional. A métrica usada, no caso, é a distância Euclidiana, dada por:

(

)

2 2 2 2 2 1 1 ... ) , j xi xj xi xj xin xjn i = − + − + + − δ , (4)

onde i = (xi1, xi2, ..., xin), e j = (xj1, xj2, ..., xjn) são os valores dos atributos de dois

dados N-dimensionais.

[ ]

0,1

α , é um parâmetro escalar que estabelece a dependência em relação aos dados,

σ2, tipicamente σ2

{9,49}, é o tamanho da vizinhança local (quantidade de células da grade que o agente consegue perceber, onde o agente está no centro). Este valor depende do raio de percepção do agente em cada direção, que, conseqüentemente, é dado por

2 1 −

σ

(28)

figura 5 apresenta vizinhanças para valores de σ 3, 5 e 7. A vizinhança hachurada equivale a σ = 3, a intermediária, a σ = 5, e a mais externa a σ = 7.

A função vizinhança f(i) é levada em consideração no cálculo das probabilidades do agente deixar ou pegar o objeto. A densidade de objetos próximos, bem como suas similaridades são computadas no cálculo.

Figura 5 - Possíveis vizinhanças de percepção de uma formiga .

LUMER e FAIETA, além das implementações descritas anteriormente, introduziram os seguintes conceitos:

 “Memória de curta duração”, de forma a permitir o agente “lembrar” dos

últimos itens transportados, assim como seus respectivos locais onde foram deixados. Após pegar um item, a formiga leva em consideração os itens anteriormente transportados, e compara com o item atual. Isto permite que o agente transporte o item atual para o local para onde foi transportado aquele item com o qual mais se assemelha.

 População heterogênea de agentes – neste caso, os agentes podem ter

diferentes ajustes de parâmetros. Esse conceito foi limitado ao tamanho do “passo” que um agente pode dar no seu movimento randômico. “Passo” significa a quantidade de células da grade bidimensional que o agente é capaz de transpor em um movimento. Esse ajuste permite, então, ter uma população de agentes com diferentes velocidades de movimento.

(29)

4 - PRINCIPAIS ALTERAÇÕES PROPOSTAS NO ALGORITMO BÁSICO DE CLUSTERIZAÇÃO – SACA

4.1 -MÉTODO “ANT-CLASS” - APLICAÇÃO DO ALGORITOM “K-MEANS”

MONMARCHÉ (1999), observou que o algoritmo simples de clusterização por colônia de formiga, a princípio, possui a vantagem de não necessitar de uma informação inicial do número de classes ou de uma partição inicial, quando o mesmo é aplicado a uma base de dados. As partições criadas, portanto, pelo algoritmo, são compostas por muitos grupos. Os grupos formados são homogêneos (formados por dados da mesma classe), porém a quantidade dos mesmos costuma ser maior que o número de classes da base de dados e costuma aparecer erros de classificação.

Deste modo, o autor propôs a aplicação do algoritmo K-means para eliminar os erros de agrupamento e agrupar os itens que ficaram “livres”, isto é, objetos que estão sozinhos, pois estavam sendo “carregados” pelos agentes no momento do término das iterações.

O autor também implementou algumas alterações no cerne do algoritmo original. A principal é a introdução de “pilhas” de dados. Ou seja, uma célula pode aceitar mais de um dado. Segue a descrição do algoritmo proposto:

 Cada dado é um vetor de dimensão n e simbolizado por um objeto.

 Inicialmente, todos os objetos são espalhados randomicamente em uma

grade bidimensional toroidal, cujo tamanho é proporcional ao tamanho da base de dados.

 Durante a execução do algoritmo, os objetos poderão ser colocados numa

mesma célula, constituindo-se “pilhas”.

 Uma pilha representa uma classe.

 A distância entre dois objetos X e Y pode ser calculada pela distância

Euclidiana entre os dois pontos no espaço Rn.

 O centro das classes é determinado pelo centro de massa dos seus pontos.

 Não existe relação entre as posições dos objetos na grade bidimensional e os

valores de seus atributos em Rn.

Um número fixo de formigas se move na grade bidimensional, e pode executar diferentes ações. Cada formiga se move a cada iteração, e deve executar a ação de pegar ou de deixar o objeto.

(30)

 Pegar um objeto de uma célula da sua vizinhança, de acordo com uma

probabilidade calculada;

 pegar o objeto mais dissimilar de uma pilha de sua vizinhança (isto é, o

objeto mais distante do centro de massa da pilha). Se a formiga estiver carregando um objeto, então ela pode:

 Deixar o objeto numa célula vazia de sua vizinhança, de acordo com uma

probabilidade calculada;

 deixar o objeto na célula de outro objeto da vizinhança, se ambos estiverem

próximos o suficiente no espaço Rn, proximidade esta dada pelo valor da dissimilaridade;

 deixar o objeto em uma pilha de sua vizinhança, se a distância entre o objeto

e o centro de massa da pilha assim permitir.

Para se conseguir a convergência do algoritmo, o autor propôs a aplicação de quatro etapas, a saber:

1) Algoritmo baseado em colônia de formiga para um primeiro agrupamento.

2) Algoritmo K-means utilizando-se, como ponto de partida, os grupos

formados pela etapa anterior.

3) Algoritmo baseado em colônia de formigas, porém com as pilhas

previamente encontradas.

4) Algoritmo K-means mais uma vez.

Para avaliar o resultado de seu algoritmo, do quanto as partições obtidas se aproximam do real, o autor propôs duas medidas de performance. A primeira medida seria o índice de erro de classificação. Esta seria computada da seguinte forma: Para um dado grupo H, formado pelo algoritmo, considerar-se-ía a predominância da classe de acordo com o atributo “classe” da base de dados, previamente conhecido, mas não levado em consideração na computação. Todo o objeto que estivesse nessa pilha H, e não pertencesse ao atributo predominante, seria considerado um erro. O índice de erro de classificação seria simplesmente a relação entre os objetos errados (considerando-se todos os grupos formados) e o total de número de objetos da base de dados. A segunda medida seria simplesmente o número de grupos criados.

(31)

4.2 -APERFEIÇOAMENTOS NO ALGORITMO ORIGINAL

HANDL (2003), observou dois grandes problemas no algoritmo de agrupamento por colônia de formiga original. O principal era devido à natureza do resultado apresentado pelo algoritmo: ele não gera uma partição explícita, mas uma distribuição espacial dos elementos numa representação gráfica. Apesar de o resultado ser óbvio para a observação humana, a avaliação do resultado requer uma “interação humana”. Outro grande problema vislumbrado pela autora foi a dificuldade de se ajustar os diversos parâmetros do algoritmo para diferentes tipos de dados.

Visando aperfeiçoar o algoritmo, a autora introduziu as seguintes alterações:

4.2.1 -ADAPTAÇÃO DA FUNÇÃO VIZINHANÇA

As funções que estabelecem as probabilidades da formiga pegar ou deixar o objeto (1)

e (2) permaneceram as mesmas. A autora continuou usando os valores estipulados para kp e

kd, respectivamente 0.1 e 0.3. No entanto, a função vizinhança (f(i)), dado por (3), foi

substituída pela seguinte função (f*(i)):

( )

( )

( )

( )

      >       − ∀ ∧ >       − =

casos outros em j i j i f se j i i f j 0 0 , 1 0 * , 1 1 * 2 α δ α δ σ (5)

Esta definição de f*(i) combina duas importantes propriedades. Primeiramente, assim

como na função de vizinhança original f(i), a divisão pelo tamanho da vizinhança σ2 penaliza

as células vazias da vizinhança, permitindo a indução a um agrupamento compacto. Em

segundo lugar, a restrição adicional 1

( )

, >0

     − ∀ α δ i j

j serve para penalizar severamente altas

dissimilaridades entre os objetos.

4.2.2 -MEMÓRIA CURTA COM “LOOK-AHEAD” DOS AGENTES

A idéia de o agente possuir uma “memória” já tinha sido abordada por LUMER e FAIETA (1994). Nesse caso, cada agente se lembra dos últimos dados carregados e de suas posições da grade onde foram deixados. Quando um novo dado é pego, a posição do melhor

(32)

dado recentemente pego (aquele com menor dissimilaridade) é utilizada para “guiar” o movimento randômico do agente.

A autora considerou que, num sistema com vários agentes, um item que foi memorizado numa determinada célula, já pode ter sido removido por outro agente. Considerando o comentado, a autora implementou o seguinte procedimento: Uma formiga, localizada numa célula da grade p, e carregando um item i, usa sua memória para proceder todas as posições memorizadas, uma após outra. Cada uma delas é avaliada utilizando-se a função vizinhança f*(i), e a adequabilidade de cada uma para o dado correntemente com o agente é examinada. Aquela posição que obtiver o melhor resultado poderá fazer com que o agente “pule” para ela, de acordo com uma probabilidade calculada. Caso não ocorra o “pulo”, a memória do agente é desativada, e o agente continua seu movimento randômico.

4.2.3 -RAIO DE PERCEPÇÃO CRESCENTE

O tamanho da vizinhança das células na grade bidimensional percebida pela formiga delimita as informações utilizadas durante o processo de agrupamento. Por esta razão, é interessante estipular uma “grande” vizinhança para melhorar a qualidade de agrupamento na grade. Contudo, a utilização de vizinhança muito grande, além de requerer um custo computacional muito alto (o número de células consideradas aumenta quadraticamente com o aumento do raio de percepção), inibe a formação de grupos na fase inicial do processo.

Portanto, a autora propôs a utilização de um raio de percepção que aumenta com o tempo. Isto permite economizar custo computacional na primeira parte do processo, e previne dificuldades de formação de grupos no início. Essa tática também acelera a dissolução de pequenos grupos indesejáveis. Em sua implementação, foi utilizado um raio de percepção inicial de 1 (σ = 3) com um incremento linear até alcançar 5 (σ = 11).

4.2.4 -SEPARAÇÃO ESPACIAL

Para o algoritmo em questão, a separação espacial dos grupos em formação, na grade, é fundamental para que os grupos a serem consolidados sejam bem formados. Podem-se formar grupos com pouca distância entre si na grade. Isto em função de os grupos tenderem a se formar em qualquer local onde haja uma maior densidade de dados similares. Após sua formação inicial, os grupos tendem a se movimentarem muito lentamente pela grade.

(33)

Para evitar que os grupos se formem muito próximos, a autora utilizou, após a primeira fase, durante um curto intervalo de iterações (entre os tempos tinicial e tfinal,

previamente estabelecidos), uma função vizinhança modificada. O parâmetro 1/σ2 foi

substituído por 1/Nocc, onde Nocc é o número real de células ocupadas na vizinhança local.

Desta forma, somente similaridade, e não densidade, será levado em consideração. Isto acarreta o efeito de se espalhar os dados novamente na grade, mas de uma forma organizada. Após esse período, a função vizinhança volta à sua forma original. Então novos grupos serão formados, porém com maior probabilidade de serem gerados próximo aos centros das “regiões”, devido à baixa qualidade das fronteiras de suas vizinhanças.

4.2.5 -VIZINHANÇA PONDERADA

A autora investigou a utilização de uma ponderação no valor que cada célula contribui para o cálculo final da função vizinhança, de forma que as células mais próximas da vizinhança dessem uma contribuição maior no cálculo. Para implementar essa idéia, foi utilizado um termo de ponderação, w(i,j), a ser multiplicado por cada parcela da equação.

A função vizinhança, então, toma a seguinte forma:

( )

( )

( )

( )

      >       − ∀ ∧ >       − =

casos outros em j i j i f se j i j i w i f j 0 0 , 1 0 * , 1 ) , ( 1 * 2 α δ α δ σ (6) De forma que:

( )

( ) ( ) ( ) ρ j i dy j i dx e j i w , , , max , − = (7)

Onde ρ é o raio de percepção e dx(i,j) e dy(i,j) são as distâncias, na grade, na horizontal

e na vertical, dos dados i e j. Desta forma, os pesos estarão no intervalo [1/e,1] (para ρ =3 e

σmax=7) , com maior peso para as células que estão mais próximas a posição da formiga.

A autora observou que a utilização da ponderação leva a uma melhoria na qualidade local dos grupos formados, porém a qualidade geral ainda se apresenta baixa. Um efeito constatado foi que a ponderação resulta na formação de grupos com dinâmica mais “solta”, e leva a um alto custo computacional.

(34)

4.2.6 -MODIFICAÇÃO DAS FUNÇÕES PROBABILIDADES ORIGINAIS

A autora introduziu, também, um conjunto de funções para cálculo das probabilidades diferente do proposto por LUMER e FAIETA.

A probabilidade de se pegar o item, é determinada por:

( )

( )

( )

      ≤ = em outros casos i f i f se i ppegar 2 * * 1 0 . 1 * 0 . 1 (8)

E a probabilidade de deixar o item é:

( )

( )

( )

     ≥ = f i em outros casos i f se i pdeixar* 4 * 0 . 1 * 0 . 1 (9)

Essas funções possuem duas vantagens com relação às originais. Além de ser mais

simples, o que requer menor recurso computacional; não necessita dos parâmetros kp e kd, que

exigem uma certa complexidade para seu ajuste. Os comportamentos das funções podem ser visualizados nos gráficos a seguir:

0.5 1 1.5 2 2.5 3 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 f*(i) p ro b p e g a r*

(35)

0 0.5 1 1.5 2 2.5 3 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 f*(i) p ro b d e ix a r *

Figura 7 - Comportamento da probabilidade modificada de deixar

Examinando as equações, e considerando os experimentos da autora, observa-se que a estratégia de se deixar o objeto torna-se mais “cauteloso” que a versão definida por LUMER e FAIETA. A probabilidade em regiões de “baixa similaridade” torna-se menor, e, em regiões de “alta similaridade” torna-se maior. A probabilidade de se deixar o objeto torna-se determinístico (pdeixar = 1) para regiões onde a função vizinhança maior ou igual a um,

f* (i) 1. E somente para esta região (valores da função de vizinhança maior ou igual a um, f* (i) 1) a operação de pegar o objeto torna-se viável.

Essa formulação, no entanto, pelo exposto pela autora, não é aplicável para o algoritmo básico, proposto por DENEUBOURG. Somente se torna viável juntamente com algumas das alterações propostas, tais como aumento do raio de percepção, memória dos agentes, e o pequeno intervalo da iteração com a função vizinhança modificada.

4.2.7 -AJUSTE DOS PARÂMETROS INDEPENDENTES DOS DADOS

O algoritmo de agrupamento por colônia de formigas exige o ajuste de vários parâmetros. Alguns são independentes dos dados, a saber: número de agentes (no entendimento da autora), que foi ajustado para 10; o tamanho da memória do agente, ajustado para 10, e os valores de tinicial e tfinal (que delimitam o intervalo das iterações utilizado na

“separação espacial”), que foram arbitrados em 0,45 × N e 0,55 × N, onde N é o número total

(36)

4.2.8 -PARÂMETROS DEPENDENTES DAS CARACTERÍSTICAS DA BASE DE DADOS

Alguns parâmetros devem ser ajustados levando-se em consideração o tamanho da base de dados, de forma a otimizar a velocidade de convergência.

4.2.8.1 -Tamanho da grade

Dado um conjunto de Nitens itens, a grade deve ter uma dimensão, número de células,

Ncelulas, de forma a disponibilizar espaço suficiente para permitir os agentes se movimentarem

livremente e encontrarem células livres para poderem realizar a operação de deixar o dado. Isto pode ser alcançado utilizando-se a relação entre quantidade de itens e quantidade de células de 10, de acordo com as experiências da autora. Esta relação estabelece o tamanho da grade, quadrada, com dimensões de 10.Nitensx 10.Nitens células.

4.2.8.2 -Quantidade de iterações

O número total de iterações também cresce com o aumento do tamanho da base de dados. A autora estabeleceu como Niterações = 2000.Nitens, com o mínimo de 1 milhão de

iterações.

4.2.8.3 -Adaptação de α

O valor adequado de α é crucial para o correto funcionamento do algoritmo, pois trata-se do parâmetro que vais “escalar” a dissimilaridade dentro da função vizinhança, f*(i). Durante o processo de seleção, α vai determinar a percentagem de itens da base de dados que serão considerados similares: um valor de α muito pequeno pode inibir a formação de grupos na grade; já um valor excessivamente elevado pode resultar na fusão de grupos distintos. No caso limite, todos os itens formariam um único grupo.

A escolha adequada do valor de α depende, no entanto, do grau de dissimilaridade entre os dados, e conseqüentemente, não deve ser escolhido sem uma prévia avaliação dos mesmos. Por esta razão, pode-se conseguir um ajuste automático do parâmetro, monitorando-se as “intensidades das atividades” dos agentes. Isto por meio do registro do sucesso e

(37)

insucesso das operações de deixar e largar os dados. A autora estabeleceu, então, o seguinte esquema de adaptação para o parâmetro:

 Gera-se uma população heterogênea de agentes, cada um com seu parâmetro

α, gerado randomicamente dentro do intervalo [0,1].

 Cada agente terá seu parâmetro corrigido após cada Nefetivos movimentos.

 Durante esse tempo, será registrado o número de operações de deixar o dado

que falharam, Nfalhas.

 A razão de falhas será determinada como rfalhas=Nfalhas/Nefetivos, onde Nefetivos

é fixado em 100.

 Então o ajuste se dá seguindo-se a seguinte regra:

   ≤ − > + ← 99 . 0 01 . 0 99 . 0 01 . 0 falhas falhas r se r se α α α (10)

Desta forma, α vai se ajustando durante todo o processo, o que torna este método bem robusto, além de permitir a adaptação do parâmetro dentro das diferentes fases que ocorrem ao longo do processo.

4.3 -APLICAÇÃO DE REDE-NEURAL E ALGORITMO GENÉTICO NO SACA

Foram propostas (HARTMANN, 2005) adaptações no SACA de forma que o algoritmo fosse capaz de fazer o agrupamento, com separação dos grupos ou organização anelar dos dados. O autor considerou todas as premissas do algoritmo básico. O ambiente é uma grade bidimensional toroidal. Cada célula da grade poderá conter somente um objeto, um agente ou um agente e um objeto. Os objetos são os índices dos dados, que são espalhados randomicamente no início do processo. Estes objetos poderão ser movimentados pelas formigas, dentro da grade, formando determinados padrões de arrumação na grade. A coletividade de formigas é formada por agentes que se movimentam pela grade, e podem pegar ou largar os objetos nas células. Quanto ao tamanho da grade, foi considerada a mesma fórmula do trabalho anteriormente citado, HANDL (2003). Com relação ao número de formigas, foi estipulado, no entanto, como um décimo do número de objetos, Nagentes/Nobjetos=0.1.

Consideraram-se todos os agentes idênticos, e cada agente pode realizar três operações básicas:

(38)

2) deixar um objeto numa determinada célula; e

3) se movimentar na grade.

4.3.1 -–REDE NEURAL

HARTMANN (2005) propôs a aplicação de uma rede neural artificial para decidir o comportamento do agente. A rede decide, então, se o agente vai pegar ou vai largar o objeto, bem como o tipo de movimento a ser executado. Trata-se de uma rede simples “feed foward”, com uma camada oculta.

A formiga percebe os objetos que estão localizados em suas oito células vizinhas, bem como o objeto que ela está conduzindo correntemente (figuras 4 e 5). Esses nove elementos são as variáveis de entrada da rede.

Figura 8 - Representação da rede neural com uma camada oculta (HARTMANN, 2005)

(39)

O mapeamento da vizinhança da formiga é mostrado na figura 5, onde cada célula da vizinhança fornece as informações para um nó de entrada da rede neural (nós 1 a 8 da figura 4). O outro nó de entrada da rede, nó A, recebe informações referentes ao objeto que está sendo carregado pela formiga.

A rede neural possui seis nós de saída, que controlam o comportamento da formiga, a saber:

 As duas primeiras saídas (P e D) decidem se a formiga irá pegar ou deixar o

objeto.

 As duas seguintes (F e B) especificam se a formiga se movimentará para

frente ou para trás, podendo cancelar as outras saídas.

 Como a formiga poderá ter movimento em oito direções diferentes, as

últimas saídas (L e R) definem se as direções iniciais poderão ser deslocadas para direita ou para a esquerda.

No modelo adotado, o comportamento das formigas está simplificado, de forma que elas não se percebem entre si. Isto significa que elas podem entrar em “deadlocks” quando uma tenta se movimentar para a célula da outra. Para se evitar isto, uma formiga que permanece na mesma posição durante dez iterações consecutivas, é movimentada para uma posição desocupada da grade, gerada randomicamente.

4.3.2 -ALGORITMO GENÉTICO

O ambiente em pauta é composto por objetos e uma coletividade de formigas, conforme descrito no item anterior. Um indivíduo vai representar um ambiente no contexto evolucionário. Num ciclo evolucionário, haverá uma geração de ambientes, cada um com uma quantidade específica de iterações. Quando todos os ambientes numa geração são completados, eles são avaliados e é criada a próxima geração de ambientes.

O algoritmo genético será utilizado para determinar os pesos dos nós da rede neural que controla as formigas no ambiente.

4.3.3 -EXPERIMENTOS

O autor relata que foram realizados quatro experimentos, com diferentes níveis de complexidade. Para se conseguir os resultados esperados, a função “fitness” foi adaptada para cada caso.

(40)

O primeiro experimento consistiu em resolver o problema de se agrupar objetos idênticos. Para isto, todos os objetos deveriam ocupar uma área contínua. Para resolver este problema, foi criada uma função “fitness” baseada na idéia de que cada objeto deveria estar rodeado por quantos objetos fosse possível.

O segundo experimento consistiu em se agrupar três diferentes tipos de objetos. O êxito deste experimento consistiu em se criar três diferentes grupos separados, e cada um contendo um tipo de objeto. Para resolver este problema foi modificada a função “fitness” do primeiro caso. Como agora existem diferentes tipos de objetos, cada objeto não deveria somente estar rodeado por quantos objetos fossem possíveis, mas deveria ter o menor número possível de objetos diferentes de si em sua vizinhança.

Os terceiro e quarto experimentos consistiram em se fazer uma organização anelar com dois e três tipos de objetos, respectivamente. A estrutura constitui-se de um grupo central de um determinado objeto envolvido por um anel de outro tipo de objeto (e um segundo anel com um terceiro tipo de objeto, no caso do quarto experimento). Para conseguir esses resultados, o autor recorreu à métrica utilizada por WILSON et AL, 2004, para elaboração da função “fitness”.

4.4 -UTILIZAÇÃO DE ALGORITMO GENÉTICO PARA A DEFINIÇÃO DOS

PARÂMETROS DO SACA

De acordo com ARANHA et al. (2005), os recentes aperfeiçoamentos nas técnicas de agrupamento por colônia de formigas, tem demonstrado que o algoritmo está se tornando competitivo, principalmente quando se trata de bases de dados com alta dimensionalidade ou bases onde não se tem o conhecimento prévio do número de classes. Contudo, foi observado que existe um grande número de parâmetros no algoritmo em pauta, cujos efeitos no desempenho final ainda não são completamente conhecidos. Pequenas diferenças em uma constante podem ocasionar grandes diferenças no resultado final. O autor propôs, então, a utilização de algoritmo genético para que os melhores parâmetros para uma determinada tarefa possam ser escolhidos automaticamente.

4.4.1 -ALTERAÇÕES NO SACA

(41)

A função vizinhança foi programada da seguinte forma:

( )

( )

t d S j i d M i f =

− , (11) Onde:

 Md é a distância Euclidiana máxima entre dois objetos dentro de todo o conjunto da base de dados;

 d(i,j) é a distância Euclidiana não normalizada entre os objetos i e j;

 St é o número total de objetos na vizinhança de i; e

O tamanho da vizinhança de uma formiga é dado pelo parâmetro sight , visibilidade, que pode ser configurado.

Definiu-se, então o fator de aglomeração, c(i), dado por:

( )

2 22 crowd t t k S S i c + = (12)

Onde 1< kcrowd < (2*sight)2 é uma constante inteira que “sintoniza” o comportamento

de c(i).

Multiplica-se, então, f(i)*c(i), quando a formiga for deixar o objeto, e f(i)*(1-c(i)), quando a formiga for pegar o objeto.

Esses resultados são usados, então, nas funções originais, das probabilidades de pegar ou deixar o objeto, dadas por DENEUBOURG, conforme (1) e (2).

O comportamento das formigas ocorre conforme o SACA.

4.4.2 -UTILIZAÇÃO DO ALGORITMO GENÉTICO

Para aperfeiçoar o algoritmo de clusterização por colônia de formigas, o autor propôs a otimização de seus parâmetros por meio da utilização de algoritmo genético. É notável que o estudo da sensibilidade dos muitos parâmetros, otimizando-os, é um tópico reconhecidamente complexo e merecedor de muito esforço para se chegar a resultados satisfatórios do algoritmo. Em sua implementação, ARANHA et al.(2005) representaram um indivíduo do algoritmo genético como sendo o conjunto das configurações dos parâmetros (tabela 1). Para cada geração, roda-se o programa uma vez com cada conjunto de parâmetros, e calcula-se a função “fitness” para cada rodada.

Referências

Documentos relacionados

O objetivo desta pesquisa foi investigar o papel da Educação Física na Educação Infantil, considerando-se os objetivos gerais, objetivos específicos, os conteúdos da

98: “En- quanto não permitir o fundo de custeio dos serviços de inspeção, a designação de inspetores especializados para orientação do en- sino da Musica e dos exercícios

sem discriminação”; “...o ensino inclusivo será uma oportunidade das pessoas portadoras de necessidades especiais de mostrar suas potencialidades”; “espero que esta

Aprendizado geral dos jogos esportivos de forma implícita - lúdica Escola da Bola - O ABC da Aprendizagem do Jogo Implícito / Lúdico. O Problema / As causas A solução:

Savants são pessoas que demonstram capacidades superiores em uma inteligência, enquanto suas outras inteligências funcionam num baixo ritmo.. Ex.: Rain Man (baseado numa

Mediação significa que o t rabalho do professor é viabilizar a relação at iva do aluno com a mat éria de est udo, at ravés de obj et ivos, cont eúdos, mét odos e formas

Anche dopo il rilascio bisogna restare nella posizione precedentemente assunta fino al momento dell'impatto della freccia sul bersaglio ed evitare bruschi cali di tensione

1 - Entrada da mão muito próxima da cabeça. 2 - Entrada da mão fora da largura do ombro.. 3 -Tração com o braço fora do alinhamento do corpo.. 4 - Batida com elevação excessiva