UNIVERSIDADE PRESBITERIANA MACKENZIE
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA
UM ALGORITMO DE VIDA ARTIFICIAL PARA
AGRUPAMENTO DE DADOS VARIANTES NO TEMPO
Dissertação de Mestrado apresentada ao Pro-grama de Pós-Graduação em Engenharia Elétri-ca da Universidade Presbiteriana Mackenzie, como requisito parcial para a obtenção do título de Mestre em Engenharia Elétrica.
Área de Concentração: Engenharia da Computação
Aluno: Diego Gadens dos Santos
Orientador: Prof. Dr. Leandro Nunes de Castro
S237a Santos, Diego Gadens dos
Um Algoritmo de Vida Artificial para Agrupamento de Dados Va-riantes no Tempo. / Diego Gadens dos Santos – São Paulo, 2012.
91 f. ; 30 cm
Dissertação (Programa de Pós-Graduaçăo em Engenharia Elétri-ca) - Universidade Presbiteriana Mackenzie - São Paulo, 2012.
Agradecimentos
Agradeço primeiramente à força maior que rege o universo, e que independente de rótulos colocados pelos homens, creio que seja algo superior a mim e que me ajuda a ter força para continuar em meu caminho.
Agradeço ao meu orientador, Prof. Dr. Leandro Nunes de Castro, pelas suas contribuições à minha formação acadêmica, por todos os seus incentivos, e também por todas as oportunida-des por ele proporcionadas.
À minha família, por ter me ensinado a ter força, coragem e perseverança para enfrentar as minhas lutas diárias. Obrigado por terem sempre apoiado as minhas decisões e terem feito tudo o que estivesse ao seu alcance para ajudar na realização dos meus sonhos.
Um agradecimento especial vai também para meu tio Genilton. Obrigado por todas as conver-sas motivacionais, toda a confiança depositada em mim, e por eu poder contar com você para o que der e vier.
Aos amigos Luiz Carraro e Steve Pereira por serem meus amigos-irmãos, por serem minha nova família em São Paulo, por terem me acompanhado em toda essa jornada e por estarem sempre dispostos a qualquer coisa para ajudar.
À Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP), ao CNPq, à Capes e também ao MackPesquisa pelo apoio financeiro, crucial para o desenvolvimento deste traba-lho.
À Universidade Presbiteriana Mackenzie (UPM) e ao Programa de Pós Graduação em Enge-nharia Elétrica pela infraestrutura e suporte.
A todos os professores e colegas do Programa de Pós Graduação em Engenharia Elétrica que contribuíram para minha formação e para este trabalho.
Resumo
A capacidade de geração e armazenamento de dados proporcionada pelas tecnologias atuais levou ao surgimento de bases de dados com uma grande variedade de tipos e tamanhos. Extra-ir conhecimentos não triviais e úteis a partExtra-ir de grandes bases de dados, entretanto, é uma tare-fa muito mais difícil do que a criação das mesmas. Esta lacuna tem estimulado a busca por técnicas eficientes de extração de conhecimentos intrínsecos a estes grandes conjuntos de da-dos, capazes de permitir tomadas estratégicas de decisão. Dentre as muitas tarefas da extração de conhecimentos a partir de dados, tem-se o agrupamento, que consiste na segmentação da base em grupos cujos objetos são mais parecidos entre si do que a objetos pertencentes a ou-tros grupos. Apesar de a área ser bastante ativa, pouco tem sido feito no sentido de desenvol-ver e investigar algoritmos de agrupamento para dados variantes no tempo, por exemplo, tran-sações financeiras, dados climáticos, informações e mensagens postadas em redes sociais e muitos outros. Tendo em vista a relevância prática desse tipo de análise e o crescente interesse pelos algoritmos inspirados na biologia, este trabalho tem como objetivo propor um algoritmo bioinspirado, baseado no modelo de vida artificial de Boids, para realizar o agrupamento de dados variantes no tempo. O algoritmo de Boids foi inicialmente criado para demonstrar ape-nas a simulação da movimentação coordenada observada em uma revoada de pássaros. A fim de utilizar este algoritmo para a tarefa de agrupamento de dados, algumas modificações tive-ram de ser propostas nas regras clássicas de coesão, separação e alinhamento dos Boids. Desta forma, foram criados objetos que se posicionam e se movimentam no espaço, de maneira a representar os grupos naturais existentes nos dados. A característica dinâmica intrínseca dos Boids tornou o algoritmo proposto, denominado dcBoids (dynamic clustering Boids), um can-didato natural para a resolução de problemas de agrupamento de dados variantes no tempo. Os resultados obtidos atestaram a robustez do método em seu contexto de aplicação, sob a pers-pectiva de diferentes medidas de avaliação de desempenho e quando aplicado a várias bases de dados da literatura com dinâmicas inseridas artificialmente.
Abstract
Current technologies have made it possible to generate and store data in high volumes. To process and collect information in large databases is not always as easy as creating them. Therefore, this gap has stimulated the search for efficient techniques capable of extracting useful and non-trivial knowledge, which are intrinsic to these large data sets. The goal of this work is to propose a bioinspired algorithm, based on the Boids artificial life model, which will be used to group data in dynamic environments, i.e. in databases updated over time. The Bo-ids algorithm was originally created to illustrate the simulation of the coordinated movement observed in a flock of birds and other animals. Thus, to use this algorithm for data clustering, some modifications must be applied. These changes will be implemented in the classical rules of cohesion, separation and alignment of the Boids model in order to consider the distance (similarity/dissimilarity) among objects. Thus, it creates objects that stand and move around the space, representing the natural groups within the data, and it is expected that similar ob-jects tend to form dynamic clusters (groups) of Boids in the environment, while dissimilar objects tend to keep a larger distance between them. The results presented attest the robust-ness of the algorithm for clustering time-varying data under the light of different evaluation measures and in various databases from the literature.
Lista de Figuras
Figura 1: Classificações diferentes para uma mesma base de dados. ... 23
Figura 2: Exemplo de agrupamentos contraditórios. ... 26
Figura 3: Regras comportamentais dos Boids. (a) Separação. (b) Alinhamento. (c) Coesão..32
Figura 4: Um Boid e sua vizinhança. ... 34
Figura 5: Tendência de alinhamento dos Boids ao longo do tempo. (a) Início da simulação. (b) Após algumas iterações. ... 35
Figura 6: Exemplo de aplicação da regra de separação. ... 35
Figura 7: Exemplo de regra de alinhamento. ... 36
Figura 8: Exemplo da regra de coesão... 37
Figura 9: Pseudocódigo do algoritmo de Boids. ... 37
Figura 10: Pseudocódigo do algoritmo dcBoids. ... 45
Figura 11: Iterações inicial e final para o agrupamento da base Animais. ... 55
Figura 12: Exclusão seguida de reinclusão de um grupo no ambiente. ... 56
Figura 13: Dinâmica do algoritmo dcBoids ao longo das iterações para a base Animais. ... 57
Figura 14: Dinâmica do algoritmo k-médias ao longo das iterações para a base Animais. .... 60
Figura 15: Base de dados Ruspini. ... 61
Figura 16: Iterações inicial e final para o agrupamento da base Ruspini. ... 62
das iterações. ... 64
Figura 19: Dinâmica do algoritmo k-médias para a base Ruspini ao longo das iterações. ... 66
Figura 20: Iterações inicial e final para o agrupamento da base Yeast ... 68
Figura 21: Dinâmica do algoritmo dcBoids para a base Yeast ao longo das iterações ... 69
Figura 22: Dinâmica do algoritmo k-médias para a base Yeast ao longo das iterações... 70
Figura 23: Iterações inicial e final para o agrupamento da base Wine. ... 72
Figura 24: Dinâmica do algoritmo dcBoids para a base Wine ao longo das iterações ... 73
Figura 25: Dinâmica do algoritmo k-médias para a base Wine ao longo das iterações ... 75
Figura 26: Iterações inicial e final para o agrupamento da base Diabetes ... 76
Figura 27: Dinâmica do algoritmo dcBoids para a base Diabetes ao longo das iterações ... 77
Figura 28: Dinâmica do algoritmo k-médias para a base Diabetes ao longo das iterações ... 78
Figura 29: Iterações inicial e final para o agrupamento da base Ecoli ... 80
Figura 30: Dinâmica do algoritmo dcBoids para a base Ecoli ao longo das iterações ... 81
Lista de Tabelas
Sumário
Resumo ... 3
Abstract ... 4
Lista de Figuras ... 5
Lista de Tabelas ... 7
Sumário ... 8
1 INTRODUÇÃO ... 11
1.1 MOTIVAÇÃO ... 14
1.2 OBJETIVOS ... 16
1.3 CONTRIBUIÇÕES ... 16
1.4 ORGANIZAÇÃO DO DOCUMENTO ... 17
2 REFERENCIAL TEÓRICO ... 18
2.1 MINERAÇÃO DE DADOS ... 18
2.1.1 AGRUPAMENTO DE DADOS ... 20
2.1.2 AGRUPAMENTO DE DADOS VARIANTES NO TEMPO ... 23
2.1.3 AVALIAÇÃO DE AGRUPAMENTOS ... 25
2.2 COMPUTAÇÃO NATURAL ... 27
2.2.1 VIDA ARTIFICIAL ... 28
2.2.2 O MODELO DE BOIDS ... 31
2.2.2.1 Regra de Separação ... 35
2.2.2.2 Regra de Alinhamento ... 36
2.2.2.3 Regra de Coesão ... 36
2.3 TRABALHOS RELACIONADOS ... 37
3 dcBoids: BOIDS PARA AGRUPAMENTO DE DADOS VARIANTES NO TEMPO .. 41
3.1 OS BOIDS E O AMBIENTE ... 41
3.3 NOVAS REGRAS DE MOVIMENTAÇÃO ... 42
3.3.1 NOVA REGRA DE SEPARAÇÃO ... 42
3.3.2 NOVA REGRA DE ALINHAMENTO ... 43
3.3.3 NOVA REGRA DE COESÃO ... 43
3.4 INCLUSÃO DE UM COMPORTAMENTO ALEATÓRIO ... 44
3.5 JUNÇÃO E SEPARAÇÃO DE OBJETOS ... 44
3.6 VOO ISOLADO ... 44
3.7 VISÃO GERAL DO ALGORITMO ... 45
4 METODOLOGIA, RESULTADOS E DISCUSSÃO ... 46
4.1 METODOLOGIA ... 46
4.1.1 BASES DE DADOS ... 46
4.1.2 ANÁLISES A SEREM EFETUADAS ... 47
4.1.3 SENSIBILIDADE PARAMÉTRICA ... 47
4.1.4 MEDIDAS DE AFINIDADE ... 48
4.1.5 MEDIDAS DE AVALIAÇÃO ... 48
4.1.5.1 Medidas Internas ... 49
4.1.5.2 Medidas Externas ... 49
4.2 SENSIBILIDADE PARAMÉTRICA ... 51
4.2.1 Tamanho do Ambiente ... 51
4.2.2 Velocidade dos Boids ... 52
4.3 RESULTADOS EXPERIMENTAIS ... 53
4.3.1 BASE ANIMAIS ... 54
4.3.1.1 Caso Estático ... 54
4.3.1.2 Caso Dinâmico ... 55
4.3.1.3 Resultados K-Médias ... 59
4.3.2 BASE RUSPINI ... 61
4.3.2.2 Caso Dinâmico ... 62
4.3.2.3 Resultados K-Médias ... 65
4.3.3 BASE YEAST ... 66
4.3.3.1 Caso Estático ... 67
4.3.3.2 Caso Dinâmico ... 68
4.3.3.3 Resultados K-Médias ... 70
4.3.4 BASE WINE ... 71
4.3.4.1 Caso Estático ... 71
4.3.4.2 Caso Dinâmico ... 73
4.3.4.3 Resultados K-Médias ... 74
4.3.5 BASE DIABETES ... 75
4.3.5.1 Caso Estático ... 75
4.3.5.2 Caso Dinâmico ... 77
4.3.5.3 Resultados K-Médias ... 78
4.3.6 BASE ECOLI ... 79
4.3.6.1 Caso Estático ... 79
4.3.6.2 Caso Dinâmico ... 81
4.3.6.3 Resultados K-Médias ... 82
5 CONCLUSÕES E TRABALHOS FUTUROS ... 84
1
INTRODUÇÃO
Atualmente, diversas empresas e organizações conseguem produzir, em um curto intervalo de tempo, uma quantidade de dados tão grande que muitas pessoas não seriam capazes de anali-sá-los e absorvê-los em uma vida inteira de trabalho. Uma vez que essas bases de dados são mantidas pelas organizações, é possível supor que elas possuem um determinado grau de im-portância e/ou um valor agregado. O escritório de Estatísticas do Trabalho dos Estados Uni-dos divulgou um estudo com uma série de informações que servem como bons exemplos para quantificar estes montantes de dados (MANYIKA, CHUI, et al., 2011). Dentre os dados re-portados, destacam-se:
A biblioteca do congresso estadunidense coletou em abril de 2011 um total de 235 Terabytes de dados;
O setor bancário dos Estados Unidos armazenou no ano de 2009 uma quantidade de 609 Petabytes (aproximadamente 6,4 × 108 Gb);
O setor de saúde, também dos EUA, armazenou em 2009 um total de 434 Petabytes, o setor de comunicações um total de 715 Petabytes e o setor de transportes um total de 227 Petabytes;
Somados, os 17 setores do governo dos EUA citados no estudo geraram em 2009 um total aproximado de 6,7 Hexabytes (7,19×109 Gb);
Em média, uma empresa de segurança e investimentos, com até 1000 funcionários, possui aproximadamente 6,8 Petabytes de dados armazenados;
O valor estimado para os dados contidos nas cinco bases de dados mais valiosas deste estudo (Pesquisa e Desenvolvimento, Atendimento Clínico, Contabilidade, Saúde Pú-blica e Novos Modelos de Negócios) somam aproximadamente 335 bilhões de dóla-res;
Utilizando informações extraídas de bases de dados, por meio das técnicas de Mine-ração de Dados, o setor público europeu conseguiu uma redução de 20% nos seus custos, ou seja, uma redução de aproximadamente 300 bilhões de euros.
o conhecimento contido nestes dados precisa, de alguma forma, ser extraído para que seja possível tirar algum proveito dos mesmos.
Apesar destas bases de dados muitas vezes guardarem informações valiosas para as compa-nhias, a extração de conhecimento das mesmas é um processo altamente complexo e que ne-cessita de profissionais e técnicas especializadas para ser realizada com sucesso.
Para que possa haver a transformação de dados em conhecimento, uma série de etapas precisa ser realizada. O conjunto destas etapas é o que torna possível a analogia com a mineração, onde uma grande quantidade de matéria bruta é processada, limpa, filtrada, selecionada, etc., a fim de se extrair pequenas partes de outro material, normalmente de valor muito mais elevado
que a massa bruta, porém que esteja “escondido” dentro dessa massa. Sendo assim, na mine-ração de dados, estas etapas também visam encontrar um produto valioso (o conhecimento) dentro de uma massa bruta (a base de dados). Para isto, as técnicas de mineração de dados são aplicadas e, em suas saídas, evidenciam padrões, tendências e grupos de dados que, muitas vezes, após passarem por uma detalhada análise de um especialista, podem trazer à tona in-formações até então desconhecidas. Após sua extração, estas inin-formações podem então ser utilizadas para gerar conhecimento que, de alguma forma, venha a beneficiar os portadores destas bases de dados ou outros interessados.
uma taxa maior que polinomial com o tamanho n da instância do problema, qualquer que seja o algoritmo usado.
Há uma grande diferença entre a taxa de crescimento de polinômios que tipicamente ocorrem (tal como n³) e exponenciais que tipicamente ocorrem (tal como 2n). Por exemplo, suponha que n seja igual a 1000, um tamanho de entrada bastante razoável para um algoritmo. Nesse caso, n³ é 1 bilhão, um número grande, porém, administrável em um computador. Em contra-partida, 2n é 1,07 × 10301, ou seja, um número tão grande que pode inviabilizar a execução de um algoritmo com esta complexidade, independentemente da capacidade de processamento disponível. Algoritmos de tempo polinomial são suficientemente rápidos para muitos propósi-tos, mas algoritmos de tempo exponencial raramente são úteis.
Algoritmos de tempo exponencial surgem quando se resolve problemas por meio de busca exaustiva através de um espaço de soluções, que pode ser chamado de busca por força-bruta. O tamanho do espaço de busca é exponencial, portanto essa busca usa tempo exponencial. Às vezes, a busca por força-bruta pode ser evitada por meio de um entendimento mais profundo de um problema, que pode revelar um algoritmo de tempo polinomial de maior utilidade. A classe de Problemas NP é o conjunto de problemas resolvíveis em tempo polinomial em um computador não-determinístico. A Classe NP também pode ser definida como a classe de problemas em que é possível verificar, em tempo polinomial, se uma determinada solução proposta satisfaz o problema de decisão. Ou seja, ainda não é conhecida solução polinomial, mas é possível, em tempo de ordem polinomial, confirmar que certo caso é solução de um problema dessa classe. Sendo assim, para resolver completamente um problema desse tipo é preciso, essencialmente, testar todos os candidatos à solução.
O problema de agrupamento de dados consiste em um problema pertencente à classe NP. Sua complexidade é definida por uma expressão de complexidade exponencial ou maior, tornando inviável sua solução através de uma busca exaustiva no espaço de possíveis soluções (EVERITT, LANDAU e LEESE, 2001). Na Seção 2.1, esta discussão será retomada em mais detalhes.
ganha espaço, visto que estas técnicas são capazes de operar efetivamente em tarefas de análi-se exploratória, obtendo vantagens no tipo de comportamento adaptativo que simulam.
A computação natural é uma área de pesquisa relativamente recente, constituída por novas abordagens de computação caracterizadas por uma maior proximidade com a natureza e bom potencial de solução de problemas complexos do mundo real (DE CASTRO, 2007). Devido ao seu grande potencial de exploração de soluções em problemas que apresentam explosões combinatórias de possíveis soluções, esta área ganha espaço na solução de problemas que, à primeira vista, possam parecer insolúveis por técnicas clássicas de computação e programação matemática. Ao explorar estes problemas com abordagens que buscam imitar os comporta-mentos da natureza, a computação natural fornece uma ampla gama de técnicas que podem ser aplicadas com sucesso aos mais diversos problemas da computação, matemática, engenha-rias, biologia e, virtualmente, qualquer área do conhecimento.
Esta dissertação busca unir os pontos fortes de duas grandes áreas de pesquisa, a Mineração de Dados e a Computação Natural, propondo um algoritmo de agrupamento de dados (o dc-Boids – Dynamic Clustering Boids), baseado em uma técnica bioinspirada utilizada para mo-delar comportamentos emergentes em grupos de agentes, e solucionando problemas de agru-pamento de dados variantes no tempo.
1.1
MOTIVAÇÃO
Tendo foco tanto na proposição de uma ferramenta bioinspirada de vida artificial, quanto na solução de problemas complexos de ordem prática, esta dissertação encontra-se alinhada com um dos cinco Grandes Desafios da Pesquisa em Ciência da Computação no Brasil para o de-cênio 2006-2016 (www.sbc.org.br), de acordo com a Sociedade Brasileira de Computação (SBC). Trata-se da modelagem computacional de sistemas complexos artificiais, naturais e socioculturais e da interação homem-natureza, que tem como um dos enfoques modelar e compreender algoritmos inspirados na natureza. Considerando o fato de que o agrupamento de dados promove a descoberta de conhecimento em bases de dados e que pode ser aplicado em bases textuais e multimídia. Este projeto também está em conformidade com outro Grande Desafio da Pesquisa em Computação no Brasil, que é a Gestão da Informação em grandes volumes de dados multimídia distribuídos.
In-vestir recursos na aquisição e retenção de clientes que sejam mais propensos a comprar, por exemplo, exige um profundo entendimento e exploração de bancos de dados de clientes de uma organização.
Felizmente, uma ampla variedade de técnicas – e especialistas que sabem como ajudar essas empresas a usá-las da melhor forma – está disponível para ajudar neste esforço. Dentre as várias ferramentas analíticas de dados, existe a técnica conhecida como análise de grupos, ou agrupamento de dados, a qual pode ser subdividida em agrupamento de dados estáticos e agrupamento de dados variantes no tempo. Essa técnica é utilizada para determinar e qualifi-car grupos ou agrupamentos em uma base de dados. Uma vez identificados, esses agrupamen-tos permitem às organizações tomar decisões direcionadas com base nas necessidades e/ou características dos grupos e melhorar a efetividade de suas operações.
Apesar de derivadas de um mesmo conceito, as análises de dados estáticos e variantes no tempo apresentam diferenças importantes. Na análise de dados estáticos o algoritmo é execu-tado em uma base em que os dados disponíveis não são alterados ao longo de sua execução, ou seja, o algoritmo utiliza os mesmos dados do início ao fim de sua aplicação. Já na análise de dados variantes no tempo, além de aplicar as técnicas de agrupamento, o algoritmo precisa ser capaz de perceber mudanças ou atualizações aplicadas nos dados e refletir imediatamente estas mudanças no agrupamento, caso necessário. Estas atualizações podem incluir desde a alteração de um ou mais atributos de um objeto do banco de dados, até o desaparecimento ou inclusão de um grupo inteiro na base. O algoritmo precisa, portanto, em todos os instantes de sua execução, ser capaz de interpretar as variações nos dados e fazer com que as mesmas se-jam refletidas corretamente nos agrupamentos. Dessa forma, algumas de suas principais ca-racterísticas são:
1) Ser capaz de atuar em bases com alterações de natureza contínua, uma vez que qualquer atualização dos objetos representados pelos Boids influencia diretamente seu voo; 2) Ser capaz de lidar bem com classes desbalanceadas, uma vez que o bando não é
for-temente influenciado pelo seu tamanho, mas sim pelas afinidades entre seus Boids constituintes; e
Assim sendo, tendo como base o problema descrito e os desafios propostos pela Sociedade Brasileira de Computação, este trabalho visa o estudo e implementação computacional de um algoritmo baseado em vida artificial para resolver problemas de agrupamento de dados, com particular ênfase nos dados variantes no tempo. Problemas desta natureza incluem aplicações na área financeira, recuperação de informação, detecção de anomalias, recuperação de ima-gens, visualização de dados, bioinformática, análise de séries temporais e muitas outras. Ape-sar desta grande relevância prática, agrupamento de dados em ambientes dinâmicos ainda não é uma tarefa amplamente estudada na literatura, sendo este outro fator motivador para a reali-zação deste trabalho.
1.2
OBJETIVOS
Sob o ponto de vista de pesquisa e desenvolvimento de ferramentas bioinspiradas, essa disser-tação tem como objetivo geral investigar e desenvolver técnicas de agrupamento de dados baseadas no algoritmo de simulação de comportamentos coletivos em vida artificial denomi-nado de Boids. Mais especificamente, será investigada e adaptada uma técnica chamada de cBoids (DAVID, 2009), a qual corresponde a um algoritmo de agrupamento baseado no mo-delo de Boids para que ela possa ser aplicada a dados variantes no tempo. Os objetivos especí-ficos desta dissertação incluem:
1) Propor uma versão modificada de um algoritmo bioinspirado, aplicado em tarefas de agrupamento de dados, de modo que ele seja capaz de trabalhar com o agrupamento de dados variantes no tempo; e
2) Avaliar o desempenho desse algoritmo em relação à qualidade dos agrupamentos ge-rados.
1.3
CONTRIBUIÇÕES
Neste trabalho, é proposto um algoritmo de vida artificial que pode ser utilizado para resolver o problema de agrupamento de dados variantes no tempo. Essa proposta é derivada de um trabalho inicial (DAVID, 2009) que utiliza o algoritmo de Boids para realizar agrupamento de dados estáticos. As principais vantagens do algoritmo a ser proposto aqui são:
1) Ser inerentemente capaz de atuar em ambientes variantes no tempo;
3) Implementar um processo auto-organizado, através do qual apenas as informações a-cessíveis pelos Boids são utilizadas para promover a formação de grupos.
4) Ser uma ferramenta de visualização de dados. O algoritmo permite uma visualização em tempo real da formação dos grupos em um ambiente 2D, mesmo que os objetos es-tejam em um espaço com dimensão superior.
Este projeto contribui também com a computação bioinspirada, pela proposição de um novo algoritmo auto-organizado para agrupamento de dados.
1.4
ORGANIZAÇÃO DO DOCUMENTO
2
REFERENCIAL TEÓRICO
Este capítulo faz uma revisão conceitual sobre os principais temas pesquisados na dissertação. O capítulo começa introduzindo a área de mineração de dados, com particular ênfase na tarefa de agrupamento, problemas variantes no tempo e medidas de avaliação. Na sequência, o capí-tulo apresenta conceitos sobre computação natural, enfocando vida artificial e o algoritmo de Boids. O capítulo é concluído com uma seção descrevendo trabalhos relacionados.
2.1
MINERAÇÃO DE DADOS
Coletar e armazenar imensas quantidades de dados é algo que atualmente pode ser feito com muita facilidade e baixo custo. Além disso, estas capacidades são ainda facilmente expansí-veis, de modo que, se um dispositivo de armazenamento se aproximar de seu limite, basta adicionar outro e continuar o processo. Apesar de resolver temporariamente o problema, esta ação acaba adiando a tarefa de decidir o que fazer com os dados armazenados.
Esses avanços da tecnologia têm produzido um problema de superabundância de dados, pois nossas capacidades de coletar e armazenar dados tem superado nossa habilidade de analisar e extrair conhecimento dos mesmos (LAHANE et al., 2012). Assim sendo, é necessária a apli-cação de técnicas e ferramentas que transformem, de maneira inteligente e automática, os da-dos disponíveis em informações úteis, que representem conhecimento.
A mineração de dados consiste em uma área que surgiu a partir do interesse em obter infor-mações e conhecimentos intrínsecos a grandes conjuntos de dados. Pode-se definir a desco-berta de conhecimento em bancos de dados (do inglês Knowledge Discovery from Databases - KDD) como sendo o processo não trivial de identificação de padrões válidos, novos, poten-cialmente úteis e compreensíveis em grandes bancos de dados (FAYYAD, SHAPIRO e SMYTH, 1996b). A mineração de dados, por sua vez, é a extração de informações implícitas, previamente desconhecidas e potencialmente úteis a partir de uma base de dados (WITTEN e FRANK, 20011). A ideia é construir algoritmos capazes de analisar automaticamente bases de dados, procurando por padrões.
Ao se iniciarem os estudos relacionados à mineração de dados, questões que podem vir à tona são, por exemplo, “Qual o real ganho das técnicas de mineração de dados em relação às
que uma consulta SQL não pode?”. Primeiramente, é importante perceber que as linguagens de consulta e a mineração de dados são complementares entre si. Uma ferramenta de minera-ção de dados não substitui uma ferramenta de consulta, porém, dá ao usuário um grande adi-cional de possibilidades. Tendo como suposição uma base de dados contendo milhões de re-gistros que descrevem compras de clientes ao longo de dez anos, é possível esperar que haja uma riqueza de conhecimento potencialmente útil intrínseco a ela. Muito deste conhecimento pode ser recuperado utilizando-se consultas normais, por exemplo, “Quem comprou qual
pro-duto em qual data?”, “Qual o volume médio de compras em certa região no mês de julho”, e assim sucessivamente. Porém, em uma base tão rica como esta, existem informações escondi-das que são muito mais difíceis de serem encontraescondi-das utilizando linguagens de consulta. E-xemplos clássicos disso seriam as respostas para questões do tipo “Qual é uma segmentação dos meus clientes de acordo com seus perfis?”, ou seja, como encontrar os mais importantes
perfis de clientes, ou ainda “Quais são as tendências mais importantes no comportamento dos
clientes?”.
De fato, estas questões poderiam, com certo empenho, ser respondidas utilizando-se uma lin-guagem de consulta. Seria possível, por tentativa, encontrar critérios para a definição de perfis de clientes e consultar a base para ver se eles funcionam ou não. Em um processo de tentativa e erro, seria possível desenvolver intuições sobre a importância de determinados atributos e suas inter-relações. Entretanto, a linguagem SQL é muito mais utilizada quando se sabe exa-tamente o que está sendo procurado, enquanto a mineração de dados é mais utilizada quando não se sabe, ou tem-se apenas uma ideia vaga, sobre o que se procura (ADRIAANS e ZANTINGE, 1996).
Existem diversas maneiras de se classificar ferramentas de mineração de dados e mesmo estu-diosos da área ainda divergem em relação a estas classificações (GROTH, 1997). Dentre as tarefas mais importantes (GROTH, 1997; WESTPHAL e BLAXTON, 1998) pode-se citar:
1. Predição: consiste em inferir o valor de um dado objeto usando para isso dados histó-ricos ou um modelo criado a partir desses dados históhistó-ricos. Pode ser dividida em Clas-sificação (caso discreto) e Estimação (caso contínuo).
3. Descrição: a mineração de dados também pode ser utilizada para fornecer aos analis-tas uma visão mais descritiva do que está acontecendo com os dados. Técnicas de su-marização e visualização permitem observar algumas inter-relações e características da base.
De um modo mais formal, pode-se dizer que a mineração de dados se refere a um conjunto de métodos utilizados em alguns passos do processo de descoberta de conhecimento em ban-cos de dados (KDD). Este termo, cunhado em 1989, se refere ao processo, interativo e itera-tivo, de descoberta de conhecimento em conjuntos de dados, incorporando conhecimento de domínio e interpretação de resultados, com ênfase na aplicação dos métodos de mineração de dados (FAYYAD, SHAPIRO e SMYTH, 1996b). O processo de descoberta de conheci-mento em bases de dados é útil em vários domínios da ciência (e.g., bioinformática), bem como em várias aplicações de mercado, como marketing e finanças (KLÖSGEN e ZYTKOW, 1996). Nesse contexto, os bancos de dados representam depósitos de conhecimento em poten-cial, que podem ser explorados para se descobrir relações, padrões e regras adequados.
2.1.1 AGRUPAMENTO DE DADOS
Grande parte da intuição sobre o mundo à nossa volta envolve a ideia básica de agrupamento. Por exemplo, diferentes ondas acústicas que correspondem a uma mesma sílaba (duas pessoas diferentes pronunciando a mesma palavra); diversas imagens diferentes que correspondem a uma mesma classe de objetos (fotos de diferentes tipos de cadeiras); e assim por diante. A ideia de organizar coisas similares em categorias é bastante antiga e reflete a capacidade de identificar características similares em alguns objetos, como forma, cor, cheiro, posição, altu-ra, etc. Análise de grupos ou clustering é um termo genérico usado para designar um amplo espectro de métodos numéricos de análise de dados multivariados com o objetivo de desco-brir grupos ou clusters de objetos (EVERITT, LANDAU e LEESE, 2001).
Os objetos são agrupados com o objetivo de maximizar a distância interclasse e minimizar a distância intraclasse, ou, dito de outra forma, maximizar a similaridade intraclasse e minimi-zar a similaridade interclasse. Portanto, um grupo (cluster) é uma coleção de objetos similares uns aos outros e dissimilares aos objetos de outros grupos (AMIGÓ, GONZALO, et al., 2009).
A aplicação de uma grande diversidade de técnicas para a realização de mineração, mais es-pecificamente agrupamento, de dados é algo bastante comum, visto que esta é uma área de pesquisa em expansão (JAIN, et al., 1999; CHEN, et al., 2000; BERKHIN, 2005).
Métodos de agrupamento são utilizados em diversos domínios científicos como um instru-mento prático para avaliar a estrutura de dados complexos. O interesse no estudo das técnicas de agrupamento tem aumentado recentemente devido às novas áreas de aplicação, tais como a própria mineração de dados, além de áreas como processamento de imagens, processamento de fala e bioinformática (STILL e BIALEK, 2004).
Bases de dados diferentes possuem características diferentes, podendo as mesmas conter obje-tos com valores numéricos, binários, simbólicos ou qualquer outro tipo de atributo. Sendo assim, um fator muito importante a ser observado na escolha de um algoritmo de agrupamento diz respeito ao tipo de objeto contido na base de dados a ser analisada (GAN, MA e WU, 2007)
Cada cluster formado pode ser visto como uma classe de objetos. Como os rótulos das classes dos dados de treinamento não são conhecidos, este processo é denominado de treinamento não-supervisionado (ou aprendizagem não-supervisionada) (MITCHELL, BUCHANAN, et al., 1990).A análise de grupos normalmente envolve as seguintes etapas:
1. Pré-processamento dos dados: correspondente à preparação dos dados para a-grupamento, podendo envolver limpeza, transformação, seleção de atributos, etc.;
2. Definição da medida de proximidade: normalmente avaliada indiretamente por uma função de distância entre pares de objetos e que tem por objetivo avaliar o grau de similaridade entre objetos;
4. Abstração dos dados: é o processo de extrair uma representação simples e compacta do conjunto de dados. Por exemplo, uma abstração típica dos dados é a descrição dos clusters através de protótipos, ou vetores representativos dos clusters, como seu centroide;
5. Avaliação da saída: a avaliação da saída de um algoritmo de agrupamento de-pende do contexto e dos objetivos da análise. Por exemplo, em uma análise ex-ploratória de uma base de dados de imóveis, objetos pertencentes ao mesmo grupo podem permitir a identificação de perfis de moradores de um determinado bairro. A saída do algoritmo de agrupamento também pode ser avaliada em rela-ção à validade do agrupamento; o que pode ser feito por meio de uma avaliarela-ção externa, ou seja, os grupos encontrados são comparados com uma estrutura co-nhecida a priori; uma avaliação interna, ou seja, tenta-se determinar se a estrutu-ra encontestrutu-rada pelo algoritmo é apropriada aos dados; ou uma avaliação relativa, que compara duas estruturas avaliando o mérito relativo de cada uma delas. É importante salientar ainda que nenhuma técnica de agrupamento é universalmente aplicável e, além disso, diferentes técnicas podem permitir a extração de diferentes informações de uma mesma base de dados. Isso é consequência do fato de que muitos algoritmos consideram, im-plicitamente, características específicas para as bases de dados.
Figura 1: Classificações diferentes para uma mesma base de dados.
2.1.2 AGRUPAMENTO DE DADOS VARIANTES NO TEMPO
O agrupamento de dados é uma operação fundamental utilizada na descoberta automática e não-supervisionada de informações úteis em bases de dados. Apesar disso, a maioria das téc-nicas de agrupamento é limitada pelo fato de trabalhar apenas em ambientes estáticos, ou seja, com dados invariantes no tempo (CUI e POTOK, 2006). Bases de dados dinâmicas consistem em coleções de objetos que são alteradas ou atualizadas ao longo do tempo. Esta atualização de dados pode ser imaginada como a modificação sequencial dos valores dos dados (por e-xemplo, preço de ações no mercado financeiro) em uma determinada janela de tempo (por exemplo, ao longo de um dia) de um objeto específico (por exemplo, uma empresa qualquer) (MOERE, 2004).
Nestas circunstâncias, o algoritmo deve ser capaz de perceber as modificações na base de da-dos e reagir baseado nestas modificações. Ou seja, um objeto pode, em um instante de tempo t, pertencer a um grupo k1, porém, ao longo do tempo, este mesmo objeto pode sofrer
altera-ções que façam com que ele se torne mais similar aos objetos do grupo k2. Sendo assim, o
algoritmo deve ser capaz de perceber esta atualização e, no decorrer da execução, rotular o objeto corretamente como pertencente ao grupo k2. A forma mais simples e rápida para se
resolver este problema seria reclassificar a base toda vez que um objeto for atualizado. Esta solução, porém, faz com que o algoritmo seja executado várias vezes em sua totalidade, o que, dependendo da quantidade de atualizações, pode exigir um custo computacional tão elevado que torne toda a técnica ineficiente.
posi-cionam e se movimentam no espaço de forma a representar os grupos naturais dos dados exis-tentes na base. Assim, o presente trabalho se concentra em métodos que envolvam a obtenção de partições de dados em k clusters.
Em relação ao valor de k, nota-se que a maioria dos algoritmos descritos na literatura conside-ra que este é fornecido pelo usuário (KAUFMAN e ROUSSEEUW, 1990; MILIGAN, 1996). Dessa forma, estes algoritmos se concentram em obter k grupos de objetos semelhantes de acordo com algum critério pré-estabelecido. Liu (1968) define que o número de possibilidades de se classificar n objetos em k grupos é dado por:
Ao considerar que o valor de k é desconhecido, o número total de maneiras de se agrupar n objetos em k grupos é:
Portanto, o problema de se encontrar uma solução ótima para a separação de n objetos em k grupos é NP-hard (FALKENAUER, 1998) e, devido ao fato de que o número de separações possíveis desses n objetos em k grupos aumenta aproximadamente na razão kn/k!, a tentativa de se encontrar uma solução ótima global é usualmente inviável sob o ponto de vista compu-tacional, usando-se métodos exatos de busca (ARABIE, HUBERT e DE SOETE, 1996). Con-forme observado por KAUFMAN e ROUSSEEUW (1990), a maioria das abordagens encon-tradas na literatura, e que busca definir automaticamente o valor de k, adota critérios numéri-cos que determinam o número de grupos baseando-se em partições obtidas para diversos valo-res de k.
A introdução de dinâmica nas bases de dados pode promover diversas alterações nas mesmas, como:
1. Alterações nos grupos: o surgimento ou desaparecimento de grupos da base (VAN VAERENBERGH, ESTÉBANEZ e SANTAMARÍA, 2007; VARVELLO, BIERSACK e DIOT, 2007);
2. Movimentações no espaço: a movimentação de objetos pelo espaço devido à variação de alguns ou todos os seus atributos simultaneamente (ABRANTES e MARQUES, 1998). Este problema também é bastante comum em visualização de dados e volumes dinâmicos (JI e SHEN, 2006; SHEN, 2006; JOSHI e RHEINGANS, 2008); e
3. Alteração no número de objetos: A adição ou remoção de objetos da base que pode, eventualmente, ocasionar o surgimento ou desaparecimento de grupos (ZAMIR e ETZIONI, 1999; ELMORE, REED e POTOK, 2005).
2.1.3 AVALIAÇÃO DE AGRUPAMENTOS
No processo de agrupamento de dados, informações pré-definidas sobre as classes não estão disponíveis e tampouco são fornecidos exemplos que mostram o tipo de relação que se deseja encontrar com a exploração dos dados disponíveis. Por estas razões, este é um processo não- supervisionado. A validação de agrupamentos, por si só, já constitui um problema complexo, pois um processo de agrupamento pode resultar em diferentes particionamentos para uma mesma base de dados, dependendo dos critérios específicos utilizados. Esta ausência de um consenso pode ser ocasionada por vários fatores. Algoritmos diferentes podem resultar em agrupamentos distintos, mas, além disso, existem técnicas não determinísticas de agrupamen-to, ou seja, ao aplicar o mesmo algoritmo mais de uma vez para uma mesma base de dados, é possível obter resultados distintos em cada uma das execuções. Outro fator que também pode influenciar são os parâmetros configuráveis dos algoritmos, que têm forte influência no fun-cionamento das técnicas e, portanto, uma simples alteração dos parâmetros do algoritmo pode produzir agrupamentos resultantes distintos em cada uma das execuções.
apenas em relação ao grau de generalização das soluções. Porém, ao analisarmos um caso como o apresentado na Figura 2, vemos que se trata de um exemplo de resultado contraditó-rio. Ou seja, se a única informação disponível para avaliação dos resultados for a própria saída do algoritmo, sem informações sobre as classes corretas, como podemos dizer qual dos agru-pamentos é o mais indicado?
Figura 2: Exemplo de agrupamentos contraditórios.
Para responder esta pergunta, são utilizados os índices de validação (ARABIE, HUBERT e DE SOETE, 1996). Estes índices estão inseridos na categoria de medidas internas, ou seja, medidas que avaliam a qualidade de um agrupamento utilizando apenas o resultado fornecido pelo algoritmo, sem utilizar informações externas sobre o agrupamento. Uma vez que as me-didas externas já conhecem os agrupamentos ótimos ideais, elas são utilizadas com mais fre-quência em testes de validação de algoritmos. Na seção de resultados desta dissertação, são apresentadas medidas internas e externas para avaliar o algoritmo a ser proposto. As medidas externas foram utilizadas para validar o resultado dos agrupamentos propostos pelo dcBoids, uma vez que são conhecidos agrupamentos ótimos para todas as bases testadas.
Como o objetivo do agrupamento é fazer com que objetos de um mesmo cluster sejam pare-cidos entre si e diferentes de objetos de outros clusters, as medidas de validação internas são normalmente baseadas nos seguintes critérios:
1. Compactação: mede o quão perto objetos de um mesmo cluster estão entre si. Exis-tem várias formas de calcular esta medida, como distância média entre os pontos, ou a distância média ao centro do grupo.
2. Separação: mede o quão separado um grupo está do(s) outro(s) grupo(s). Por exem-plo, a distância média entre os objetos de cada grupo, a distância entre os centros dos grupos, ou, ainda, a menor distância entre dois objetos de grupos distintos.
Para avaliação dos resultados do dcBoids foram utilizadas as seguintes medidas de avaliação: 1. Internas: Índice de Dunn.
2. Externas: Índice de Jaccard, Acurácia, Pureza e Entropia.
Todas estas medidas serão descritas em detalhes no Capítulo 4, que descreve a metodologia experimental utilizada.
2.2
COMPUTAÇÃO NATURAL
computação natural. Ela também fornece uma nova forma de entender e interagir com a natu-reza; novos métodos de síntese e até mesmo de percepção para os fenômenos naturais (DE CASTRO, 2006).
Se reconhecermos o fato de que a computação pode precisar de uma mudança de paradigma em breve, quando a tecnologia atual de computação atingir o seu limite de poder de proces-samento e armazenamento de informação, então a computação natural fechou seu ciclo e completou todos os seus três ramos principais (DE CASTRO, 2006):
1. Computação inspirada na natureza: a utilização da natureza para inspirar o de-senvolvimento de novas ferramentas computacionais (algoritmos) para resolução de problemas.
2. Síntese computacional de fenômenos naturais: o uso de computadores para re-criar fenômenos e organismos naturais.
3. Computação com novas matérias primas da natureza: a utilização de materiais naturais (por exemplo, biomoléculas) para computar.
O foco deste trabalho é intermediário entre a primeira e a segunda grande área da computação natural. Da primeira grande área, esse trabalho se apoia no uso de um algoritmo inspirado na natureza para a solução de um problema complexo de engenharia. Por outro lado, o algoritmo a ser investigado e adaptado aqui para o contexto de agrupamento de dados variantes no tem-po foi originalmente protem-posto como uma abordagem computacional para a síntese de comtem-por- compor-tamentos coletivos de animais em movimento, originalmente estudado em Vida Artificial (REYNOLDS, 1987).
2.2.1 VIDA ARTIFICIAL
As palavras “Vida” e “Artificial” são, por si só, difíceis de serem formalmente definidas.
Sen-do assim, definir “Vida Artificial” também não é uma tarefa trivial.
Por sua vez, artificial pode ser definido por aquilo que é produzido não pela natureza, mas sim por uma técnica, ou ainda, aquilo que é produzido por arte ou pela indústria.
Com base nestes dois conceitos, várias definições sobre vida artificial estão presentes na lite-ratura, vejamos algumas das principais:
“A Vida Artificial é o estudo de sistemas feitos pelo homem, os quais exibem compor-tamentos característicos dos sistemas vivos naturais. Ela complementa as ciências biológicas tradicionais, preocupadas com a análise de organismos vivos por meio da tentativa de sintetizar comportamentos referentes à vida, dentro de computadores e outros meios artificiais. Ao estender o alicerce empírico em que a biologia é baseada além da vida em cadeias de carbono que evoluíram na Terra, a Vida Artificial pode contribuir com a biologia teórica localizando a vida-como-nós-a-conhecemos dentro de um contexto maior da vida-como-ela-poderia-ser.” (LANGTON, 1988).
“Vida Artificial é o empreendimento da compreensão da biologia por meio da cons-trução de fenômenos biológicos a partir de componentes artificiais. É a abordagem sintética ao invés da abordagem reducionista.” (RAY, 1994).
“Vida Artificial é um esforço construtivo: alguns pesquisadores buscam evoluir pa-drões em um computador; alguns procuram obter comportamentos sociais em robôs do mundo real. Outros desejam estudar fenômenos relacionados com a vida em um ambiente mais controlável; enquanto outros ainda estão interessados na síntese de novos sistemas que se comportam como sistemas vivos nas áreas da química, eletrô-nica, mecânica e outras mídias artificiais. Vida Artificial é uma disciplina experi-mental, fundamentalmente consistindo em observações de comportamentos em tempo de execução, aquelas interações complexas geradas quando populações de criaturas artificiais, feitas pelo homem, são imersas em ambientes reais ou simulados”
(RONALD, SIPPER e CAPCARRÈRE, 1999).
1. A Vida é vista como um processo dinâmico com algumas características univer-sais que independem da matéria. Assim, a Vida é uma propriedade emergente da organização da matéria e não uma propriedade da matéria propriamente dita; 2. A Vida Artificial (ALife) emprega uma abordagem sintética para o estudo e
cria-ção da vida;
3. A vida artificial envolve o estudo de fenômenos sintetizados por humanos e não pela natureza, independentemente do meio usado para esta síntese.
Em resumo, a vida artificial será entendida aqui como a abordagem sintética ou virtual para o estudo de padrões, formas, comportamentos, sistemas e organismos que se assemelhem à vida como nós a conhecemos ou à vida como poderia ser (DE CASTRO, 2006).
Não existe uma estrutura fechada de projeto para a vida artificial. Se o objetivo é reproduzir algum fenômeno natural conhecido, o primeiro passo é identificar os elementos, mecanismos, processos, propriedades e princípios que fundamentam o sistema natural em estudo. O segun-do passo envolve a incorporação de tusegun-do isso em um sistema computacional, no qual apenas instruções de baixo nível (regras locais) são explicitadas, de forma que novos padrões e com-portamentos sejam propriedades emergentes. É preciso ser cuidadoso para não incorporar no projeto aspectos comportamentais intrínsecos ao fenômeno; apenas leis físicas gerais, regras locais, princípios de seleção natural, interações de elementos, etc., devem ser considerados. Algumas características essenciais de simulações de vida artificial (DE CASTRO, 2006) são:
1. Baseada em população: algoritmos de vida artificial operam com agregados ou conjuntos de programas, agentes, ou especificações;
2. Distributividade: não há um único agente ou programa que direciona os outros agentes;
3. Reatividade local: cada agente reage localmente e individualmente; 4. Descentralização: não há regras globais;
5. Emergência: qualquer fenômeno em um nível superior ao individual deve ser emergente.
2.2.2 O MODELO DE BOIDS
A observação de pássaros é um passatempo praticado por milhares de pessoas ao redor do mundo. As revoadas de pássaros consistem em um belo fenômeno natural, que normalmente agrada aos olhos de quem vê. Ao observar o comportamento destes animais, intuitivamente, pode-se pensar que sempre existe um líder, responsável por guiar os demais indivíduos e, as-sim, promover a formação do bando. Na verdade, isto não é exatamente o que ocorre, pois, aparentemente, o comportamento coordenado e sincronizado de uma revoada é uma proprie-dade emergente de um conjunto de pássaros seguindo algumas poucas regras básicas de com-portamento (DE CASTRO, 2010).
Gerar computacionalmente uma animação gráfica que simule uma revoada de pássaros, um cardume de peixes ou uma manada de animais terrestres não é uma tarefa fácil, principalmen-te se a solução encontrada para esprincipalmen-te problema for obtida a partir de um script individual, que representa um caminho pré-determinado que cada indivíduo do grupo deve percorrer. Esta abordagem soluciona o problema de movimentação dos pássaros, porém gera novos proble-mas, talvez mais desafiadores do que o original. Primeiramente, o custo computacional desta solução pode crescer demasiadamente ao se aumentar o número de pássaros no ambiente. Além disso, a criação de caminhos específicos através dos scripts para cada um dos agentes é uma tarefa braçal e repetitiva, que demanda um tempo considerável e, além disso, requer uma reestruturação caso seja necessário modificar o trajeto percorrido pelos agentes. E, por fim, ao se especificar manualmente o caminho para cada indivíduo, perde-se a naturalidade e suavi-dade observadas nos movimentos do fenômeno natural.
pássaros possuem comportamentos sincronizados de grupo, similares aos cardumes de peixes e manadas de animais terrestres e, assim, chamou os agentes virtuais genéricos de Boids. Esta é uma terminologia largamente utilizada em Vida Artificial para designar agentes simulando o comportamento coletivo de pássaros, animais terrestres e peixes(DE CASTRO, 2006).
Para criar um comportamento de bando, um Boid deve estar consciente de si mesmo e de seus vizinhos mais próximos, sugerindo que este pode se reunir com qualquer número de compa-nheiros de bando. O modelo básico consiste em três comportamentos simples de direciona-mento (REYNOLDS, 1987)que podem ser chamados de regras comportamentais, que descre-vem como um Boid individual manobra com base nas posições e velocidades dos seus vizi-nhos mais próximos. As três regras comportamentais dos Boids (Figura 3) resumem-se a:
1. Separação: esta regra tem o objetivo de evitar colisão entre os Boids, fazendo com que o Boid analisado se mantenha a uma distância adequada de seus vizinhos, como ilustrado na Figura 3(a).
2. Alinhamento: esta regra tem o objetivo de aproximar a velocidade do Boid analisado com a de seus vizinhos, além de alinhar o Boid na direção média para a qual os seus vizinhos apontam, como ilustrado na Figura 3(b).
3. Coesão: o objetivo desta regra é fazer com que o Boid analisado se mantenha próximo ao ponto médio de seus vizinhos, mantendo o bando coeso, como ilustrado na Figura 3(c).
(a) (b) (c)
A utilização destas regras de comportamento não permite dizer a priori qual será o trajeto exa-to percorrido por cada Boid. Porém, o comportamenexa-to emergente individual e do bando pode ser observado conforme o algoritmo é executado. Desta forma, mesmo com regras simples, capazes apenas de analisar condições locais, o algoritmo consegue, após diversas iterações, promover a realização de tarefas complexas no cenário global. Boids solitários e grupos me-nores de Boids tendem a se agrupar formando grupos maiores e, na presença de obstáculos, grupos maiores podem temporariamente se dividir em grupos menores(DE CASTRO, 2006; MUNOZ e DE CASTRO, 2009).
Sendo assim, para simular uma revoada, basta criar alguns Boids no ambiente que, através das regras de movimentação devidamente calibradas, os indivíduos apresentarão um comporta-mento emergente coordenado, evitando colisão e promovendo a formação de bandos. Em seu artigo original, Reynolds (1987) não descreve um algoritmo exato, com pseudocódigos ou instruções específicas de programação para o modelo dos Boids. Porém, a descrição do fun-cionamento das três regras básicas fornece um nível de abstração suficiente para que todas sejam codificadas de acordo com a proposta conceitual definida no artigo. Deste modo, cada autor utiliza sua própria interpretação e adapta o algoritmo de forma a atender suas necessida-des específicas.
As regras de movimentação dos Boids podem ser utilizadas tanto em ambientes 2D, como em ambientes 3D. O algoritmo dcBoids (dynamic clustering Boids), a ser proposto nesta disserta-ção, funciona em um ambiente toroidal 2D e cada Boid k é modelado de acordo com a seguin-te estrutura de dados:
1. bk: vetor de coordenadas do Boid k; 2. vk: vetor velocidade do Boid k.
O algoritmo é implementado de modo a exibir um funcionamento no qual o processamento computacional de todos os Boids seja executado paralelamente. A cada iteração do algoritmo, cada um dos Boid analisa o ambiente à sua volta e decide qual posição assumirá na iteração seguinte. Deste modo, a cada iteração do algoritmo, todos os Boids analisam o ambiente ao seu redor, utilizando as regras detalhadas a seguir e, somente após esta análise ser completada por todos, é que os valores de suas variáveis são atualizados. As regras gerais de atualização dos Boids são dadas por:
Boids fora da área de
percep-ção
Boid analisa-do
Área de percep-ção
Vizinhos do Boid analisado
vk(t + 1) = vk(t) + vk(t); (4)
onde bk(t + 1) é a posição do Boid k na iteração t + 1, bk(t) é o ajuste a ser imposto ao vetor
bk na iteração t, vk(t + 1) é a velocidade do Boid k na iteração t + 1 e vk(t) é o ajuste a ser imposto ao vetor vk na iteração t.
O valor dos ajustes a serem incorporados nas Equações (3) e (4) será calculado usando uma variável aleatória sorteada entre 0 e um limitante superior, ou , a ser definido de acordo com a regra (separação, alinhamento ou coesão) e o algoritmo (Boids ou dcBoids):
bk(t) = rand(0, ); (5)
vk(t) = rand(0, ). (6)
A Figura 4 apresenta uma visão dos principais elementos utilizados pelo algoritmo de Boids. Cada Boid possui uma área de percepção e todos os Boids dentro desta área são considerados seus vizinhos. Sempre que um ou mais Boids estiverem dentro da área de percepção de outro, as regras de movimentação serão aplicadas.
Figura 4: Um Boid e sua vizinhança.
(a) (b)
Figura 5: Tendência de alinhamento dos Boids ao longo do tempo. (a) Início da simulação. (b) Após algumas iterações.
2.2.2.1 Regra de Separação
Toda vez que um ou mais Boids estiverem dentro da área de percepção do Boid analisado, a regra de separação é ativada. Esta regra faz com que Boids voando muito próximos se afas-tem, evitando assim uma possível colisão. Para aplicar esta regra são utilizados os valores das posições bi, i = 1, ..., n, i k, de todos os n vizinhos do Boid k:
. (7)
A nova posição do Boid é dada pela regra de atualização da Equação (3). Ao calcular esta nova posição para o Boid k é possível reduzir a chance de uma colisão. A Figura 6 representa uma situação na qual a regra de separação é ativada. Esta regra faz com que os Boids que es-tão muito próximos voltem a se separar, assumindo uma posição de maior distância entre si.
2.2.2.2 Regra de Alinhamento
Quando um Boid percebe outros em sua área de percepção, este tenta voar com uma velocida-de e alinhamento semelhantes aos velocida-destes vizinhos. Para aplicar esta regra são utilizados os valores das velocidades vi, i = 1,..., n, i k, de todos os n vizinhos do Boid k:
. (8)
A nova posição do Boid é dada pela regra de atualização da Equação (4). Ao calcular esta nova posição para o Boid k é possível fazer com que ele voe para uma mesma direção e senti-do de seus vizinhos. A Figura 7 representa uma possível situação na qual um Boid deve se alinhar com seus vizinhos a fim de evitar uma colisão.
Figura 7: Exemplo de regra de alinhamento.
2.2.2.3 Regra de Coesão
A regra de coesão busca aproximar o Boid k de um grupo. Portanto, para manter o bando coe-so, o Boid k precisa alterar sua posição, dirigindo-se em direção à posição média de seus vizi-nhos. Para aplicar esta regra são utilizados os valores das posições bi, i = 1,..., n, i k, de todos os n vizinhos do Boid k:
. (9)
A nova posição do Boid é dada pela regra de atualização da Equação (3). Ao calcular esta nova posição para o Boid k é possível fazer com que o mesmo voe de maneira coesa com seu grupo.
Figura8: Exemplo da regra de coesão.
A Figura 9 apresenta a visão geral do algoritmo de Boids em formato de pseudocódigo.
Para cada Boid k faça: //Regra de separação
Calcule o ajuste de separação. [Eq. (7)] Atualize a posição: bk = bk
//Regra de alinhamento
Calcule o ajuste de velocidade. [Eq. (8)] Atualize a velocidade: vk = vk+
//Regra de coesão
Calcule o ajuste de coesão. [Eq. (9)] Atualize a posição: bk = bk
Fim para
Figura 9: Pseudocódigo do algoritmo original dos Boids.
2.3
TRABALHOS RELACIONADOS
genéti-cos (CONLEY, 2005; CHEN, et al., 2006) ou lógica fuzzy (BAJEC, et al., 2003), com o obje-tivo de aperfeiçoar ainda mais a qualidade do agrupamento dos dados.
A maior parte das técnicas de agrupamento é limitada a coleções estáticas de dados. Entretan-to, muitas bases de dados de problemas do mundo real se mantêm em constante atualização, e ainda existe grande carência por ferramentas efetivas que funcionem de forma satisfatória com esse tipo de dado. Exemplos de técnicas utilizadas incluem métodos baseados em cen-troides (ABRANTES e MARQUES, 1998), subgrafos (ASLAM, PELEKHOV e RUS, 1999), enxames de partículas (LI e YANG, 2009), sistemas imunológicos artificiais (NEAL, 2002) e abordagens visuais (CHITTARO, COMBI e TRAPASSO, 2003).
O trabalho desenvolvido por David (2009) pode ser considerado como um antecessor para esta dissertação. O autor inicia as investigações a respeito da utilização de uma versão modifi-cada do algoritmo de Boids para realizar a tarefa de agrupamento de dados. Este trabalho a-presenta resultados iniciais motivadores, os quais sugerem que a continuação da pesquisa e maior exploração da técnica podem melhorar os resultados já obtidos. Neste trabalho, foram apresentados alguns resultados preliminares com três bases de dados de benchmark consoli-dadas na literatura. Porém, este trabalho apresentou resultados ainda bastante iniciais em rela-ção aos dados variantes no tempo, os quais devem ser melhor explorados a fim de fornecerem uma discussão mais conclusiva.
possí-vel observar a formação dos “bandos”, uma vez que, no cBoids, sempre que ocorre a junção entre dois Boids, apenas um deles continua voando no ambiente. No cBoids, o objetivo final é fazer com que apenas um objeto por grupo (o centroide) voe no ambiente. Dessa forma, se em uma base qualquer com 100 objetos existirem 5 grupos distintos, o cBoids iniciará sua execu-ção com 100 Boids voando no ambiente e tenderá a reduzir este número para o valor 5, que é a quantidade ideal de grupos a serem encontrados. Já no dcBoids, os 100 objetos estarão pre-sentes no ambiente durante toda a sua execução, favorecendo assim a visualização do funcio-namento do algoritmo. No Capítulo 3 dessa dissertação, o funciofuncio-namento do dcBoids será apresentado em detalhes.
O Agrupamento de Múltiplas Espécies (Multiple Species Flocking – MSF) (CUI e POTOK, 2006b) propõe um modelo de Boids com o objetivo de realizar agrupamento de dados. O MSF utiliza as três regras originais do modelo Boids e propõe ainda uma quarta regra (regra de si-milaridade de características) com o objetivo de influenciar o movimento dos Boids. Esta re-gra faz com que Boids similares tendam a voar próximos uns dos outros, enquanto Boids dis-similares tendam a se afastar. Aqueles Boids que voam próximos uns dos outros são conside-rados de mesma espécie. Após diversas iterações, Boids de uma mesma espécie tendem a voar em uma mesma região, mantendo-se afastados de bandos (espécies) diferentes. A força de atração entre os Boids é inversamente proporcional à distância entre eles e ao nível de simila-ridade entre seus dados. Após diversas iterações, as três regras originais do modelo Boids, associadas à quarta regra proposta, fazem com que os Boids formem grupos contendo indiví-duos similares. As características deste modelo permitem utilizá-lo em ambientes dinâmicos. Uma vez que um objeto é alterado, este pode se afastar de um grupo e passar a fazer parte de outro, modificando a configuração dos grupos. O algoritmo MSF utiliza as três regras origi-nais do modelo proposto por Reynolds e cria uma nova regra comportamental, baseada em afinidades, que tem o objetivo de promover a formação de bandos. A informação de quantos grupos foram formados é exclusivamente visual, ou seja, para se definir o número de grupos identificados é necessário definir um critério que identifique quando um grupo está isolado de outro, como, por exemplo, uma distância mínima entre esses dois grupos.
Reynolds. O SPARROW é um algoritmo multiagentes no qual cada um destes agentes utiliza regras modificadas do algoritmo original de Reynolds, fazendo com que os agentes se
transfor-mem em “caçadores de bandos”. Ou seja, pássaros voando isoladamente aumentam suas veloci-dades e varrem o ambiente em busca de grupos já formados, com os quais eles podem se unir e passar a fazer parte dos mesmos. Além disso, os agentes possuem características específicas como cor e velocidade, que indicam para os agentes vizinhos onde existem áreas de interesse. Por e-xemplo, a cor vermelha indica uma região de alta densidade e que, provavelmente, possui padrões de interesse. Portanto, os pássaros desta cor reduzem sua velocidade de modo que o bando tenha chances menores de ser desfeito. Experimentos realizados pelos autores em duas bases de dados sintéticas mostraram que o algoritmo conseguiu obter um nível satisfatório de acurácia.
3
dcBoids
: BOIDS PARA AGRUPAMENTO DE DADOS
VARIANTES NO TEMPO
Neste capítulo, são apresentadas as propostas de modificações das regras básicas do modelo de Boids, transformando-o no algoritmo dcBoids (Dynamic Clustering Boids, ou Boids Para Agrupamento Dinâmico), a fim de permitir sua aplicação na tarefa de agrupamento de dados variantes no tempo. No dcBoids, cada Boid corresponde a um objeto da base de dados. Esses Boids são dispostos em um ambiente bidimensional, no qual se movimentam, de modo similar a uma formação de bando de aves, com o objetivo de realizar o agrupamento dos objetos que representam. Ao longo do tempo, os Boids irão interagir seguindo um conjunto de regras lo-cais de movimentação pré-definidas. Para que o algoritmo dcBoids possa ser aplicado ao a-grupamento de dados variantes no tempo, será necessária a modificação das regras básicas do modelo Boids para que estas se tornem capazes de modelar e solucionar o problema de agru-pamento de dados. Estas novas regras são baseadas na medida de afinidade entre os Boids, tornando o algoritmo capaz de identificar padrões nas bases de dados e permitindo que grupos com Boids similares sejam formados.
3.1
OS BOIDS E O AMBIENTE
No algoritmo dcBoids, os Boids são dispostos em um ambiente 2D toroidal de tamanho limi-tado. Cada Boid presente no ambiente representa um registro ou objeto da base de dados. Sendo assim, para uma base de dados com n objetos, serão criados inicialmente n Boids vo-ando pelo ambiente. Durante a execução do algoritmo, estes Boids se movimentarão pelo am-biente e a formação de bandos poderá ser observada. Cada Boid funciona como um ponteiro para o objeto que ele representa, pois, embora o Boid esteja em um ambiente 2D, os objetos podem estar contidos em um espaço vetorial de qualquer dimensão e, além disso, os valores dos dados deste objeto não influenciam diretamente na posição do Boid, mas sim em sua po-sição relativa aos demais Boids.
3.2
CÁLCULO DE AFINIDADE
Boids considera os objetos representados em seu espaço original e não a sua projeção no es-paço bidimensional no qual os Boids se movimentam. Nesse trabalho, a distância euclidiana é utilizada como medida de afinidade entre os objetos. A principal razão pela escolha da distân-cia euclidiana é sua ampla aplicabilidade em problemas de agrupamento de dados numéricos (EVERIT et al., 2001). Embora outras medidas sejam conhecidas, o foco deste trabalho não é o estudo da influência da medida de afinidade no processo de agrupamento, mas sim a inves-tigação da influência da variação dos dados no tempo no processo de agrupamento do algo-ritmo dcBoids.
3.3
NOVAS REGRAS DE MOVIMENTAÇÃO
No algoritmo dcBoids,a movimentação dos agentes é probabilística e baseada nas três regras básicas do modelo original de Boids, com suas devidas modificações para o problema de a-grupamento. As regras gerais de atualização do dcBoids seguem o mesmo padrão das regras dos Boids, conforme Equações (3) e (4), com a diferença de que os ajustes a serem impostos consideram a afinidade entre os Boids.
3.3.1 NOVA REGRA DE SEPARAÇÃO
No algoritmo dcBoids a intensidade da força de separação dos Boids é inversamente propor-cional à afinidade entre eles, ou seja, quanto mais diferentes dois Boids forem entre si, mais longe um voará do outro.
Na aplicação da regra de separação, quanto menor a afinidade entre o Boid k e seus vizinhos, maior será a distância do passo de separação dado pelo Boid k. Esta regra faz com que Boids voando muito próximos se afastem, levando em consideração a afinidade que possuem entre si. Para aplicar esta regra são utilizados os valores das posições bi, i = 1, ..., n, i k, de todos os n vizinhos do Boid k, bem como a afinidade entre os Boids i e k, i = 1, ..., n:
, (10)
A nova posição do Boid é dada pela regra de atualização da Equação (3). Ao calcular esta nova posição para o Boid k é possível afastá-lo de um grupo com o qual tenha uma baixa afi-nidade.
3.3.2 NOVA REGRA DE ALINHAMENTO
O alinhamento entre diferentes Boids será definido com base na afinidade com seus vizinhos: quanto maior a afinidade com um grupo, maior o alinhamento com ele. Para um Boid se ali-nhar com outro, o vetor que representa a nova posição é construído com base nas velocidades dos Boids vizinhos, ponderado pelos valores de afinidade. Para aplicar esta regra são utiliza-dos os valores das velocidades vi, i = 1,..., n, i k, de todos os n vizinhos do Boid k, bem como a afinidade entre os Boids i e k, i = 1, ..., n:
. (11)
onde é a posição do objeto k, correspondente ao Boid k, no espaço original dos dados, , i = 1, ..., n, é a posição de todos os outros objetos na vizinhança de k, e é a afinidade entre os Boids, calculada pelo inverso da distância euclidiana normalizada entre eles.
A nova velocidade do Boid é dada pela regra de atualização da Equação (4). Ao calcular esta nova velocidade para o Boid k é possível fazer com que ele voe para uma mesma direção e sentido de seus vizinhos de maior afinidade.
3.3.3 NOVA REGRA DE COESÃO
Assim como as duas regras anteriores, a regra de coesão também considera o valor de afini-dade entre os Boids para ser aplicada. A nova regra proposta é similar à descrita na Seção 2.2.2, porém a intensidade da coesão aplicada depende do valor da afinidade entre o Boid ana-lisado e os Boids de um dado grupo: quanto maior a afinidade, mais o Boid anaana-lisado se apro-ximará da posição média de seus vizinhos. Para aplicar esta regra são utilizados os valores das posições bi, i = 1, ..., n, i k, de todos os n vizinhos do Boid k, bem como a afinidade entre os Boids i e k, i = 1, ..., n: