• Nenhum resultado encontrado

4. ESTRATÉGIAS PARA OTIMIZAÇÃO DE META-HEURÍSTICAS E O MÉTODO

4.3 ESTRATÉGIA DE CORRIDA

Em Maron e Moore (1994), os autores propõem o método Hoeffding race para acelerar a seleção de modelos em problemas na Aprendizagem Supervisionada10. O interesse principal é selecionar os melhores parâmetros estruturais para um método baseado em memória. A

10 Técnica de Inteligência Artificial em que um sistema deve ser capaz de medir a diferença entre seu comportamento e o comportamento de referência e, se necessário, aplicar correções para reduzir a diferença.

ideia original (MARON, 1994) emprega como medida de desempenho o erro quadrático médio11 computado por meio do método de validação cruzada leave-one-out, um método computacionalmente muito dispendioso que consiste em dividir um conjunto de dados em n subconjuntos mutuamente exclusivos de mesmo tamanho para utilizá-los na estimação dos parâmetros de um modelo. Em síntese, a validação leave-one-out é um método para avaliar a capacidade de generalização de um modelo, a partir de n exemplares de um conjunto de dados.

Por outro lado, as abordagens baseadas em memória representam uma boa alternativa, uma vez que não envolvem treinamentos e o tempo de computação necessário para realizar n previsões, cada uma com base em um conjunto diferente de exemplares, equivale ao tempo total para a realização de n previsões, com base em um único exemplar. Nesse contexto, a principal ideia introduzida pelo método Hoeffding race é que a busca pela melhor estrutura de modelo pode ser acelerada, descartando os candidatos de qualidade inferior assim que evidências suficientes são reunidas contra eles. Esta ideia caracteriza o método de Corrida (BIRATTARI, 2009).

A validação leave-one-out relativa ao candidato genérico pode ser realizada incrementalmente. Isto é, a média de n erros quadráticos, sendo cada média relacionada a n exemplares do conjunto de dados. Essa quantidade pode ser aproximada pela média calculada em qualquer subconjunto desses erros (BIRATTARI, 2009). Deve-se observar que, independente do tamanho da amostra, a média calculada nessa amostra é uma estimativa sem tendência do erro quadrático médio e que sua variação diminui com o aumento do tamanho da amostra. À medida que o cálculo prossegue, a estimativa da medida leave-one-out para os candidatos fica mais refinada e um teste estatístico de hipótese pode ser adotado para decidir se a diferença observada nas estimativas é significativa. Em caso positivo, os candidatos de qualidade inferior são descartados da corrida e não serão mais avaliados nos ciclos subsequentes.

O método Hoeffding race original adota um teste estatístico baseado na fórmula de Hoeffding (1963) relativa à confiança na média empírica de n números positivos, amostrados de forma independente a partir da mesma distribuição, quando o limite superior da variável aleatória é conhecido.

11 Erro quadrático médio (em Inglês, Mean Squared Error - MSE) corresponde à média da diferença entre uma estimativa (i) e seu valor real observado (yi) elevada ao quadrado, isto é, = 1

(yiyˆi)2

n

MSE , em

O algoritmo Hoeffding race inicia com um conjunto de candidatos e procede considerando iterativamente os exemplares de um dado conjunto de dados de tamanho n. No passo k do processo iterativo, o k-ésimo exemplar do conjunto de dados é considerado e todos os candidatos na corrida são usados para prever a saída. Para um candidato genérico, o erro é usado para atualizar a estimativa leave-one-out do erro quadrático médio. Ao completar o passo k, todos os candidatos com um limite inferior abaixo do limite superior do melhor candidato até o momento são eliminados da corrida e deixam de ser considerados em futuras avaliações. A medida que a avaliação dos candidatos sobreviventes prossegue e mais exemplares são considerados no procedimento leave-one-out, os intervalos em torno das estimativas empíricas ficam mais precisos e o processo de seleção se torna mais refinado. A quantidade de computação envolvida no método Hoeffding race é ilustrada na Figura 17, isto é, à medida que o número de exemplares aumenta, a quantidade de configurações candidatas é reduzida.

Figura 17 - Representação gráfica da quantidade de computação envolvida no método Hoeffding race.

Fonte: (BIRATTARI, 2009), adaptado pelo autor.

A ideia subjacente as abordagens de Corrida é muito atraente e, originalmente, foram propostos alguns algoritmos baseados em diferentes testes estatísticos (MOORE e LEE, 1994). Dentre eles, destaca-se o BRACE, um algoritmo baseado em estatística Bayesiana que implementa uma técnica estatística conhecida como blocos (BOX et al., 1978; DEAN e VOSS, 1999; MONTGOMERY, 2012). Um planejamento experimental em blocos, em geral, é adotado quando dois ou mais candidatos são comparados, pois melhora a precisão com a qual as comparações são realizadas. Um bloco é um conjunto de condições experimentais

relativamente homogêneas em que todos os candidatos são testados. No contexto da seleção do melhor candidato a partir da validação leave-one-out, a adoção de blocos é simples e natural: cada candidato sobrevivente é testado nos mesmos exemplares e cada exemplar é considerado um bloco.

Durante um ciclo do algoritmo BRACE são estimados incrementalmente o valor médio e a variância do desempenho de cada par de candidatos na corrida. Com base nestas estimativas, um conjunto de testes estatísticos é executado a cada ciclo para verificar se algum candidato é significativamente pior do que qualquer outro. Em caso positivo, o candidato de qualidade inferior é descartado da corrida. O teste estatístico adotado no BRACE é equivalente ao teste de hipóteses t-Student em pares (SHESKIN, 2000), realizado em cada par de candidatos sobreviventes. Diferente do teste adotado no método Hoeffding race, o t-Student é um procedimento paramétrico, que se baseia em algumas premissas em relação às variáveis estocásticas envolvidas. Por exemplo, as estimativas de desempenho computadas são normalmente distribuídas. O BRACE provou ser eficaz e capaz de atingir resultados melhores do que o Hoeffding race (MARON e MOORE, 1997; MOORE e LEE, 1994).

Deve-se observar que o método Hoeffding race adota um teste estatístico não paramétrico, que exige conhecimento a priori de um limite sobre o erro observado e, por isso, reduz significativamente a aplicabilidade do método. Por outro lado, o BRACE prova que a adoção de planejamento em blocos é particularmente eficaz em ambientes de corrida. No entanto, para incluir esse recurso, os autores adotam um teste estatístico paramétrico, cuja aplicabilidade é limitada pela hipótese de que as estimativas envolvidas devem ser normalmente distribuídas.

4.3.1 Algoritmo de Corrida

Os Algoritmos de Corrida (em Inglês, Racing Algorithms) são inspirados no método Hoeffding race introduzido por Maron e Moore (1994) para resolver o problema de seleção de modelos em Aprendizado de Máquina12.

A ideia principal subjacente à abordagem de Corrida é que a avaliação do desempenho de cada configuração candidata pode ser realizada de maneira incremental, considerando-se que os exemplares de um problema surgem sequencialmente em um fluxo de exemplares e

12 Subcampo da Inteligência Artificial dedicado ao desenvolvimento de algoritmos e técnicas que permitam ao computador aperfeiçoar o desempenho em alguma atividade.

que cada configuração candidata da meta-heurística é executada uma única vez sobre um exemplar. Este procedimento garante a menor variância possível para a estimativa de desempenho (BIRATTARI, 2009).

Em um algoritmo de Corrida a estimativa de desempenho de um exemplar é obtida com base em todos os outros exemplares. A variância dessa sequência de estimativas diminui na ordem de 1/n e, consequentemente, a estimativa do desempenho de uma configuração candidata se torna mais confiável à medida que n cresce e converge para o verdadeiro valor médio de desempenho esperado.

Dada a possibilidade de estabelecer uma sequência de estimativas para cada configuração candidata, o algoritmo de Corrida pode ser definido como aquele que calcula de maneira incremental e em paralelo tais sequências para todas as configurações candidatas. Assim que são obtidas evidências suficientes de que a estimativa de um determinado candidato é pior do que todas as demais, ele é descartado das avaliações futuras.

Um algoritmo de Corrida, portanto, gera uma sequência de conjuntos aninhados de configurações candidatas:

S0 ⊇ S1 ⊇ S2 ⊇ ...,

sendo que o conjunto inicial é igual à totalidade de configurações candidatas, isto é, S0 = S. A cada ciclo é possível descartar algumas configurações que parecem ser subótimas com base na informação disponível de ciclos anteriores.

Em uma etapa k do ciclo iterativo, o conjunto de configurações candidatas na corrida é Sk-1 e um novo exemplar ek é considerado. Cada candidato s' ∈ Sk-1 é testado sobre o exemplar e seu desempenho adicionado ao respectivo vetor de desempenhos para formar um conjunto de vetores, cada um pertencente a uma configuração candidata. Ao final do ciclo k é definido um novo conjunto de configurações candidatas Sk a partir da retirada de uma ou mais configurações subótimas, com base em um teste estatístico que compara todos os desempenhos dos candidatos entre si. O procedimento descrito é iterado até que todas as configurações exceto uma são descartadas ou quando um número máximo de experimentos é alcançado. O pseudocódigo de um algoritmo de Corrida é apresentado na Figura 18.

Figura 18 - Pseudocódigo de um algoritmo de Corrida. Entrada: S0 // Configurações candidatas

Saída : S* // Melhor configuração encontrada

1. S ← S0; // Configurações candidatas sobreviventes 2. C ← {}; // Desempenho das configurações candidatas 3. Repetir

4. e ← criarExemplar();

5. // Avaliar o desempenho de cada configuração candidata com o exemplar "e" 6. Para s' ∈ S Faça

7. C ← C ∪ avaliar(s', e); 8. Fim Para;

9. F ← testeEstatístico(C); // coletar estatísticas 10. // Selecionar configurações candidatas sobreviventes 11. S ← selecionarElite(s', C, F);

12. Até atingir um critério de parada; 13. S*

← identificarMelhor(S); 14. Retornar S*

;

A aparente vantagem da abordagem de Corrida em relação a de força bruta é que os algoritmos de Corrida permitem alocar melhor os recursos computacionais para as configurações candidatas. Isto é, ao invés de desperdiçar tempo computacional para estimar com precisão o desempenho de candidatos de qualidade inferior, a abordagem de Corrida foca nos candidatos mais promissores e obtém estimativas de variância de desempenho mais baixas para estes últimos. Esta característica garante uma seleção mais precisa do melhor candidato. Uma comparação entre ambas abordagens pode ser observada na Figura 19.

Figura 19 - Representação gráfica da quantidade de computação envolvida pelas abordagens de Corrida (área sombreada) e de força bruta (área tracejada).

Fonte: (BIRATTARI, 2009), adaptado pelo autor.

Em síntese, na abordagem de Corrida, um candidato é descartado assim que há evidências de que ele não é o melhor, ao passo que a abordagem de força-bruta testa todos os candidatos no mesmo número de instâncias.

Durante a corrida são mantidas algumas estatísticas dos resultados obtidos pelos candidatos sobreviventes (MENDENHALL et al., 2008). A quantidade de informação armazenada depende do teste estatístico utilizado para determinar se as diferenças observadas no desempenho dos candidatos é ou não significativa. No pior caso, todos os resultados observados serão armazenados para os candidatos sobreviventes. O requisito de memória para uma abordagem de Corrida é, portanto, limitada por M vezes a quantidade de memória necessária para armazenar o custo da solução encontrada em uma única execução da meta-heurística.

Uma variedade de testes estatísticos pode ser considerada na implementação de um algoritmo de Corrida (BIRATTARI et al., 2009). Por exemplo, o teste estatístico clássico t-Student e a correlação de Bonferroni foram adotados nos algoritmos tNo-Race e tBo-Race, respectivamente. O algoritmo F-Race (BIRATTARI et al., 2002) é baseado no teste estatístico de Friedman, um teste não paramétrico que emprega o conceito de blocos e validações pós testes para detectar a significância dos resultados.

O F-Race é um algoritmo de Corrida inspirado nas principais características dos algoritmos Hoeffding race e BRACE, que são a abordagem estatística não paramétrica e a técnica estatística de blocos, respectivamente. O teste de Friedman adotado pelo algoritmo considera a estatística de Conover (1999). Para uma breve descrição do teste, assume-se que o

algoritmo alcançou uma etapa k do ciclo iterativo e que existem k-1 configurações candidatas na corrida. No teste de Friedman, os desempenhos das configurações são realizações de variáveis aleatórias mutuamente independentes, denominadas blocos. Cada bloco corresponde aos resultados computacionais obtidos num exemplar por cada configuração na corrida até a etapa k. Os resultados são classificados em ordem crescente dentro de cada bloco e o teste de Friedman é então aplicado. Se o valor do teste excede um nível de significância α, então a hipótese nula é rejeitada e há evidências de que, pelo menos, uma configuração candidata tem melhor desempenho. As análises prosseguem com comparações entre pares de candidatos a fim de descartar aqueles com os piores desempenhos. As configurações descartadas deixam de participar das etapas futuras da corrida e o procedimento segue até restarem dois candidatos na corrida. Nesse caso, os candidatos restantes são analisados com o teste de Wilcoxon (CONOVER, 1999), uma vez que este se revelou mais robusto e eficiente quando restam apenas duas configurações candidatas (BIRATTARI, 2009).

4.3.2 Teste Estatístico de Friedman

Procedimentos estatísticos não paramétricos são indicados nas análises de dados de baixa qualidade, em geral, provenientes de pequenas amostras sobre as quais pouco ou nada se sabe referente à sua distribuição.

Frequentemente, na comparação de duas ou mais amostras, o interesse é detectar diferenças dentre os grupos. Na estatística não paramétrica, o procedimento mais conhecido para analisar essas diferenças é o teste estatístico de Friedman. A estatística de Friedman é um teste não paramétrico análogo à ANOVA (Seção 2.4.1), cujo objetivo é determinar a partir de pequenas amostras se existem diferenças entre os efeitos dos grupos analisados (GARCIA et al., 2010).

O primeiro passo para o cálculo do teste de Friedman é estabelecer uma correspondência entre os resultados originais das amostras e sua classificação. Por exemplo, na Tabela 4 são apresentados resultados ilustrativos dos desempenhos de quatro algoritmos (M) sobre 10 exemplares diferentes de um problema. Os desempenhos de cada algoritmos são classificados separadamente por exemplar, isto é, em blocos, de forma que o melhor desempenho de um bloco tem a classificação 1, o segundo melhor tem a classificação 2, e assim sucessivamente. Em caso de empates, são calculados os valores médios das classificações.

Tabela 4 - Desempenho de quatro algoritmos (M) sobre dez exemplares diferentes de um problema.

Exemplar M1 (ri1) M2 (ri2) M3 (ri3) M4 (ri4)

1 0,000 (1) 0,330 (2) 0,665 (4) 0,628 (3) 2 0,068 (1) 0,686 (2) 0,878 (4) 0,850 (3) 3 0,561 (2) 0,662 (3) 0,726 (4) 0,199 (1) 4 0,216 (1) 0,232 (3) 0,231 (2) 0,544 (4) 5 0,884 (3) 0,308 (1,5) 0,308 (1,5) 0,933 (4) 6 0,215 (1) 0,313 (3) 0,362 (4) 0,292 (2) 7 0,332 (1) 0,483 (2) 0,566 (3) 0,594 (4) 8 0,269 (1) 0,502 (3) 0,437 (2) 0,633 (4) 9 0,044 (1) 0,918 (4) 0,405 (2) 0,482 (3) 10 0,128 (1,5) 0,415 (4) 0,281 (3) 0,128 (1,5) Rj 1,35 2,75 2,95 2,95 Seja j i

r a classificação do j-ésimo algoritmo sobre o i-ésimo exemplar de um conjunto com n exemplares de um problema e =

j

i

j r

n

R 1

, o valor médio das classificações. Sob a hipótese nula, que estabelece que todos os algoritmos se comportam de maneira semelhante e, portanto suas classificações médias Rj devem ser iguais, o teste estatístico de Friedman é:

      + − + =

4 ) 1 ( ) 1 ( 12 2 2 k k R k k n T j , (16)

distribuído de acordo com χ2, isto é, a distribuição de probabilidades chi-quadrado, com k-1 graus de liberdade, quando n e k são grandes o suficiente, por exemplo n maior que 10 e k maior que 5.

Os valores médios das classificações (Tabela 4) oferecem informações úteis sobre o desempenho de cada algoritmo, ou seja, na média M1 (1,35) é melhor, M2 (2,75) é o segundo melhor, enquanto que M3 (2,95) e M4 (2,95) são o terceiro e quarto melhores com a mesma classificação, respectivamente. O teste de Friedman comprova se as medidas de classificações médias são significativamente diferentes de Rj = 2,5, esperado sob a hipótese nula. Com a aplicação de (16), T = 10,74 e, considerando os quatro algoritmos sobre 10 exemplares, T é distribuído de acordo com a distribuição χ2 com 4-1 = 3 graus de liberdade. Uma vez que o valor-p (em Inglês, p-value) computado com a distribuição 2

3

χ (10,74) ≅ 0,01 e p < α, em que usualmente α = 0,05, concluí-se que a hipótese nula é rejeitada com alto grau de significância e, portanto, há diferenças entre os resultados analisados. Em testes estatísticos de hipóteses, o

valor-p corresponde à probabilidade de se obter um resultado, pelo menos, tão extremo como o que foi observado, assumindo que a hipótese nula é verdadeira. O valor-p fornece informações sobre a significância de um teste de hipóteses e, também, indica o quanto um resultado é significativo. Em geral, quanto menor o valor-p, mais forte a evidência contra a hipótese nula.

Se a hipótese nula for rejeitada, pode-se prosseguir as análises com um teste post hoc complementar. Em geral, o objetivo é comparar uma amostra, denominada controle, com outras amostras consideradas no estudo e decidir quais são significantemente diferentes das outras. A estatística do teste para comparações das amostras em pares depende do procedimento não paramétrico utilizado. Em (GARCIA et al., 2010) a expressão adotada para o teste de Friedman é: n k k R R z i j 6 ) 1 ( ) ( − + = , (17)

em que Ri e Rj são as classificações médias obtidas com o teste de Friedman para duas amostras comparadas.