Pesquisa Operacional e o Desenvolvimento Sustentável 27 a 30/09/05, Gramado, RS PREVISÃO DE SÉRIES TEMPORAIS UTILIZANDO PROGRAMAÇÃO GENÉTICA E COMBINAÇÃO DE PREDITORES Luzia Vidal de Souza Programa de Pós Graduação em Métodos Numéricos em Engenharia Departamento de Desenho – Universidade Federal do Paraná (UFPR) Caixa Postal 19081 – 81531-990 – Curitiba – PR – Brasil [email protected] Aurora Trinidad Ramirez Pozo Departamento de Informática – Universidade Federal do Paraná (UFPR) Caixa Postal 19081 – 81531-990 – Curitiba – PR – Brasil [email protected] Eduardo Oliveira Costa Departamento de Informática – Universidade Federal do Paraná (UFPR) Caixa Postal 19081 – 81531-990 – Curitiba – PR – Brasil [email protected] Resumo: A técnica de programação genética tem se mostrado bastante promissora na previsão de séries temporais. Neste artigo alguns experimentos são realizados com diferentes séries temporais e resultados comparados a métodos estatísticos tradicionais. Uma metodologia de previsão no conjunto dos resíduos é proposta. Os resultados mostram que, em geral, a PG apresenta erros de predição menores quando comparada aos métodos tradicionais. Com o objetivo de aperfeiçoar ainda mais sua eficácia uma primeira análise é realizada utilizando uma combinação de preditores de Programação Genética e com a implementação da metodologia proposta. Palavras-chave: Programação Genética, Previsão, Séries Temporais Abstract: The technique of genetic programming it has shown sufficiently promising in the forecast of time series. In this article some experiments are carried through with different time series and comparative results the traditional statistical methods. A methodology of forecast in the set of the residues is proposal. The results show that, in general, the PG presents lesser errors of prediction when compared with the traditional methods. With the objective to perfect still more its effectiveness a first analysis is carried through using a combination of preditores of Genetic Programming and with the implementation of the methodology proposal. Key-words: Genetic Programming, Prediction, Time Series 1. Introdução Em diversas áreas, como nas Ciências Econômicas, Engenharia e Ciências Naturais, ocorrem fenômenos que dependem da observação de dados em determinado intervalo regular de tempo. Estes dados observados no tempo chamam-se séries temporais. São muitas as técnicas disponíveis para analisar tais observações, sendo que o maior desafio de tais técnicas é construir um modelo com o menor número de parâmetros possível, de forma a obter previsões confiáveis e eficientes nos valores de previsão obtidos. A obtenção de tais previsões tem bastante utilidade, podendo-se citar: a minimização de prejuízos causados por enchentes ou terremotos, uma melhor taxa de retorno de investimento de aplicações financeiras, adequação da produção de dado produto de acordo com a demanda do mercado. Recentemente a utilização das técnicas de Inteligência Artificial vêm sendo estudadas com o objetivo de se efetuar previsões mais precisas. Estudos em Redes Neurais Artificias (RNA), Computação Proceedings of the XII SIBGRAPI (October 1999) 101-104 27 a 30/09/05, Gramado, RS Pesquisa Operacional e o Desenvolvimento Sustentável Evolucionária (CE), Programação Genética (PG) apresentam resultados bastante promissores [1][2][3][4][5]. Em geral as técnicas da Inteligência Artificial apresentam erros de predição bem menores que os obtidos pelos métodos tradicionais. O objetivo deste trabalho é o aprimoramento da eficácia da previsão de séries temporais, utilizando uma combinação de preditores associada à técnica da programação genética. O presente trabalho está organizado da seguinte maneira: a seção 2 apresenta uma breve introdução sobre Séries Temporais. A seção 3 contém os conceitos de programação genética. Na seção 4, são apresentadas algumas noções sobre combinação de preditores. Na seção 5 são apresentados os experimentos realizados e os resultados obtidos. Na seção 6, são apresentadas as conclusões e trabalhos futuros. 2. Séries Temporais Uma série temporal é um conjunto {x1, x2, ..., xn} de observações ordenadas no tempo. Podemos citar como exemplos de séries temporais o consumo mensal de energia elétrica de uma residência; valores mensais de vendas de veículos no Brasil; índices diários de bolsa de valores. A análise de séries temporais visa identificar características, padrões e propriedades relevantes na série, porém o principal objetivo da análise de séries temporais é a previsão. Dentre os métodos tradicionais mais utilizados destacam-se os modelos ARMA (Autoregressivos e de Médias Móveis). Tais modelos são representados pela expressão: Z t = φ1 Z t −1 + φ 2 Z t − 2 + ... + φ p Z t − p − θ1 a t −1 − θ 2 a t − 2 − ... − θ q a t − q + a t (1) Onde: Zt corresponde à observação da série temporal no tempo t; φp corresponde ao parâmetro auto-regressivo do modelo (AR) de ordem p; θq corresponde ao parâmetro do modelo de médias móveis (MA) de ordem q, at é o erro de eventos aleatórios que não podem ser explicados pelo modelo. Os modelos ARMA relacionam os valores futuros com as observações passadas, assim como também com os erros passados apurados entre os valores reais e os previstos. É necessário identificar os parâmetros desse modelo. Os parâmetros do processo Autoregressivo (AR) são estimados através de métodos de regressão. Caso exista o processo de Médias Móveis (MA), os parâmetros são estimados através da aplicação de algoritmos de programação não linear, por exemplo, o algoritmo de Mínimos Quadrados não Lineares, o que não é uma tarefa trivial. Um modelo de uma série temporal assume que os valores passados ocorrerão no futuro. O erro de previsão é dado pela diferença entre o valor real da série e o valor que foi previsto pelo modelo at = Z t − Zˆ t (2) Para avaliar o desempenho de um modelo de previsão, é necessário utilizar uma medida de erro. O que se deseja obter é um modelo que minimize a soma total dos erros. Neste trabalho será utilizada a medida de erro denominada RMSE (Raiz do Erro Quadrático Médio), determinada por: N RMSE = ∑ (x − xˆ i ) 2 i I =1 n (3) Onde xi é o valor observado na série no instante i; x̂ i é o valor previsto no instante i; n é o número de previsões efetuadas 3. Programação Genética A Programação Genética é uma das técnicas da Computação Evolucionária na qual os indivíduos são programas computacionais. Sua teoria foi desenvolvida por John Koza [6], e está baseada no princípio da Evolução de Darwin, na qual sobrevivem os indivíduos que possuem maior capacidade de se adaptarem ao meio ambiente. A carga genética destes indivíduos será repassada aos seus descendentes e 816 Pesquisa Operacional e o Desenvolvimento Sustentável 27 a 30/09/05, Gramado, RS sofrerá modificações com o objetivo de melhor se ajustar ao meio, o resultado é que ao final de muitas gerações, obter-se-á uma população de indivíduos com características naturalmente selecionadas, ocorrendo desta forma uma evolução natural dos programas computacionais. Na Programação Genética, o algoritmo evolutivo opera numa população de programas computacionais que variam de forma e tamanho [7]. Esta população de indivíduos será evoluída de modo a gerar uma nova população constituída por indivíduos melhores, utilizando operadores de reprodução, cruzamento e mutação. O processo é guiado por uma função de adaptação (fitness) que mede o quanto o indivíduo está próximo da solução do problema. Indivíduos que possuem maior capacidade de adaptação têm melhores chances de sobreviver. A Programação Genética vem sendo aplicada em diversas áreas do conhecimento, como Engenharia de Software, Circuitos Digitais, Mineração de Dados e outras [6]. Inicialmente cria-se uma população inicial aleatoriamente, baseado nesta população o algoritmo irá criar novas populações até encontrar a solução desejada. Esta população deverá ter uma diversidade suficientemente grande para que se encontre nos indivíduos todas as características que sejam necessárias para solucionar o problema, pois as características não existentes na população inicial não aparecem durante o processo evolutivo. Numa segunda etapa a população é avaliada, para isso é associado a cada indivíduo um valor de aptidão (fitness) que indicará o quão próximo da solução o indivíduo se encontra. A definição desta função de aptidão varia de acordo com o problema em questão. Após a população ter sido avaliada, os indivíduos com melhores valores de fitness são selecionados para que a eles sejam aplicados os operadores genéticos (mutação, reprodução e cruzamento). Vários métodos são utilizados para efetuar esta seleção, estes métodos serão descritos na seção (3.1.4). A este subgrupo selecionado são aplicados os operadores genéticos e estes indivíduos irão compor a nova população. O algoritmo continua até que um critério de parada seja atingido. A seguir serão descritos os elementos que compõem a programação genética 3.1 Elementos da Programação Genética Nesta seção serão apresentados os conceitos básicos para a utilização da técnica da programação genética. 3.1.1 Estrutura dos Programas Na Programação Genética, os indivíduos são representados por árvores de sintaxe, ou seja, são formados por uma combinação dos conjuntos de Funções e Terminais, de acordo com o domínio do problema. No conjunto F, são definidos os operadores aritméticos, funções matemáticas, operadores lógicos, entre outros. O conjunto T é composto pelas variáveis e constantes. Como exemplo, pode-se citar: F = {+, -, *, /} e T = { x, y}. Um programa resultante da combinação destes dois conjuntos, pode ser: (+( * x x) y) que representa a expressão: x2 + y A escolha dos conjuntos F e T influenciam, consideravelmente, na solução apresentada pela Programação Genética. Se no conjunto F houver poucos operadores disponíveis, a Programação Genética provavelmente não apresentará uma boa solução para o problema, por outro lado, ao se disponibilizar muitas operações, o programa poderá ficar extenso, provocando esforço computacional maior do que o necessário. O espaço de busca é constituído por todas as árvores que possam ser construídas pela combinação dos conjuntos F e T. Para garantir que as soluções representadas sejam viáveis é necessário que duas propriedades sejam garantidas, Fechamento (closure) e suficiência (sufficiency) [6]. A propriedade do Fechamento garante que qualquer função do conjunto F deve ser capaz de operar com todos os valores recebidos como entrada. Isso garante que sejam geradas árvores sintaticamente viáveis. 817 Pesquisa Operacional e o Desenvolvimento Sustentável 27 a 30/09/05, Gramado, RS A propriedade da suficiência garante a convergência do sistema. A propriedade diz que os conjuntos F de funções e T de terminais, devem ser capazes de representar uma solução viável para o problema em questão. 3.1.2 População O primeiro passo na inicialização de um PG é definir a população inicial, isto significa criar uma população de estruturas, ou programas que serão usados para a evolução. Um dos principais parâmetros da Programação Genética é o tamanho máximo permitido para um programa, isto é definido como a profundidade máxima da árvore, ou seja, o número máximo de nós na árvore. A máxima profundidade da árvore é a maior profundidade que será permitida entre a raiz e todos os nós terminais de um mesmo indivíduo [8]. A profundidade de um nó em uma árvore é a distância do nó raiz até o nó n. A estrutura de árvore é construída a partir dos conjuntos F e T, desde que sejam garantidas as propriedades acima citadas. Existem vários métodos para inicializar uma população em estrutura de árvores, os mais comuns são [9]: Full - escolhe funções do conjunto F, até que um nó de profundidade máxima seja selecionado, então ele passa a escolher somente terminais [10]. O resultado disso é que cada árvore atinge a profundidade máxima; Grow – os nós são selecionados aleatoriamente dos conjuntos F e T (exceto para a raiz que é retirada do conjunto F), por este motivo o método produz árvores de formatos irregulares. Se uma ramificação contém um nó terminal, esta ramificação pára, mesmo que a profundidade máxima não tenha sido atingida; ramped-half-and-half [6], que é uma combinação dos métodos Full e Grow - utiliza o método Full em 50% das vezes e o método Grow nas outras 50%, tem por objetivo gerar um número igual de árvores para cada profundidade [6]. 3.1.3 Função de Aptidão (Fitness) A função de aptidão é a medida utilizada pela Programação Genética durante o processo de evolução, que irá dizer quão bem o programa aprendeu a predizer as saídas dentro de um processo de aprendizagem [10]. A definição desta função é feita de acordo com o domínio do problema em questão. Uma boa escolha da função de aptidão pode ser responsável pelo bom funcionamento do algoritmo da programação genética, especificamente, no caso de séries temporais, pode-se utilizar como função de aptidão, a função que mede o erro calculado entre o valor previsto e o valor real, como por exemplo o erro médio quadrático, ou a raiz quadrada do erro médio quadrático (RMSE), que é a medida utilizada neste trabalho. Quanto menor for o erro obtido, melhor será o ajuste do modelo de previsão. O que se deseja portanto, é minimizar a função de aptidão. 3.1.4 Seleção Para selecionar quais indivíduos da população farão parte de uma nova geração e quais deles sofrerão mudanças através dos operadores genéticos (cruzamento, mutação e reprodução), é necessário que se tenha um critério de seleção que garanta que uma boa escolha seja realizada. Existem vários métodos de seleção, os principais serão descritos a seguir [6]: • Método da Roleta: cada indivíduo possui uma probabilidade de ser escolhido de acordo com seu valor fitness. Assim, os melhores indivíduos possuem maiores chances de serem escolhidos para a nova geração. • Torneio: um certo número de indivíduos é selecionado aleatoriamente (tamanho do torneio) e então é realizada uma competição seletiva. As características dos melhores indivíduos no torneio são substituídas pelas características dos piores indivíduos. No menor torneio possível, é permitido que dois indivíduos participem da reprodução com mutação. O resultado da reprodução retorna à população, substituindo o perdedor do torneio [10]. 818 27 a 30/09/05, Gramado, RS Pesquisa Operacional e o Desenvolvimento Sustentável • Seleção Proporcional: especifica a probabilidade de que cada indivíduo seja selecionado para a próxima geração. Para o indivíduo i a probabilidade de ser selecionado para a próxima geração é dada pela equação (4): pi = fi ( 4) n ∑f j j =1 onde fi é um indivíduo na população e n é o número total de indivíduos da população. 3.1.5 Operadores Genéticos Após ter sido aplicado um método de seleção adequado, os indivíduos selecionados serão submetidos aos operadores genéticos, para gerar a nova população. Diversos operadores genéticos foram criados, os mais utilizados são [6]: mutação, cruzamento e reprodução, que serão descritos a seguir: • Mutação: seleciona-se aleatoriamente, um ponto da árvore (indivíduo) e substitui-se a sub-árvore, cujo nó foi selecionado por uma nova sub-árvore gerada aleatoriamente e que está sujeita às mesmas limitações quanto à profundidade e tamanho, do que as árvores geradas na população inicial. Este novo indivíduo é re-inserido na população. • Cruzamento: Escolhe-se dois indivíduos através do valor de sua função de fitness e Seleciona-se aleatoriamente, em cada indivíduo, um ponto de cruzamento, permuta-se as sub-árvores dos dois indivíduos gerando os filhos, que farão parte da nova população. 3.2. Parâmetros do Algoritmo de Programação Genética O algoritmo de PG é controlado por alguns parâmetros que são responsáveis pelos ajustes no processo evolutivo. Os principais parâmetros utilizados são: • • • • • • Tamanho da população: designa o número total de programas que serão gerados em cada população, é um dos principais responsáveis pela eficiência do algoritmo. Método de Seleção: define qual método de seleção será utilizado; Taxa de Cruzamento: define a probabilidade de que o operador de cruzamento seja escolhido para ser utilizado. Quanto maior esta taxa, maior será o número de trocas de material genético entre os indivíduos e conseqüente haverá maior diversidade na população. Taxa de Mutação: define a probabilidade de que o operador de mutação seja selecionado para ser utilizado. Permite uma opção a mais na variabilidade genética, entretanto uma taxa de mutação muito alta pode tornar a busca essencialmente aleatória. Número Máximo de Gerações: define a quantidade de gerações do processo evolutivo. Se este número for atingido e uma solução não tiver sido encontrada, o processo é interrompido. Método de Inicialização: especifica o método que será usado para inicializar a população. 3.3 Algoritmo Básico de Programação Genética Na figura 1 pode-se visualizar o algoritmo básico de Programação Genética: 819 Pesquisa Operacional e o Desenvolvimento Sustentável 27 a 30/09/05, Gramado, RS 1. Criar a população inicial 2. Repete 2.1 Avaliar a população através da função de aptidão 2.2 Selecionar um subgrupo da população ao qual serão aplicados os operadores genéticos 2.3 Aplicar os operadores genéticos 3. Fim – Até que seja encontrada uma boa solução, ou que tenha sido alcançado o número máximo de gerações. Figura 1 – Algoritmo básico de Programação Genética 4. Combinação de Preditores Estudos recentes em Aprendizado de Máquina mostram que é possível combinar vários preditores para formar um comitê de preditores, que possa apresentar resultados mais eficientes do que quando se utiliza um preditor isoladamente. A primeria motivação teórica para usar a combinação de preditores foi dada por Schapire [11], que mostrou que a classe de conceitos que são aprendidos por algotimos de aprendizado fortes são também aprendidos pela combinação de algoritmos fracos, com a mesma precisão na taxa de erros, porém com um esforço computacional muito menor. Alguns algoritmos têm sido empregados para a combinação de preditores, dentre eles podemos citar: Bagging [16], Boosting [11], [12], [13], [14], [15], Boosting aplicado à programação genética [17], que serão brevemente descritos na póxima seção. Neste trabalho uma nova metodologia é proposta, cuja previsão utiliza como conjunto de treinamento o conjunto dos resíudos, esta metodologia será detalhada na seção (4.3). 4.1 Bagging O algoritmo bagging é um algoritmo que gera vários preditores para então agregá-los e construir um algoritmo mais eficiente. Os preditores são gerados fazendo-se uma réplica bootstrap no conjunto de treinamento e usando estes novos conjuntos de treinamento para gerar um novo preditor. Testes realizados com dados reais e simulados usando classificação, regressão e seleção de subconjuntos em regressão linear mostram que o algoritmo bagging pode fornecer ganhos substanciais de previsão [16]. 4.2 Boosting Um dos algoritmos mais conhecidos de combinação de algoritmos básicos é conhecido como Boosting e foi introduzido por Schapire [11], este algoritmo foi estudado e aplicado por muitos autores em vários trabalhos. A eficácia de um algoritmo de aprendizado fraco pode ser melhorada com a aplicação deste algoritmo que dá mais ênfase aos exemplos que foram mal classificados ou preditos no conjunto de treinamento. Em geral o algoritmo Boosting é aplicado a problemas de classificação e de regressão [18], [19]. Baseado no trabalho de Drucker [20], Iba [21] propôs uma versão do Adaboost para problemas de regressão utilizando Programação Genética. Em seu trabalho, Iba mantém a função de fitness como na Programação Genética básica e a distribuição seleciona exemplos para gerar um novo conjunto de treinamento para cada execução boosting. A probabilidade de que cada exemplo seja selecionado é proporcional ao seu peso e qualquer exemplo pode ser escolhido nenhuma, uma ou muitas vezes, até que o conjunto de treinamento esteja completo. Um programa padrão de Programação Genética é executado com o novo conjunto de treinamento para calcular a função associada ao boosting atual. 4.3 Previsão no conjunto dos resíduos Alguns trabalhos recentemente publicados [23], mostram uma visão do boosting como um algoritmo de grandiente descendente [16], um novo algoritmo foi implementado utilizando o boosting para problemas de regressão como um residual-fitting, ou seja, ao invés de usar diferentes exemplos no conjunto de treinamento, o regressor é treinado num conjunto de diferentes valores, como por exemplo o 820 27 a 30/09/05, Gramado, RS Pesquisa Operacional e o Desenvolvimento Sustentável conjunto dos resíduos [22]. Baseados nesta idéia e na utilização do algoritmo Boosting na programação genética, criamos uma metodologia para realizar a previsão de séries temporais. Primeiramente é realizada uma execução normal de programação genética para encontrar um preditor para a série temporal, o resíduo é então calculado e obtem-se: Z t = Zˆ t + ε 1 Os resíduos ε1 formam então, o novo conjunto de dados que serão utilizados na próxima execução da programação genética. O problema agora resume-se a minimizar o erro de previsão, ou seja, determinar a melhor previsão para o resíduo εt, de forma que: ε 1 = Z t − Zˆ t Para minimizar o erro de previsão da série, é então realizada a previsão do resíduo ε, ou seja: ε1 = εˆ 1 + ε 2 ou seja: ε 2 = ε1 − ε̂1 O resíduo ε2 é então previsto pela programação genética, o procedimento repete-se até que um critério de parada tenha sido atingido, neste caso utilizamos um valor de dez predições para o resíduo, sendo selecionado como melhor preditor, aquele que apresentou o menor RMSE. A solução final da previsão do resíduo será então dada por: ε1 = εˆ 1 + εˆ 2 + εˆ 3 + ... + εˆ n E a nova previsão da série será dada por: Z t = Zˆ t + ε1 Na seção seguinte serão descritos os experimentos realizados e os resultados obtidos serão avaliados e comparados aos métodos tradicionais de previsão, bem como à própria previsão realizada pela programação genética pura. 5. Experimentos Realizados Nesta seção serão relatados os experimentos realizados primeiramente utilizando a PG simples e comparando os resultados obtidos aos métodos tradicionais de previsão. Em seguida serão apresentados os resultados utilizando a metodologia proposta para a previsão dos resíduos, na qual após ter-se obtido uma primeira previsão para a série, o conjunto de treinamento é substituído por um novo conjunto de dados, composto dos resíduos. Os resultados são avaliados para a validação da metodologia proposta. 5.1 Bases de Dados As bases de dados utilizadas foram coletadas em [24] e encontram-se descritas na tabela 1. De cada base de dados, foi escolhido um conjunto de treinamento com 90% e um conjunto de teste contendo 10% dos valores observados. B a se C o n su m o B e b id a A tm o s f e r a F o r ta le za IC V IP I Lav ras M an ch as C o n ju n t o T o t a l (1 0 0 % ) T r e in a m e n t o (9 0 % ) T e ste (1 0 % ) 154 187 365 149 114 187 384 176 139 169 329 135 102 169 346 159 15 18 36 14 12 18 38 17 Tabela 1 – Bases de Dados 821 27 a 30/09/05, Gramado, RS Pesquisa Operacional e o Desenvolvimento Sustentável 5.2 Configuração do Algoritmo de Programação Genética As bases de dados foram submetidas ao algoritmo de programação genética desenvolvido, utilizando o sistema Lil-gp [25]. Foram realizadas 10 execuções para cada série, com sementes diferentes, e o melhor preditor1 foi selecionado. Após a obtenção do modelo gerado pela PG sobre o conjunto de treinamento, o mesmo foi aplicado sobre o conjunto de teste para a previsão dos valores. Na figura 2 estão os parâmetros genéticos do algoritmo e os conjuntos T e F que foram utilizados. T = {os quatro últimos valores da série} F = {+, -, *, /, log, cos, sem, exp, raiz } Pop_size = 1000 Init.method = grow Selection method = best breed[1].rate = 0.8 breed[2].rate = 0.1 breed[3].rate = 0.1 Figura 2 – Parâmetros Genéticos utilizados 5.3 Resultados detalhados com a série ICV A seguir, serão descritos os experimentos relativos à serie ICV1. Os resultados obtidos estão apresentados na tabela 2 e foram comparados aos obtidos pelo modelo ARMA(1,0), que foi o modelo identificado para ser utilizado nesta série. RUN t Série ARMA (1,0) 115 812 116 117 1 2 3 4 5 6 7 8 9 10 802,95 814,59 808,56 805,80 807,30 799,18 802,82 804,91 792,32 801,05 806,99 840 828,78 850,19 844,03 831,81 832,63 837,71 837,59 825,53 844,67 844,16 842,00 894 855,5 879,50 873,08 877,72 877,02 876,38 871,75 875,13 873,26 870,13 872,23 118 936 883,16 936,04 930,02 932,00 931,74 928,95 931,29 931,85 923,76 933,97 928,73 119 980 911,79 980,02 973,40 973,31 969,03 982,13 974,46 967,33 996,13 982,51 972,92 120 1049 941,41 1026,09 1019,29 1041,71 1040,09 1034,49 1029,08 1043,41 1027,82 1021,76 1021,42 121 1096 972,07 1098,33 1091,94 1099,16 1097,24 1098,30 1099,38 1097,24 1108,12 1103,88 1094,17 122 1113 1003,8 1147,54 1140,21 1149,33 1145,38 1160,28 1146,44 1148,15 1101,24 1152,11 1145,41 123 1182 1036,64 1165,34 1157,45 1189,61 1185,97 1177,04 1164,12 1190,32 1160,89 1183,85 1169,65 124 1237 1070,63 1237,59 1230,41 1232,23 1233,98 1217,53 1227,13 1233,67 1200,14 1224,18 1243,99 125 1309 1105,8 1295,18 1287,29 1265,55 1260,98 1284,62 1277,82 1310,46 1301,22 1297,25 1300,99 126 1374 RMSE 1142,21 1370,56 1362,76 1385,28 1377,30 1380,00 1374,50 1390,60 1369,03 1370,78 1381,73 36,5 4,1875 4,8792 5,2108 5,2536 5,2834 4,9685 4,0996 5,1862 4,836 4,3664 Tabela 2 – Previsões obtidas com a Programação Genética e Modelo ARMA Nota-se que na execução 7, obteve-se o menor RMSE dentre os preditores obtidos. Quando comparado ao modelo ARMA(1,0), o algoritmo de programação genética apresentou uma redução de 88% no RMSE. O passo seguinte do experimento foi agrupar os preditores e verificar se o preditor gerado resultaria numa previsão melhor com intervalo de confiabilidade1. Os resultados estão apresentados na Tabela 3. 1 Melhor Preditor foi considerado aquele que apresentou o menor RMSE no conjunto de treinamento. 822 27 a 30/09/05, Gramado, RS Pesquisa Operacional e o Desenvolvimento Sustentável t Série Média Desvio Max Min Pertence ao Intervalo? 115 812 804,35 11,79 816,14 792,56 SIM 116 840 839,03 14,55 853,58 824,49 SIM NÃO 117 894 874,62 5,88 880,50 868,74 118 936 930,83 6,50 937,34 924,33 SIM 119 980 977,12 16,51 993,63 960,62 SIM NÃO 120 1049 1030,52 17,45 1047,96 1013,07 121 1096 1098,78 8,93 1107,71 1089,84 SIM 122 1113 1143,61 30,92 1174,53 1112,69 SIM 123 1182 1174,42 24,40 1198,82 1150,02 SIM 124 1237 1228,08 23,92 1252,00 1204,17 SIM 1288,13 31,56 1319,70 1256,57 125 1309 126 1374 RMSE 1376,26 16,4266 4,0257 1392,7 SIM 1359,8 SIM Tabela 3 – Resultado da combinação de preditores Verifica-se que a média dos valores previstos apresenta um RMSE 2% menor que o valor obtido pelo melhor preditor e que 10 dos 12 pontos obtidos (83,3%), pela média dos preditores pertencem ao intervalo de confiança. Na figura 3 está apresentada a solução gráfica, ilustrando os resultados obtidos e o intervalo de confiabilidade. Resultados Comparativos 1400 Série 1300 Média + Desvio Média - Desvio 1200 1100 1000 Figura 3 – Representação do Intervalo de confiabilidade 900 800 114 116 118 120 122 124 126 128 t 5.4 Combinação de preditores no conjunto dos resíduos Após a verificação da pequena redução do RMSE quando utilizado a média dos preditores, foi implementada a previsão no conjunto dos resíduos. Primeiramente foi realizada a previsão da série utilizando somente a programação genética, de dez execuções foi escolhida aquela que apresentou o menor RMSE, a seguir foi aplicada a metodologia da PG no conjunto dos resíduos. Uma amostra dos resultados para a série de manchas solares está na tabela 4. Na coluna 2, estão os resultados obtidos pela PG pura, e na coluna 3 estão apresentados os valores da previsão através da metodologia de previsão dos resíduos. 823 27 a 30/09/05, Gramado, RS Pesquisa Operacional e o Desenvolvimento Sustentável Série SérieP SérieP+EP 30,7 41,02807498 30,38503952 12,2 25,99877707 13,90738127 9,6 7,71354311 7,98072799 10,2 14,08986781 12,71548566 32,4 16,84671872 23,05928027 47,6 54,74026218 49,74178078 54 53,34070882 59,31210574 62,9 53,56772928 62,05965365 85,9 59,38152676 84,14644730 61,2 79,33796646 66,49619607 45,1 47,13189849 51,61305410 36,4 33,04553539 31,68809020 20,9 31,54931478 27,19168489 11,4 17,74740206 18,22723422 37,8 10,97709597 24,50111417 69,8 68,31672881 73,06491609 Tabela 4 – Resultados da previsão da série com previsão dos resíduos Os resultados gráficos estão apresentados na figura 4. Pode-se observar que a previsão obtida pela metodologia de previsão dos resíduos, possui um melhor ajuste do que a previsão utilizando a PG simples. 100 90 80 70 60 50 40 30 20 10 0 1 2 3 4 5 Série 6 7 8 9 SérieP 10 11 12 13 14 15 16 SérieP+EP Figura 4 – Comparação dos resultados obtidos pela PG simples e com a previsão no conjunto dos resíduos – Série Manchas Solares Na próxima seção serão apresentados os resultados para outras séries [24] os resultados estão apresentados na tabela 5. Os resultados obtidos através da PG pura estão relatados no artigo da referência [26]. 824 27 a 30/09/05, Gramado, RS Pesquisa Operacional e o Desenvolvimento Sustentável 5.5 Resumo dos Resultados Com a realização dos experimentos para outras séries, verificou-se que a Programação Genética apresenta bom desempenho na previsão de valores futuros da série e que utilizando o conjunto de resíduos como conjunto de valores observados a serem previstos pela programação genética, pode-se obter resultados ainda mais precisos. Na tabela 5, a coluna 2 apresenta os resultados do RMSE de cada série prevista pela PG pura, a coluna 3, apresenta o RMSE da metodologia proposta neste artigo, a coluna 4 mostra a melhoria obtida da PG com previsão no conjunto dos resíduos em relação à PG pura. As colunas 5 e 6, fazem uma comparação da soma dos erros absolutos e a última coluna faz uma comparação destes resultados. Os resultados foram obtidos sobre a base completa de dados. Série Resultado da PG RMSE ICV 2,030 Bebida 8,177 PG e Com binação de Preditores PG com Melhoria Som a dos Som a dos Percentual Previsão no Erros Erros de dos Erros conjunto Absolutos Absolutos Melhoria RMSE RMSE da PG da PG+EP 0,839 59% 502 400 20,34% 3,522 57% 1308 734 43,86% 55,74% IPI 8,251 2,874 65% 1273 563 Consumo 16,850 6,682 60% 1914 956 50,07% Fortaleza 445,526 161,153 64% 54068 30622 43,36% Lavras 93,126 60,734 35% 25330 22420 11,49% Manchas 13,567 4,776 65% 1780 838 52,91% Tabela 5 – Comparação dos resultados obtidos pela PG e pela PG com conjunto de resíduos Observa-se que para todas as séries os resultados obtidos, efetuando-se a previsão no conjunto dos resíduos ficaram melhores, a menor taxa de melhoria obtida foi de 35% e a maior foi de 65%. 6. Conclusões e Trabalhos Futuros Sabe-se que a previsão de séries temporais é de grande importância para diversas áreas do conhecimento e que existem vários métodos para realizar tais previsões, sendo o principal desafio desta tarefa, a descoberta de um método que obtenha previsões mais precisas. Diante disso, surge a programação genética como uma alternativa aos métodos tradicionais por apresentar resultados promissores. O objetivo deste trabalho foi verificar o comportamento da PG na previsão de Séries Temporais, aplicando uma metodologia de previsão dos resíduos, baseada nas técnicas de combinação de preditores. Com a obtenção dos resultados, pode-se concluir que a metodologia proposta é bastante promissora na previsão de séries temporais e apresenta um erro de previsão geralmente menor que as técnicas tradicionais e melhores também quando comparadas à previsão através da PG simples. Após a realização dos experimentos verificou-se que ao se construir uma combinação ou comitê de preditores pode-se reduzir ainda mais os erros de previsão. Como trabalhos futuros pode-se citar a utilização e o aprimoramento das técnicas de técnicas de boosting, bagging aplicados à previsão de séries temporais, bem como o refinamento da técnica aqui proposta e sua estruturação. 825 Pesquisa Operacional e o Desenvolvimento Sustentável 27 a 30/09/05, Gramado, RS Referências [1] Povinelli, R. J. Identifying Temporal Patterns for Characterization and Prediction of Financial Time Series Events. Ph.D. Dissertation, Marquette University, 1999. [2] Kaboudan, M. A Measure of Time Series Predictability Using Genetic Programming Applied to Stock Returns. Journal of Forecasting, vol. 18, pp 345 - 357, 1999. [3] Kaboudan, M. Genetic Programming Prediction of Stock Prices. Computational Economics. Vol 16, Issue 3. p. 207 – 236. 2000. [4] Duann, M. Time Series Predictability. Dissertação de Mestrado. Marquette University. Milwaukee, Wisconsin, 2002. [5] Cortez, P. A. R. Modelos Inspirados na Natureza para a Previsão de Séries Temporais. Tese de doutorado. Universidade do Minho. Portugal, 2002. [6] Koza, J. R. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, MA. 1992. [7] J. R. Koza. Hierarquical genetic algorithms operating on populations of computer programs. Proceedings of the 11th International Joint Conference on Artificial Intelligent (IJCAI-89). Detroit, MI. Pp 768-774. Morgan Kaufmann, 1989. [8] Terada, P. D. Compilers and Compiler Generators, na introduction with C++. ISBN 0074609602. McGraw-Hill, Makron, 1991. [9] Luke, S.; Painait, L. A survey and comparison of tree generation algorithms. Proceedings of the 6th Annual Conference in Genetic Programming (GECCO 2001). ISBN 1558607749. Springer-Verlag, 2001. [10] Banzhaf; W. Nordin, P.; Keller, R. E. & Francone, F. D. Genetic Programming an introduction. ISBN 155860510X. Morgan Kaufmann, 1998. [11] Schapire R. E. The strenght of weak learnability. In: Machine Learning, 1990, p.197-227. [12] Schapire R. E.; Freund Y. Experiments with a new boosting algorithm. In: Machine Learning: Proceedings of the Thirteenth International Conference, 1996, p.148-156. [13] Schapire R. E.; Singer. Improved boosting algorithms using confidence –rated predictions. In: Proceedings of the Eleventh Annual Conference on Computational Learning Theory,1998. p.80 - 91. [14] Schapire R. E. Theorical views of boosting. In: Computational Learning Theory: Fourth European Conference, EuroCOLT99, 1999. p.1-10. [15] Schapire R. E.; Freund, Y. A short introduction to boosting. Journal of Japanese Society for Artificial Intelligence, v.14(5),p.771-780, september, 1999. [16] Breiman L. Bagging Predictors. Machine Learning, Boston, v.24, p.123-140,1996. [17] Paris, G.; Robilliard D.; Fonlupt C. Applying Boosting Techniques to Genetic Programming. Lecture Notes In Computer Science, London, v.2310, p. 267-280, 2001. [18] Freund Y.; Schapire, R.E.Experiments with a new boosting algorithm. Machine Learning, 1996a. Proceedings of the Thirteenth Conference, ed: L. Saitta, Morgan Kaufmann. P148-156. [19] Freund Y.; Schapire, R.E. A decision-theoritic generalization of on-line learning and an application to boosting. Journal of Computer and System Sciences, 55(1):119-139, 1997. [20] Drucker H. Improving regression using boosting techniques. In: International Conference on Machine Learning, 1997, Orlando: Proceeding of International Conference on Machine Learning, ICML97. [21] Iba H. Bagging, boosting, and bloting in genetic programming. In: BDE, 1999. p 1053-1060 [22] Friedman, J.; Hastie, T.; Tibshirani, R. Additive Logistic Regression: a Statistical view of boosting. Thecnical Report . Stanford University Statistics Department. [23] Assad, M.; Boné, R. Improving Time Series Prediction by Recurrent Neural Network Ensembles. Université de Tours, 2003. [24] Morettin, P. A; Toloi, C. M. C. Análise de Séries Temporais. Ed. Edgard Blucher, 2004. [25] Zongker, D.; Punch, B. Lil-gp 1.0 User’s Manual. Michigan State University. 1995. [26] Souza, L. V., Pozo, A. T. R.; COSTA, E. O. Análise da Capacidade da Programação Genética na Previsão de Séries Temporais. In: Congresso de Métodos Numéricos en Ingeniaría, Granada, 2005. 826