Escolar Documentos
Profissional Documentos
Cultura Documentos
COLÔNIA DE FORMIGAS:
UMA IMPLEMENTAÇÃO DO ALGORITMO ACO E ACOC (ANT COLONY
OPTIMIZATION FOR CLUSTERING)
Curitiba,
2023
1. INTRODUÇÃO
Com o decorrer do tempo cada vez mais dados estão sendo criados, e com
isso cada vez mais estão surgindo ferramentas que permitem fazer a gerência de
utilização desses dados, sejam planilhas no Excel ou algoritmos complexos de difícil
entendimento, uma dessas funções são os de agrupamento, esses algoritmos de
agrupamento de dados desempenham um papel fundamental na área de
aprendizado de máquina e mineração de dados. Os algoritmos de agrupamento são
uma classe essencial de técnicas em aprendizado de máquina e mineração de
dados, projetados para identificar padrões naturais e estruturas subjacentes em
conjuntos de dados. Ao contrário dos algoritmos de classificação que atribuem
rótulos a dados pré-determinados, os algoritmos de agrupamento buscam agrupar
itens semelhantes com base em suas características, sem a necessidade de rótulos
predefinidos.
Quando pensamos em algoritmos relacionados à aprendizagem de
máquinas e inteligência artificial podemos achar que é algo muito complexo, existem
sim algoritmos gigantes com camadas e camadas de dados, mas sim existem
alguns que são mais simples o entendimento como é o caso do algoritmo de colônia
de formigas. Os algoritmos de colônia de formigas são inspirados no
comportamento coletivo e adaptativo de formigas reais em busca de recursos. Este
paradigma computacional faz parte de uma classe de técnicas conhecidas como
algoritmos de otimização baseados em populações, que buscam soluções eficientes
para problemas complexos através da simulação de comportamentos coletivos.
a. Algoritmo de Colônia de Formigas (ACO)
O conceito fundamental por trás dos algoritmos de colônia de formigas é a
imitação do comportamento colaborativo observado em formigas reais, onde as
interações entre indivíduos conduzem a decisões coletivas eficazes. Quando
aplicados a problemas de otimização, como o problema do caixeiro viajante, os
algoritmos de colônia de formigas buscam encontrar soluções de alta qualidade
explorando e atualizando trilhas de feromônios, que representam a qualidade das
soluções em potencial.
O algoritmo desenvolvido por Colorni, Dirigo e Maniezzo (1991) consiste em
uma formiga sendo posicionada em um nó inicial ou podem se alocadas
aleatoriamente, depois desse posicionamento a formigas deve seguir uma regra de
transição para outro nó, deixando um feromônio no caminho, depois de todas as
formigas se moverem é feita a atualização desses feromônios levando em conta a
taxa de evaporação logo após vai novamente a escolha do nó que quer chegar com
base nas trilhas de feromônios assim que esse processo é concluído é repetido o
processo até que o tempo computacional tenha sido atingido ou o número máximo
de iterações tenha sido atingido.
b. Algoritmos de Clustering
O algoritmo de Clustering ou agrupamento faz parte do universo dos
algoritmos de aprendizagem não supervisionada, de forma resumida um clustering
se baseia pela análise de centróide começa com a definição de pontos aleatórios no
meio dos dados. Então, ele verifica quais elementos estão próximos daqueles
centróides e os agrupa. Depois disso, ele reinicializa novos centróides, a partir de
cálculos envolvendo os componentes. Um desses algoritmos de agrupamento
existentes é o de K-means. Nesse método para se calcular como será feito esses
elementos próximos dos centróides normalmente é feito calculando suas distâncias,
para isso existem algumas métricas de distâncias como Euclidiana e Manhattan.
Mas isso é feito para dados numéricos, como é feito se forem valores não
numéricos como cores roxo e azul? Um meio de fazer isso é a normalização, com
criação de novas colunas de dados onde por exemplo se o dado for azul é 1 e se for
roxo é 0 e assim por diante.
c. Algoritmo de Agrupamento por Colônia de Formigas (ACOC)
O ACOC (Ant Colony Optimization for Clustering), como proposto por Kao e
Cheng (2006), tem como objetivo descobrir uma configuração de cluster ideal, de
modo que a soma total dos erros de cluster para todos os objetos de dados possa
ser minimizada.
No algoritmo ACOC, o espaço de solução é moldado como um grafo da
matriz do nó do cluster-objeto. O número de linhas é igual ao número de objetos, e o
número de colunas igual ao número de clusters. Cada nó denotado por N(i, j)
significa que este objeto de dados i seria atribuído ao cluster j. Formigas artificiais
podem ficar somente em um nó para cada objeto.
A Imagem 1 exemplifica a construção de um grafo para problemas de
agrupamento, onde círculos vazios representam nós não visitados, e círculos
sólidos indicam nós visitados. No grafo, cada formiga move-se de um nó para outro,
depositando feromônio nos nós e construindo uma solução passo a passo. A cada
etapa, uma formiga seleciona aleatoriamente um objeto não agrupado, adicionando
um novo nó à sua solução parcial. Esse processo leva em consideração tanto a
intensidade do feromônio quanto a informação heurística, calculada pela distância
euclidiana entre o objeto e o centro do cluster. Para isso, cada formiga mantém uma
matriz de centros de cluster, atualizando-os após cada etapa de agrupamento. A
lista de memória evita que um objeto de dados seja agrupado mais de uma vez por
uma formiga. Quando a lista de memória está completa, indica que a formiga
concluiu a construção da solução.
Imagem 1 - Ilustração do funcionamento do agrupamento por colônia de formigas
Equação 4
Equação 5
Calcule o valor da função objetiva para cada formiga, Jk, usando a equação 6.
Depois disso, rankeie R (soluções) de formigas na ordem ascendente de valores Jk.
A melhor solução é chamada de melhor solução de iteração. É comparado com a
melhor solução até agora, e a melhor será a nova melhor solução até agora.
Equação 6
● Passo 8 Atualizar trilhas de feromônios.
a. ACO
Estrutura do Código
Classes Principais:
Execução
Formiga 1
solução: ['A', 'E', 'D', 'C', 'B']
avaliação: 26
Formiga 2
solução: ['B', 'C', 'E', 'A', 'D']
avaliação: 30
Formiga 3
solução: ['C', 'B', 'A', 'D', 'E']
avaliação: 23
Formiga 4
solução: ['D', 'A', 'B', 'E', 'C']
avaliação: 32
Formiga 5
solução: ['E', 'D', 'B', 'C', 'A']
avaliação: 29
b. ACOC
Estrutura do Código
Funções
Classes Principais
Execução
❖ Número de Épocas: 10
❖ Número de Clusters: 3
❖ Número de Formigas: 9
❖ Expoente de Distância: 1
❖ Expoente de Feromônio: 1
❖ Número de Formigas na Elite de Cada Iteração: 2
❖ Constante de Evaporação: 0,01
Cluster 1:
centro do cluster:
[0.8852056641942009, 0.5871034482758621, 0.7513312693498452,
0.7136666666666668, 0.6037037037037036, 0.43530927835051547,
0.1608267716535433, 0.6887878787878787, 0.32530726256983233,
0.5564923061538462, 0.40163742690058485, 0.43110000000000004,
0.36990476190476196]
Por mais que não haja uma “estabilização do modelo” como no exemplo
anterior, e isso é justificado pela maior complexidade desse problema, é possível
notar que cada Cluster corresponde parcialmente a uma classe