Você está na página 1de 12

27 a 30/09/05, Gramado, RS

Pesquisa Operacional e o Desenvolvimento Sustentável

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
luzia@ufpr.br

Aurora Trinidad Ramirez Pozo


Departamento de Informática – Universidade Federal do Paraná (UFPR)
Caixa Postal 19081 – 81531-990 – Curitiba – PR – Brasil
aurora@inf.ufpr.br

Eduardo Oliveira Costa


Departamento de Informática – Universidade Federal do Paraná (UFPR)
Caixa Postal 19081 – 81531-990 – Curitiba – PR – Brasil
costa@inf.ufpr.br

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

∑ (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

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
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável

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):
fi
pi = n
( 4)
∑f
j =1
j

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
27 a 30/09/05, Gramado, RS
Pesquisa Operacional e o Desenvolvimento Sustentável

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 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

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)
1 2 3 4 5 6 7 8 9 10
115 812 802,95 814,59 808,56 805,80 807,30 799,18 802,82 804,91 792,32 801,05 806,99
116 840 828,78 850,19 844,03 831,81 832,63 837,71 837,59 825,53 844,67 844,16 842,00
117 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 1142,21 1370,56 1362,76 1385,28 1377,30 1380,00 1374,50 1390,60 1369,03 1370,78 1381,73
RMSE 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

Pertence ao
t Série Média Desvio Max Min
Intervalo?

115 812 804,35 11,79 816,14 792,56 SIM


116 840 839,03 14,55 853,58 824,49 SIM
117 894 874,62 5,88 880,50 868,74 NÃO
118 936 930,83 6,50 937,34 924,33 SIM
119 980 977,12 16,51 993,63 960,62 SIM
120 1049 1030,52 17,45 1047,96 1013,07 NÃO
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
125 1309 1288,13 31,56 1319,70 1256,57 SIM
126 1374 1376,26 16,4266 1392,7 1359,8 SIM
RMSE 4,0257

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 6 7 8 9 10 11 12 13 14 15 16

Série SérieP 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.
PG e Com binação de Preditores
PG com Melhoria Som a dos Som a dos
Resultado Percentual
Série Previsão no Erros Erros
da PG de
dos Erros conjunto Absolutos Absolutos
RMSE Melhoria
RMSE RMSE da PG da PG+EP
ICV 2,030 0,839 59% 502 400 20,34%
Bebida 8,177 3,522 57% 1308 734 43,86%
IPI 8,251 2,874 65% 1273 563 55,74%
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
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

Você também pode gostar