Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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)
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
∑ (x
I =1
i − xˆ i )
2
RMSE = (3)
n
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
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável
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
817
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável
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.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):
fi
pi = n
( 4)
∑f
j =1
j
819
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável
3. Fim – Até que seja encontrada uma boa solução, ou que tenha sido alcançado o número
máximo de gerações.
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.
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 ju n t o T o t a l T r e in a m e n t o T e ste
(1 0 0 % ) (9 0 % ) (1 0 % )
C o n su m o 154 139 15
B e b id a 187 169 18
A tm o s f e r a 365 329 36
F o r ta le za 149 135 14
IC V 114 102 12
IP I 187 169 18
Lav ras 384 346 38
M an ch as 176 159 17
821
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável
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
Pertence ao
t Série Média Desvio Max Min
Intervalo?
Resultados Comparativos
1400
Série
1200
1100
1000
800
114 116 118 120 122 124 126 128
t
823
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável
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 6 7 8 9 10 11 12 13 14 15 16
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
825
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável
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