BULGULAR VE YORUMLAR
TABLO 4.3 MAVİ JEANS REKLAMLARININ MARKA KİŞİLİĞİ VE ARKETİPLERİ
Parâmetro: P // População inicial
1: while critério de parada não satisfeito faça
2: P∗ ← ∅
3: while P∗ não completa faça
4: se probabilidade de cruzamento satisfeita então
5: ind1← selecao(P )
6: ind2← selecao(P )
7: (f ilho1, f ilho2)← cruzamento(ind1, ind2)
8: P∗ ← P∗∪{f ilho1, f ilho2}
9: fim se
10: se probabilidade de mutação satisfeita então
11: ind3← selecao(P ) 12: f ilho3← mutacao(ind3) 13: P∗ ← P∗∪{f ilho3} 14: fim se 15: fim while 16: P ← P∗ 17: fim while 18: retorne melhorIndividuo(P )
em uma parte menor, de acordo com um parâmetro fornecido pelo usuário. A ope- ração de cruzamento também pode ser utilizada por esses métodos, mas tem menor probabilidade.
Algoritmos genéticos (AG) e a programação genética (PG) procuram simular de forma mais fiel o comportamento da evolução natural, priorizando o cruzamento como o principal operador para busca no espaço de soluções, e utilizando a operação de mutação com menor probabilidade. Porém, enquanto o AG utiliza, na maioria das vezes, indivíduos representados por vetores binários ou reais, um PG é normalmente utilizado para evoluir indivíduos mais complexos, representados por árvores de decisão, que podem ser programas, ou até funções (ou operações).
Devido à sua simplicidade e seu reconhecimento na área de classificação tradici- onal [100, 91, 73, 67, 60, 11, 41], este trabalho propõe um AG implementado especifi- camente para o problema de classificação hierárquica (descrito na Seção 4.1). Assim, o restante dessa seção focará em AGs.
Baseado na teoria da evolução das espécies, o objetivo de um AG é evoluir uma população inicial P através de operações de cruzamento e mutação até que algum critério de parada seja satisfeito. O Algoritmo 3.1 apresenta um pseudocódigo de um algoritmo genético padrão.
3.1. Representação dos indivíduos 25
Dada uma população P de entrada e uma população auxiliar P∗ inicialmente
vazia (linha 2), indivíduos são escolhidos de P (linhas 5, 6 e 11) por um critério de seleção (descrito na Seção 3.4). Cada indivíduo é variado através de operações de cruzamento e mutação (linhas 7 e 12). Os indivíduos resultantes dessas operações são inseridos em P∗ (linhas 8 e 13). A probabilidade de ocorrer qualquer dessas operações
é definida pelo usuário (linhas 4 e 10). Chamamos uma sequência de operações como esta (linhas 3-15) de iteração. São executadas tantas iterações quanto necessário até que P∗ esteja completa com novos indivíduos. Quando isto ocorre, a população P é
atualizada com os indivíduos de P∗, formando a nova geração de P (linha 16). São
criadas novas gerações até que um critério de parada seja satisfeito (linha 1). Esse critério pode ser um número máximo de gerações ou a obtenção da solução ótima, que normalmente ocorre quando há convergência de todos os indivíduos para uma única solução. Ao fim da evolução, o melhor indivíduo da população P é retornado (linha 18).
Uma das grandes vantagens dos AGs é que eles podem ser facilmente adaptados para resolver problemas nas mais diversas áreas de aplicação simplesmente escolhendo uma representação de indivíduo e uma fitness apropriadas. Neste trabalho, tratamos o problema de classificação hierárquica. Apesar de AGs ainda não terem sido utilizados para resolver esse tipo de problema, diversos AGs já foram propostos para a tarefa de classificação tradicional.
Assim, nas seções seguintes, descreveremos como as principais características de um AG (veja Algoritmo 3.1) podem ser implementadas em problemas de classificação tradicional. A representação de um indivíduo é descrita na Seção 3.1, enquanto as formas de se inicializar uma população e selecionar seus indivíduos são descritas na Seção 3.2. Métricas de avaliação utilizadas como fitness seguem na Seção 3.3. A seleção de indivíduos para a nova geração é descrita na Seção 3.4. Os tipos de operações mais comuns em AG e os específicos para classificação são descritos respectivamente na Seção 3.5. Por fim, na Seção 3.6, são descritos AGs utilizados na literatura para classificação tradicional.
3.1
Representação dos indivíduos
Em um problema de classificação, cada indivíduo representa um classificador. Porém, existem vários tipos de modelos de classificadores ou parte dele. A maio- ria dos trabalhos que utilizam AGs para classificação utilizam como modelo para os classificadores funções matemáticas ou regras de decisão. Quando os indivíduos são re-
26 Capítulo 3. AEs para Classificação Tradicional
presentados como funções matemáticas explorando relações dos atributos da base, um limiar é utilizado para determinar a classe do exemplo de acordo com o valor retornado pela função. No caso de regras, elas são modelos do tipo se <antecedente> então <consequente>. Por exemplo, se contém atributo “bola” ou “placar” então “Esporte” caracteriza uma regra que atribui a classe “Esporte” aos documentos que possuem o termo “bola” ou “placar”.
AGs para classificação se baseiam em duas abordagens [27, 37]: a abordagem Michigan e a abordagem Pittsburg. Os sistemas que utilizam a abordagem de Michigan mantêm uma população de regras individuais que competem entre si por espaço e prioridade na população. Um classificador com essa abordagem deve ser formado pelo conjunto de regras distintas que melhor solucione o problema. Assim, cada indivíduo é uma regra e o AG deve retornar um conjunto de indivíduos (regras).
Em contraste, os sistemas que utilizam a abordagem de Pittsburgh mantêm uma população onde indivíduos representam conjuntos de regras de comprimento variável, e competem entre si com relação ao desempenho no domínio da tarefa. Assim, regras com fitness semelhantes podem cobrir o mesmo espaço de soluções. Um classificador com essa abordagem precisa apenas do melhor indivíduo para realizar a classificação.
Dentre as vantagens e desvantagens de utilização de cada uma dessas abordagens, há muito o que ser estudado para identificar qual é a mais eficaz, uma vez que o problema de interação entre as regras durante a evolução [37] é difícil de ser avaliado.
3.2
Inicialização da População
Na maioria das aplicações de AG, a população é gerada aleatoriamente. Porém, no contexto de classificação, essa abordagem tem um grande problema [37]: é possível que as regras criadas não cubram nenhum dos exemplos da base de treinamento, obtendo uma qualidade (fitness) muito baixa. Por cobrir entendemos que um exemplo da base deve possuir os valores especificados pelo antecedente da regra. Uma simples solução para esse problema é inicializar a população aleatoriamente utilizando regras mais gerais, com um número pequeno de condições.
Uma forma um pouco mais inteligente de solucionar esse problema é inicializar a população com regras que garantem acerto de pelo menos uma das instâncias da base [61]. Para isso, basta escolher aleatoriamente um exemplo da base de treinamento que pertença à classe prevista pela regra (também chamado de semente), e gerar condições válidas baseada neste exemplo. Assim, qualquer que seja a regra criada, pelo menos o exemplo escolhido será coberto por ela.
3.3. Avaliação de Fitness 27
Com maior conhecimento do problema, outras formas de inicialização podem ser propostas. Durante a evolução do AG, por exemplo, podemos manter as melhores soluções encontrados em uma geração para que elas não se percam durante as operações de cruzamento e mutação. Essa abordagem é chamada de elitismo. No Algoritmo 3.1, a população P∗ seria inicializada com a elite de P ao invés de vazia, com exceção da
primeira geração.
3.3
Avaliação de Fitness
Uma das questões mais importantes no desenvolvimento de um AG é a função de fitness. Essa função determina a qualidade de uma solução candidata ao problema, e por isso é utilizada como função de otimização pelo AG. Idealmente, a fitness deve medir a qualidade de um indivíduo o mais precisamente possível, sujeita a restrições computacionais, conhecimento sobre o problema sendo atacado e os requisitos do usuá- rio. No problema de classificação, onde um indivíduo normalmente representa um mo- delo de classificação, a fitness representa a qualidade do indivíduo para classificar um determinado conjunto de exemplos de uma base de dados.
Em classificação, existem vários critérios de avaliação de qualidade de uma regra. Algumas delas são [37]: precisão (confiança), revocação (sensitividade), taxa de acerto positivo (completude), taxa de acerto negativo (especifidade), acurácia e curvas ROC. Qualquer combinação entre essas métricas pode ser utilizada tentando sempre manter o equilíbrio entre corretude e cobertura. Avaliações que privilegiam a precisão podem ser muito específicas e cobrirem poucos exemplos, enquanto as que privilegiam revocação podem ser muito genéticas e acertarem muito pouco. As métricas podem sempre ser adaptadas à necessidade do problema, mas podem também se tornar muito complexas para serem utilizadas na prática. Neste trabalho, utilizamos a métrica F 1 para fitness do indivíduo, que é a média harmônica da precisão e revocação. Mais detalhes sobre essas métricas estão na Seção 4.5.
Ainda, se a base de dados utilizada é muito grande, a fitness dos indivíduos pode ser computada por conjuntos menores da mesma base, economizando tempo de processamento. Outra característica importante desta métrica é ter um alto fator de granularidade, caso contrário, o AG terá pouca informação sobre a qualidade dos indivíduos para guiar a busca. Um caso extremo é utilizar uma fitness que retorne apenas os valores 1 ou 0, correspondente a um indivíduo “bom” ou “ruim”. Neste caso, o algoritmo seria incapaz de selecionar uma melhor solução entre várias boas retornadas.
28 Capítulo 3. AEs para Classificação Tradicional
3.4
Métodos de Seleção
A seleção é responsável por retornar um indivíduo de uma população para o propósito de reprodução. Essa escolha deve dar oportunidade a todos os indivíduos de serem escolhidos, mas privilegiar indivíduos com melhor fitness. Assim, indivíduos melhores terão maior probabilidade de terem suas informações passadas para a próxima geração.
Existem vários métodos de seleção [6], mas aqui destacamos três [37]: a seleção proporcional, a seleção por ranking e por torneio. A seleção proporcional privilegia a escolha dos melhores indivíduos dando a eles um peso proporcional à sua fitness em uma roleta-russa [40]. Assim, cada indivíduo tem uma posição na roleta com viés pro- porcional à sua qualidade na população. A simulação de um giro na roleta é realizada escolhendo um número aleatório sobre a soma total das fitness de todos os indivíduos da população (tamanho da roleta). Apesar de sua simplicidade, esse método tem algu- mas desvantagens [28]. Primeiro, ele só considera indivíduos com fitness positiva. Além disso, ele exige o cálculo da soma da qualidade de todos os indivíduos, penalizando o tempo de execução do algoritmo e dificultando a sua paralelização. Por último, AGs com esse tipo de seleção tendem a convergir muito rápido, já que os melhores indivíduos são muito privilegiados.
A seleção por ranking consiste em dois passos. Primeiramente, todos os indivíduos da população são ranqueados de acordo com a sua fitness. O ranking é montado de forma ascendente se o objetivo é minimizar a fitness ou decrescente se queremos maximizá-la. A seleção do indivíduo é realizada como a seleção proporcional, mas baseada no ranking criado ao invés do valor absoluto da fitness. Com isso, diferenças de magnitude de fitness são intencionalmente descartadas.
Por último, a seleção por torneio consiste em escolher randomicamente k indi- víduos de uma população – onde k é um parâmetro chamado tamanho do torneio – que competem entre si. Esse torneio pode ser determinístico, quando o indivíduo com melhor fitness ganha, ou probabilístico, quando uma roleta-russa é executada apenas para esses k indivíduos.
Ambas as seleções por ranking e por torneio evitam algumas desvantagens da se- leção proporcional. Dependendo dos parâmetros utilizados, essas duas seleções podem até ser aproximadamente equivalentes. Porém, o ranking ainda precisa ser executado sobre todos os indivíduos da população, uma operação de grande custo computacional. Ela pode ser evitada no torneio, onde k é relativamente pequeno em comparação ao tamanho da população. Por essas razões, a seleção por torneio é muito utilizada na literatura, e também será utilizada neste trabalho.
3.5. Operadores 29
3.5
Operadores
As operações genéticas são as responsáveis pela evolução dos indivíduos de uma população entre uma geração e a próxima. Os indivíduos podem ser alterados através de operações visando explorar o espaço de busca a partir de soluções viáveis já encontradas. São vários os tipos de operadores que podem ser implementados para um AG. Neste trabalho, focamos nos tradicionais operadores de cruzamento uniforme e de k pontos, e mutação de k pontos, além de dois operadores específicos para classificação, chamados de generalização e especialização [37].
3.5.1
Cruzamento
Baseando-se na reprodução sexuada dos seres, a operação de cruzamento realiza uma troca de informações entre os cromossomos de dois indivíduos (pais), resultando em outros cromossomos (filhos) com partes das características de cada um dos originais. Existem várias formas de cruzamento na literatura, entre eles o cruzamento de k pontos e o uniforme. Por padrão, dois pais distintos geram dois filhos distintos entre si.
O cruzamento de k pontos escolhe aleatoriamente k pontos nos indivíduos, for- mando k−1 sequências de genes (bits). Cada sequência não consecutiva entre os pontos é cruzada entre os indivíduos. O resultado são dois novos indivíduos que mantém par- tes inteiras de um cromossomo de indivíduos pais. Um exemplo de cruzamento de 2 pontos 2 e 4 (indicados por ||) pode ser visto na Figura 3.5.1.
A 0 0 1 1 0 B 1 0 1 0 0 (a) Pais A e B A’ 0 0 1 0 0 B’ 1 0 1 1 0 (b) Filhos A’ e B’
Figura 3.1. Exemplo de cruzamento entre os pontos 2 e 4 em um AG
O cruzamento de k pontos parece bem natural (ex: k = 1 é utilizado no cru- zamento humano). Caso uma informação esteja codificada em uma sequência de bits do cromossomo, ele tem alta probabilidade de manter esses blocos de bits. Porém, quando os bits são independentes, cada bit deve poder ser variado e essas sequências deixam de ser importantes. Para isso, foi criada a forma de cruzamento chamada uni- forme. O termo uniforme significa que qualquer bit do cromossomo pode ser “cruzado” separadamente. Ou seja, para cada uma das posições do vetor binário (regra) dos indivíduos, uma probabilidade é dada para o cruzamento ou não desse bit. Note que
30 Capítulo 3. AEs para Classificação Tradicional
uma probabilidade muito perto de 0 ou de 1 retorna filhos muito semelhantes aos pais. Enquanto probabilidades próximas a 0.5 geram cromossomos bem variados entre as características de cada pai. Na Figura 3.5.1 é exibido um cruzamento uniforme onde a troca de genes só ocorre nos pontos 1 e 4 do cromossomo.
A 0 0 1 1 0 ↕ ↕ B 1 0 1 0 0 (a) Pais A e B A’ 1 0 1 0 0 B’ 0 0 1 1 0 (b) Filhos A’ e B’
Figura 3.2. Exemplo de cruzamento uniforme em um AG
Neste trabalho, implementamos o cruzamento uniforme, mantendo uma probabi- lidade fixa de cruzamento por bit de 50%.
3.5.2
Mutação
A mutação é uma operação que altera o cromossomo por algum estímulo externo, independente do cromossomo gerador. Diferente do cruzamento, que cria indivíduos baseados nas soluções já encontradas, um indivíduo gerado por mutação pode ser com- pletamente distinto dos já encontrados. Assim, essa operação aumenta a divergência de uma população, podendo evitar a concentração da população em ótimos locais. Como o cruzamento, existe a mutação uniforme e a mutação por pontos.
Na mutação uniforme, assim como no cruzamento, uma probabilidade de mutação é dada para cada um dos bits do cromossomo. Assim, o número de bits mutados é variá- vel, alterando o seu número proporcionalmente com o valor dado para a probabilidade de mutação. Uma probabilidade com valor pequeno cria indivíduos muito semelhante ao original, enquanto uma probabilidade a 1 pode criar um indivíduo completamente distinto.
Uma mutação por k pontos possibilita a variação de exatamente k bits aleatórios no cromossomo. Note que utilizar um k pequeno em relação ao tamanho do cromos- somo é interessante no problema de classificação, já que uma pequena variação pode representar um grande ganho (ou perda) de informação. A Figura 3.5.2 exemplifica uma mutação realizada no quarto gene do cromossomo A, gerando um novo cromos- somo A′.
Neste trabalho implementamos a mutação por um ponto, assim como em [67], pois retorna melhores resultados quando aplicada na representação escolhida do indivíduo
3.5. Operadores 31
A 0 0 1 1 0
↓ A’ 0 0 1 0 0
Figura 3.3. Exemplo de mutação de um ponto em um AG
para o problema de classificação. Quando um número maior de pontos é escolhido (como em uma mutação uniforme), regras muito grandes e complexas eram criadas, além de gerarem piores resultados por terem pouca cobertura.
3.5.3
Especialização e Generalização
Enquanto a maioria dos trabalhos utilizam apenas os operadores tradicionais de cruzamento e mutação descritos anteriormente, operadores específicos para o problema a ser abordado podem ser utilizados visando enriquecer o processo de evolução ou até mesmo acelerá-lo.
Neste trabalho focamos nas operações de especialização e generalização, um tipo especial de operação sobre classificadores muito genéricos ou específicos, respectiva- mente [37]. A aplicação dessas operações assume que temos uma forma de detectar a cobertura de uma solução, visando determinar se uma solução candidata está muito específica ou muito genérica. No contexto de classificação, uma regra é considerada muito específica quando poucos exemplos satisfazem a regra. O inverso representa uma solução genérica, quando muitos exemplos satisfazem a regra, mas essas regras pertencem a um conjunto variado de classes.
Considere um indivíduo representado por uma regra se contém atributo “bola” ou “placar” então “Esporte”. Uma especialização deste indivíduo pode ser feita removendo-se um dos atributos da condição (antecedente) ou alterar o operador ou para e. Isto restringiria o número de exemplos que esta regra seria capaz de cobrir. Enquanto isso, uma generalização pode ser feita adicionando um novo atributo com o operador ou.
Um outro exemplo é a aplicação em uma regra representada por um vetor binário de atributos, onde um exemplo deve conter pelo menos um dos atributos ligados nesse vetor para que seja aceito pela regra. Dado um indivíduo 3.4(a), podemos realizar uma especialização 3.4(b) ligando o segundo atributo do vetor desse indivíduo, ou uma generalização 3.4(c), desligando o quarto atributo do mesmo indivíduo.
Ambas operações especialização e generalização foram implementadas no HCGA, como descrito na Seção 4.7.3.
32 Capítulo 3. AEs para Classificação Tradicional
1 0 0 1 1 0
(a) Ind. original
1 1 0 1 1 0
(b) Ind. mais especifico
1 0 0 0 1 0
(c) Ind. mais geral
Figura 3.4. Exemplos de operações específicas para o problema de classificação sobre um mesmo indivíduo
Tabela 3.1. Resumo dos trabalhos sobre algoritmos evolucionários para classifi- cação tradicional nos últimos anos
Trabalho Abordagem
Pietramala (2008) [67] OlexGA: AG para classificação multi-classe com regras binárias
Chow (2008) [21] AG utilizado em conjunto com SVM e clustering Goldsby (2009) [41] EA com classificação por vários indivíduos (ensemble) Breaban (2009) [11] AG para classificação e seleção de atributos
Vallim (2009) [93] AG com regras para classificação multi-classe
David-Tabibi (2010) [25] AG para seleção de pesos de atributos e classificação Mishra (2011) [63] AG paralelo multi-objetivo para regras de associação
3.6
Trabalhos relacionados
Algoritmos evolucionários já foram bem utilizados na classificação tradicional de várias formas e em diversas aplicações. Porém, não encontramos nenhum AE aplicado ao problema de classificação hierárquica. A Tabela 3.1 lista alguns dos últimos tra- balhos publicados sobre AE, focando principalmente nos trabalhos relacionados à AG. A primeira coluna mostra as referências para cada trabalho, e a segunda apresenta informações sobre a abordagem utilizada no trabalho. Observamos que a utilização de regras e funções matemáticas continua sendo tradicional, e que muitos métodos híbridos ou que alinham seleção de atributos e classificação continuam em alta.
Dentre os trabalhos conhecidos de utilização de AE para classificação, destacamos o OlexGA [67], cuja simplicidade e eficiência foram utilizadas como referência para construção do modelo proposto neste trabalho.
3.6.1
OlexGA
Esta seção descreve a modelagem do algoritmo OlexGA, um algoritmo de re- presentação simples que obtêm resultados relevantes na classificação tradicional de documentos, e cuja representação serviu de inspiração para a modelagem do algoritmo proposto neste trabalho.
3.6. Trabalhos relacionados 33
O OlexGA [67] é uma implementação de um AG para classificação. Ele propõe uma representação de indivíduo bem simples, baseada na presença e ausência de atri- butos para classificar um exemplo de uma determinada classe. Assim, cada indivíduo representa um classificador binário (responde se um documento pertence ou não a uma classe). Apesar da simplicidade da modelagem, o algoritmo teve boa performance em sua aplicação a bases de texto multi-label comparada com vários algoritmos da litera- tura (Naive Bayes, Ripper, C4.5, SVM), chegando a superar os resultados de vários deles.
Primeiramente, o OlexGA propõe a representação de um classificador Hc (solu-
ção) para uma classe c no formato:
Hc(P os, N eg) = (t1 ∈ d ∨ ... ∨ tn∈ d) ∧ ¬(tn+1 ∈ d ∨ ... ∨ tx ∈ d)
onde d é um exemplo com x atributos e cada ti um termo {i ∈ 1, x} de um vocabulário
dado. P os = {t1, ..., tn} e Neg = {tn+1, ..., tx} representam respectivamente o conjunto
de termos positivos utilizados para dar cobertura e o conjunto de termos negativos utilizados para dar precisão sobre conjunto de exemplos de treinamento de c.
Assim, um indivíduo é formato por um vetor binário onde as n primeiras posições