• Nenhum resultado encontrado

Algoritmo de Programação Linear com base na Teoria da Infor-

4.4 Algoritmos de Agrupamento

4.4.3 Algoritmo de Programação Linear com base na Teoria da Infor-

Pelo que foi visto na Seção anterior, podemos unir várias regiões auxiliares para for- mar uma estrutura maior e, a partir daí, construir grupos em um conjunto de dados. A estratégia anterior possui a vantagem de gerar uma árvore que nos mostra as relações hi- erárquicas entre os elementos. Essa estrutura permite mais de uma interpretação e dá a flexibilidade necessária em diversos contextos reais.

Por outro lado, o problema anterior pode ser visto também como uma tarefa de otimi- zação onde precisamos definir que regiões ligar para chegar a uma partição de qualidade. Pode-se verificar isso na forma como a FCA2foi definida:

FCA2= R

i R

j L(i, j)G(i, j)

em que L e G são, respectivamente, a matriz de ligação e o PICr entre as regiões auxiliares. R é o conjunto de pontos representativos ligados durante o processo de agrupamento. Como mostrado na Seção 4.3, em termos de implementação, podemos pensar em uma forma alternativa de enxergar a função, onde L e G formam matrizes que armazenam os valores calculados pelas duas funções anteriores (ligação e PICr). Logo, a matriz L, pode

ser definida da seguinte maneira: L =       l11 l12 ··· l1M l21 l22 ··· l2M ... ... ... ... lM1 lM2 ··· lNM      

em que, li j= l(ci, cj) indica quando os elementos i e j pertencem ou não ao mesmo grupo.

Analogamente, a matriz G é definida como

G =       g11 g12 ··· g1M g21 g22 ··· g2M ... ... ... ... gM1 gM2 ··· gNM      

em que, gi j = PICr(ci, cj). Note que os elementos de L são sempre 0’s e 1’s e os de G

indicam o cálculo do potencial de informação cruzado representativo entre cada par de pontos. Assim, podemos reescrever a equação da FCA como:

FCA2= M

i=1 M

j=1 li jgi j (4.16)

onde, li j e gi j indicam os elementos localizado na linha i e coluna j das matrizes L e G,

respectivamente. Podemos ainda reescrever4.16como,

FCA2= l11g11+ l12g12+ ... + lMMgMM. (4.17)

Note que4.17nos mostra uma combinação linear dos potenciais de informação arma- zenados na matriz G com os respectivos coeficientes definidos pela matriz L. Se o nosso objetivo é minimizar a FCA dadas as matrizes L e G, o problema de agrupamento pode ser caracterizado como um problema de programação linear.

A programação linear (PL) é uma técnica de otimização para uma função objetivo linear, sujeito a restrições de igualdade ou desigualdades lineares. Um algoritmo de pro- gramação linear encontra o ponto do poliedro, onde a função tem seu valor extremo (má- ximo ou mínimo), se tal ponto existir. Em geral, os problemas de PL são expressados na

sua forma

max y = cTx sujeito a Ax ≤ b

e x ≥ 0

em que, x representa o vetor de variáveis (a ser encontrado), b, c e A são vetores coefici- entes (conhecidos). Se as variáveis desconhecidas são obrigatoriamente valores inteiros, o problema passa a ser de programação inteira (PInt).

Programação inteira é o nome dado aos procedimentos para solucionar problemas nos quais as variáveis devem ter apenas valores inteiros. Este tipo de problema ocorre geralmente quando se quer modelar a escolha de certas opções dentre um conjunto finito de alternativas, ou no caso de decisões do tipo sim ou não. Isso quer dizer que as variáveis podem assumir apenas dois valores ou estados, normalmente 0 ou 1, sendo o 0 relacionado à opção negativa (não fazer, ou ausente) e o 1 à opção positiva (fazer, ou presente).

SegundoKorte e Vygen(2012), problemas que envolvem a Programação Inteira são mais difíceis de solucionar do que os de Programação Linear, pois para resolver PLs existem algoritmos de uso geral que são computacionalmente eficientes, como os métodos Simplex (DANTZIG; THAPA,1997), o que não existe para PInts.

O método mais comum para resolver problemas de programação inteira é conhecido como branch-and-bound, que realiza uma enumeração sistemática, geralmente resultando na avaliação de uma pequena fração das alternativas, e dentro de determinadas condições garante encontrar a solução ótima.

O algoritmo branch-and-bound é geralmente usado para a solução de problemas com- binatórios de grande porte com variáveis inteiras. O método consiste na enumeração sis- temática de soluções candidatas, gerando uma árvore de opções e, a cada passo ou ramifi- cação (branching) é resolvido um problema de programação linear com um subconjunto de variáveis, em que a restrição de valor inteiro é relaxada, para se obter os limites supe- rior e inferior (bounds) que a função objetivo pode atingir. Quando é verificado que os limites não podem levar a uma solução melhor do que a anterior, a sequência de geração é interrompida, e o processo retrocede ao passo anterior para que uma nova sequência de geração seja tentada. Nesse caso, todas as opções que incluem aquele valor para a variável podem ser ignoradas, isto é, não precisam ser avaliadas e a árvore é dita podada.

O funcionamento do algoritmo funciona basicamente em dois passos: o primeiro (branching), ramifica a árvore em busca de novas soluções; e o segundo (bounding) define os limites usados para podar a árvore. A convergência do algoritmo é garantida se o tamanho de cada subconjunto de soluções for menor do que o anterior, e o número de soluções para o problema inicial for finito (CLAUSEN,1997).

Durante a ramificação, o algoritmo constrói uma árvore de busca através de repetidas inserções de restrições ao problema. Mais precisamente, nesse passo, o algoritmo escolhe uma variável xi e adiciona a restrição xi= 0 para criar um ramo da árvore e a restrição

xi= 1 para formar o outro ramo. Esse processo pode ser representado por uma árvore

binária, na qual os nós representam as restrições adicionadas. A Figura4.27 ilustra uma árvore binária completa para um problema de três variáveis x1, x2e x3.

Figura 4.27: Árvore binária para três variáveis.

A cada nó, o algoritmo soluciona um problema de PL usando as restrições daquele nó e decide se ramifica a árvore ou se move para outro nó dependendo do resultado. Nesse contexto, para um problema de minimização da função objetivo, existem três possibilida- des:

• Se o problema de PL no corrente nó for inviável ou seu valor ótimo for melhor que o melhor ponto inteiro já encontrado até o momento, o algoritmo remove o nó da árvore e não busca mais nos ramos das subárvores inferiores a esse nó. O algoritmo, então, move para outro nó.

• Se o algoritmo encontra um novo ponto inteiro viável com um valor objetivo menor que o melhor ponto inteiro armazenado, então o algoritmo também remove o nó após atualizar o melhor ponto inteiro e passa para o próximo nó.

• Se PL encontra um ótimo não inteiro cujo valor objetivo é menor que o do melhor ponto inteiro, o algoritmo realiza a ramificação daquele nó.

A solução encontrada pela programação linear em cada nó fornece um limite infe- rior para o problema de programação linear binária inteira. Se a solução encontrada for um vetor binário inteiro, ele fornece um limite superior para o problema de PInt. Para encontrar a solução do problema de programação linear, foi utilizado o método Simplex (WOLSEY,1998).

Com o crescimento da árvore, o algoritmo atualiza os limites inferior e superior ob- tidos durante o passo de bounding para a função objetivo. Esses limites são utilizados como limiar para cortar os ramos desnecessários na árvore.

Se a busca ocorresse por todos os ramos da árvore binária, seria necessário percorrer 2nnós da árvore (n é o número de variáveis), tornando o tempo de execução muito elevado

em muitos caos. Entretanto, geralmente, só uma pequena parte da árvore é percorrida por causa da poda realizada (WOLSEY,1998).

Dessa maneira, podemos definir o problema de agrupamento como um problema de programação inteira, uma vez que o objetivo é ligar ou não regiões auxiliares presentes em um conjunto de dados. Sendo assim, a PInt tem como objetivo otimizar a seguinte função objetivo: max FCA2= M

i M

j li jgi j.

Como as variáveis desconhecidas são os coeficientes da matriz L, o problema passa a ser de programação inteira binária devido à natureza da matriz (composta por zeros e uns). Vale ressaltar que a nossa matriz L indica as ligações entre os elementos do conjunto de dados. Sendo assim, é necessário que se defina alguma restrição relativa ao número de ligações entre as regiões representativas para evitar a solução trivial, ou seja, todos os elementos estarem ligados. Uma restrição básica que não impõe suposições extras sobre o conjunto de dados é definir o número de ligações igual ao número de elementos. Desse modo, o problema de otimização pode ser definido como:

max FCA2= M

i M

j li jgi j. sujeito a

M i M

j li j = M − k

com essa restrição, não existe um controle exato sobre o número de grupos gerados. Se k > 0, a restrição indica um número mínimo de grupos, mas não é possível afirmar quantos grupos serão criados ao final. Se k = 0, então, ainda é possível que o algoritmo produza uma partição contendo somente um único grupo, ou seja, a solução trivial. No entanto, se o número de regiões auxiliares for corretamente escolhido, é muito mais provável que ligações redundantes dentro de um grupo sejam formadas do que entre eles.

A Figura4.28mostra uma partição produzida pelo algoritmo de produção linear uti- lizando a restrição definida anteriormente. Note que, pelo fato de o PICr ser uma medida de entropia, ele deve gerar valores altos para regiões auxiliares que estão em um mesmo grupo, pois, supostamente, elas compartilham alguma propriedades estatísticas.

−2 0 2 4 6 8 10 12 0 2 4 6 8 10 off 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Figura 4.28: Exemplo de solução produzida pelo algoritmo de progração linear.

Esse método traz duas grandes vantagens: ele assegura que a partição final é aquela que maximiza a função custo utilizada e dá a possibilidade de não ser necessário informar o número de grupos desejados. Ao invés disso, os grupos são definidos pelo conjunto de regiões auxiliares ligadas.

4.5

Considerações Finais

Neste capítulo foi possível conhecer o trabalho desenvolvido nesta tese. A proposição de uma nova medida baseada no potencial de informação cruzado (PICr) foi motivada pelas vantagens no uso de descritores teóricos da informação no contexto de agrupamento, mas que possuem restrições relacionadas a operacionalização.

poderosa ferramenta para ser usada na análise de agrupamentos. As principais vantagens do PICr são a redução do custo computacional relativo ao tempo de execução e o uso da estatística embutida nos dados para guiar o processo de agrupamento.

Três algoritmos de agrupamento foram propostos com o objetivo de usar as funções custo de agrupamento (FCAs) desenvolvidas com base no PICr. A natureza dos três algoritmos são completamente diferentes mostrando a flexibilidade do uso das medidas no contexto de agrupamento.

Para testar todos os algoritmos, experimentos foram realizados usando dados de pro- blemas artificiais e reais. No próximo capítulo serão dados os detalhes referentes a esses experimentos.

Material e Métodos

Neste capítulo é descrita a metodologia experimental usada para avaliar o trabalho desenvolvido. Primeiro, são descritos os conjuntos de dados usados durante os experi- mentos realizados. Para tanto, foram selecionados da literatura alguns conjuntos de dados sintéticos e reais. Adicionalmente, foram construídas algumas bases de dados artificiais para aumentar a abrangência de testes do trabalho.

O objetivo é avaliar a aplicação das medidas propostas e a eficiência dos algoritmos em situações controladas. Além disso, a usabilidade prática do método é testada em situações reais de agrupamento, como segmentação de imagens, bioinformática e reco- nhecimento de padrões.

A metodologia dos experimentos consiste em uma análise comparativa entre o tra- balho desenvolvido e os algoritmos mais utilizados na literatura. A comparação é feita em termos de recuperação da estrutura real dos dados medida com o uso de um índice externo.

5.1

Conjuntos de Dados

Com o objetivo de verificar a aplicabilidade e eficiência das medidas e algoritmos propostos, conjuntos de dados de áreas distintas foram selecionados e submetidos ao seu funcionamento de forma controlada, ou seja, bases de dados onde temos acesso aos ró- tulos de cada exemplo presente nelas. Isso é fundamental em um estudo de análise de agrupamento que, apesar de não usar essas informações durante o seu processo, elas são fundamentais para que seja possível a avaliação das técnicas.

cenários possíveis. Esses dados representam situações distintas no contexto de agrupa- mento, sendo usados por vários outros trabalhos na literatura de agrupamento. Além disso, dados de problemas reais referentes a aplicações como segmentação de imagens e bioinformática foram retirados de repositórios conhecidos para serem submetidos aos testes.