Buscar

Previsao_de_series_temporais_com_R-1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 249 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 249 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 249 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade do Estado do Rio de Janeiro 
Faculdade de Administração e Finanças 
Departamento de Ciências Contábeis 
Business Intelligence e Mineração de Dados 
com o programa R 
José Francisco Moreira Pessanha 
Instituto de Matemática e Estatística - Uerj 
professorjfmp@hotmail.com 
Rio de Janeiro, 10 de Junho de 2017 
Aula 4 
 
Análise e 
Previsão de 
Séries temporais 
 
Box & Jenkins 
 
Rede Neurais 
Artificiais 
 
Multilayer 
Perceptron 
 
Mapa de 
Kohonren 
 
Lógica Fuzzy 
 
Wang-Mendel 
Análise e Previsão de Séries Temporais 
• Decomposição clássica de séries temporais 
• Métodos de armotecimento exponencial 
• Método de Box & Jenkins 
 
Redes Neurais Artificiais 
• Multilayer Perceptron 
• Mapa de Kohonen 
 
Lógica Fuzzy 
• Algoritmo de Wang Mendel 
Análise e Previsão de Séries Temporais 
Processos Estocásticos e Séries Temporais 
Um processo estocástico (PE) é uma coleção de variáveis aleatórias 
ordenadas no tempo. 
 
Portanto, um PE é um conjunto Z={Z(t),tN}, tal que para cada t, Z(t) é 
uma variável aleatória. 
 
A coleção de todas as possíveis sequências cronológicas de um PE 
denomina-se “ensemble”. 
 
Uma série temporal de tamanho n é um conjunto de n observações 
ordenadas ao longo do tempo e que representam uma realização 
amostral dentre todas as trajetórias de tamanho n que poderiam ser 
geradas por um PE. 
 
A principal característica de uma série temporal, que a torna distinta de 
uma amostra aleatória simples, é a vinculação das observações com o 
fator tempo. 
Estacionariedade e Ergodicidade 
Estacionariedade: Um processo estocástico é considerado estacionário 
se as suas características são invariantes no tempo, caso contrário o 
processo é não estacionário. 
 
Ergodicidade: Um processo estocástico é dito ergódico se apenas uma 
realização do mesmo é suficiente para inferir sobre o mesmo. Todo 
processo ergódico também é estacionário. 
Previsão de série temporais 
0
20
40
60
80
100
120
140
0 20 40 60 80 100
Meses
Y
     tetftY 
Série 
observada Sinal Ruído 
   tftY ˆˆ 
previsão estimativa 
do sinal 
0
20
40
60
80
100
120
140
0 20 40 60 80 100
Meses
Y
Estimativa do sinal Série observada 
Baseia-se na premissa segundo a qual os fatores que influenciaram o 
comportamento dos dados no passado continuam influenciando seus 
movimentos futuros. 
 
Então, analisando o comportamento passado da série temporal obtemos 
os elementos para prever o seu comportamento futuro. 
 
O propósito dos métodos de previsão é distinguir o padrão de evolução 
da série (o sinal) de qualquer ruído que possa estar contido nas 
observações e então usar este padrão (o sinal) para prever valores 
futuros da série. 
Uma série temporal é o resultado da combinação de quatro componentes 
não observáveis: 
 Tendência 
 Ciclo 
 Sazonalidade 
 Irregular 
Modelo aditivo: Série = T + C + S + I 
Modelo multiplicativo: Série = T x C x S x I 
Componentes de uma série temporal 
1980 1985 1990 1995 2000
300
400
500
600
700
800
900
1000
1100
1200
GWh
 
aumento da população e universalização tendência de crescimento 
 
 duas estações bem definidas sazonalidade 
Série mensal 
de jan/79 a mar/03 
racionamento 
fev/86 a mai/86 
racionamento 
jul/01 a fev/02 
Componentes de uma série temporal 
Demanda de energia elétrica na classe residencial da região Sul do Brasil 
Componentes de uma série temporal 
tendência sazonalidade irregular 
Demanda de 
energia 
elétrica na 
classe 
residencial 
da região Sul 
Decomposição de séries temporais no R: decompose ou stl 
Função decompose 
Função stl 
Exemplo: Decomposição da série do consumo de energia elétrica residencial no Brasil 
# importa arquivo de dados 
filename="c:/curso R/aula5/energia.csv" 
dados=read.csv2(filename,header=TRUE,dec=".",sep=";",row.names=1) 
 
# série do consumo residencial no Brasil 
residencial=ts(dados[,2],start=c(1979,1),end=c(2016,9),frequency=12) 
 
# seleção do período de janeiro de 2004 até dezembro de 2015 
residencialin = window(residencial, start=c(2004,1), end=c(2015,12)) 
plot(residencialin,xlab="meses",ylab="GWh",main="Consumo residencial de energia elétrica no Brasil") 
Fonte: Banco Central do Brasil 
https://www3.bcb.gov.br/sgspub/localizarseries/localiza
rSeries.do?method=prepararTelaLocalizarSeries 
objeto série temporal 
# decomposição clássica com a função decompose 
fit = decompose(residencialin,type="multiplicative") 
names(fit) 
 
 
 
 
 
plot(fit) 
Componente 
sazonal 
Tendência 
Irregular 
Fatores 
sazonais 
cbind(fit$figure) 
Exemplo: Decomposição da série do consumo de energia elétrica residencial no Brasil 
# decomposição clássica com a função stl 
fit1 = stl(residencialin, s.window="periodic") 
names(fit1) 
Matriz com as 
componentes da série 
componentes=fit1$time.series plot(fit1) 
Exemplo: Decomposição da série do consumo de energia elétrica residencial no Brasil 
Modelos de alisamento 
Sazonalidade 
Tendência 
Tendência 
sim 
não 
sim 
não 
sim 
não 
Holt-Winters Aditivo 
Holt-Winters Multiplicativo 
Sazonalidade Aditiva 
Sazonalidade Multiplicativa 
Alisamento Exponencial Duplo 
Média Móvel Dupla 
Alisamento Exponencial Simples 
Média Móvel 
Alisamento exponencial simples 
Proposto em 1956 por Robert G. Brown (1923-2013) 
Exponential smoothing for predicting demand (1956) 
https://www.industrydocumentslibrary.ucsf.edu/tobacco/docs/#id=jzlc0130 
Statistical Forecasting for Inventory Control (1959) 
https://babel.hathitrust.org/cgi/pt?id=wu.89048445357;view=1up;seq=70 
Alisamento exponencial simples 
  TTT yyy ˆ1ˆ 1  
Aplicável em séries temporais relativamente estáveis e que não exibem 
tendência e sazonalidade significativa. 
 
A previsão para o instante T+1 é a previsão feita para o instante T 
ajustada pelo erro de previsão no instante T (método adaptativo). 
 é a constante de 
alisamento ( 0    1 ) 
 TTTT yyyy ˆˆˆ 1  
Previsão para o 
instante T+1 
Previsão para o 
instante T 
Erro de previsão 
no instante T 
Nova 
previsão 
Erro de 
previsão 
corrente 
Previsão 
corrente 
Previsão para o 
instante T 
Valor corrente 
da série 
Alisamento exponencial simples 
  TTT yyy ˆ1ˆ 1  
Fazendo algumas substituições: 
Previsão para o período T+1 é a soma ponderada das observações 
passadas com pesos que decrescem exponencialmente. 
    
    1
2
11
111
ˆ11ˆ
ˆ11ˆ




TTTT
TTTT
yyyy
yyyy


      
      2
3
2
2
11
22
2
11
ˆ111ˆ
ˆ111ˆ




tTTTT
tTTTT
yyyyy
yyyyy


      nt
n
TTTT yyyyy   ˆ111ˆ 2
2
11  
Decaimento exponencial dos pesos, quanto mais recente a observação 
maior o seu peso. 
 
Exemplo:  = 0,3 
      nt
n
TTTmT yyyyy   ˆ111ˆ 2
2
1  
0
0,05
0,1
0,15
0,2
0,25
0,3
0,35
0 1 2 3 4 5 6 7 8
Idade da observação
P
e
s
o
Equação de previsão m passos à frente é o último valor 
exponencialmente alisado: 
Alisamento exponencial simples 
Alisamento exponencial de Holt-Winters 
Charles C. Holt (1921-2010) e seu aluno Peters Winters 
 
Holt, C.C. (1957). Forecasting seasonals and trends by exponentially 
weighted moving averages, Office of Naval Research (ONR) Memorandum 
(Vol. 52). 
Publicado 
apenas em 2004 
Peter Winters 
1960 
http://pubsonline.informs.org/doi/abs/10.1287/mnsc.6.3.324 
http://www.sciencedirect.com/science/article/pii/S0169207003001134 
Alisamento exponencial de Holt-Winters 
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.401.2999&rep=rep1&type=pdf 
Holt-Winters Aditivo 
Para séries temporais com tendência e sazonalidade aditiva 
    111   ttsttt baSya 
    11 1   tttt baab 
    stttt SayS   1
msTttmt Smbay ˆ
Equação de projeção m passos a frente 
 ,  e  são as constantes de alisamento ( 0    1 , 0    1 e 0    1 ) 
Coeficientes atualizados pelas seguintes fórmulas: 
s
y
aa
s
t
t
St

 1
s
s
yy
s
yy
s
yy
s
yy
bb
ssssss
St








 332211
ttt ayS 
Valores iniciais do 
nível, da tendência e 
do fator sazonal para 
t=1,2,...,s 
  111 









 tt
st
t
t ba
S
y
a 
    11 1   tttt baab 
  st
t
t
t S
a
y
S 







  1
  msTttmt Smbay  ˆ
Equação de projeção m passos à frente 
Coeficientes atualizados pelas seguintes fórmulas: 
 ,  e  são as constantes de alisamento ( 0    1 , 0    1 e 0    1 ) 
Para séries temporais com tendência e sazonalidade multiplicativa 
Valores iniciais do 
nível, da tendência e 
do fator sazonal para 
t=1,2,...,s s
y
aa
s
t
t
St

 1
s
s
yy
s
yy
s
yy
s
yy
bb
ssssss
St








 332211
ttt ayS /
Holt-Winters Multiplicativo 
output=HoltWinters(residencialin) 
names(output) 
Exemplo: Previsão do consumo de energia elétrica na classe residencial com Holt WInters 
head(output$fitted) Constantes de 
alisamento 
Fatores sazonais 
Holt Winters Aditivo Modelo ajustado com dados de janeiro 
de 2004 até dezembro de 2015 
plot(output) 
Holt Winters Aditivo 
Exemplo: Previsão do consumo de energia elétrica na classe residencial com Holt WInters 
plot(fitted(output)) 
Holt Winters Aditivo 
Exemplo: Previsão do consumo de energia elétrica na classe residencial com Holt WInters 
previsao=predict(output, n.ahead = 12, prediction.interval = T,level=0.95) 
print(previsao) # para 2016 
Holt Winters Aditivo 
Exemplo: Previsão do consumo de energia elétrica na classe residencial com Holt WInters 
plot(previsao) 
Limite superior 
do intervalo de 
previsão 
Limite inferior 
do intervalo de 
previsão 
Previsão 
previsao=predict(output, n.ahead = 12, prediction.interval = T,level=0.95) 
print(previsao) # para 2016 
Holt Winters Aditivo 
# valores realizados até setembro de 2016 
residencialout = window(residencial, start=c(2016,1), end=c(2016,9)) 
Exemplo: Previsão do consumo de energia elétrica na classe residencial com Holt WInters 
Previsões (fit) e 
intervalos de 
previsão (lwr,upr) 
output = HoltWinters(AirPassengers, seasonal = "mult") 
plot(output) 
Exemplo: Modelagem da série Airline com Holt Winters 
Holt Winters Multiplicativo 
A série 
AirPassenger 
(Airline) é 
disponibilizada 
pelo próprio R 
A função HoltWInters permite configurar modelos aditivos e 
multiplicativos, bem como modelos para séries sem as componentes de 
tendência e sazonalidade, por exemplo: 
 
# Modelo sem componente sazonal 
output = HoltWinters(série_temporal, gamma = FALSE) 
 
# Alisamento exponencial simples 
output = HoltWinters(série_temporal, gamma = FALSE, beta = FALSE) 
Mais opções da função HoltWinters 
Holt Winters no R 
Função ets do pacote forecast para modelos de 
amortecimento exponencial 
Função ets do pacote forecast do R 
Especificação das componentes da série representadas no modelo 
1ª letra irregular ou erro (ruído), 2ª tendência, 3ª letra sazonalidade 
 
Se model=“ZZZ”, as componentes são selecionadas automaticamente 
Vetor com a série temporal Tendência amotecida? 
Função ets do pacote forecast do R 
Componentes da série 
Combinações das componentes 
http://robjhyndman.com/talks/RevolutionR/6-ETS.pdf 
https://www.otexts.org/fpp/7/7 
Rob Hyndman 
Exemplos de modelos usuais: 
 
ANN = alisamento exponencial simples com erros aditivos 
MNN = alisamento exponencial simples com erros multiplicativos 
AAN = modelo linear de Holt 
AAA = Holt Winters Aditivo com erros aditivos 
MAM = Holt Winters Multuplicativo com erro multiplicativos 
AAdN= Tendência amortecida com erros aditivos 
Modelos na notação de espaço de estados 
ANN = alisamento exponencial simples com erros aditivos 
Neste caso os erros são independentes e identicamentes 
 
distribuídos N(0,2) 
 
 
 
 
 
 
MNN = alisamento exponencial simples com erros multiplicativos 
 
Neste caso os erros são independentes e 
 
identicamentes distribuídos N(0,2) 
 
Equação principal 
Equação de estado 
Alisamento exponencial 
Equação principal 
Equação de estado 
Alisamento exponencial 
Modelos na notação de espaço de estados 
AAA = Holt Winters com sazonalidade aditiva 
A = Erro aditivo 
A = Tendência aditiva 
A = Sazonalizadade aditiva 
 
https://www.otexts.org/sites/default/files/fpp/images/Table7-10.png 
Modelos na notação de espaço de estados 
MAM = Holt Winters com sazonalidade multiplicativa 
M = Erro multiplicativo 
A = Tendência aditiva 
M = Sazonalizadade multiplicativa 
 
https://www.otexts.org/sites/default/files/fpp/images/Table7-10.png 
Modelos na notação de espaço de estados 
AAdA = Modelo com sazonalidade aditiva e tendência amortecida 
A = Erro aditivo 
Ad = Tendência amortecida 
A = Sazonalizadade aditiva 
https://www.otexts.org/sites/default/files/fpp/images/Table7-10.png 
Modelos na notação de espaço de estados 
MAdA = Modelo com sazonalidade multiplicativa e tendência amortecida 
M = Erro multiplicativo 
Ad = Tendência amortecida 
M = Sazonalizadade multiplicativa 
https://www.otexts.org/sites/default/files/fpp/images/Table7-10.png 
Modelos na notação de espaço de estados 
https://www.otexts.org/sites/default/files/fpp/images/Table7-10.png 
Modelos com erros aditivos 
Modelos na notação de espaço de estados 
https://www.otexts.org/sites/default/files/fpp/images/Table7-10.png 
Modelos com erros multiplicativos 
Previsão do consumo de energia elétrica na classe residencial com Holt WInters 
# modelo atiditivo, soma das componentes da série T + S + I 
modelo_aditivo = ets(residencialin,model="AAA") 
 
# modelo multiplicativo, produto das componentes da série T x S x I 
modelo_multiplicativo = ets(residencialin,model=“MMM") 
Previsão do consumo de energia elétrica na classe residencial com Holt WInters 
library(forecast) 
modelo_aditivo = ets(residencialin,model="AAA“) 
plot(modelo_aditivo) 
Previsão da série Airline 
# Identificação automática das componentes da série 
library(forecast) 
modelo = ets(AirPassengers,model=“ZZZ“) 
plot(modelo) 
Tendência amortecida 
O procedimento automático 
identificou um modelo MAdM: 
 
M = Erro multiplicativo 
Ad = Tendência amortecida 
M =Sazonalidade Multiplicativa 
 
O melhor modelo é 
selecionado com base nos 
critérios AIC (Akaike’s 
Information Criteria) e BIC 
(Baysian Information Criteria). 
 
O melhor modelo tem o menor 
AIC e BIC. 
Previsão da série Airline 
summary(modelo) 
hiperparâmetro associado com a tendência 
amortecida 
Abordagem de Box & Jenkins 
George E. P. Box 
1919 - 2013 
Gwilym M. Jenkins 
1932 - 1982 
BOX, G.E.P. and G.M. JENKINS 
(1970) Time series analysis: 
Forecasting and control, San 
Francisco: Holden-Day. 
BOX, G.E.P., JENKINS, G.M., REINSEL, G.C., LJUNG, 
G.L.,Time Series Analysis: Forecasting and Control, 
Wiley Series in Probability and Statistics, 5th Edition, 
2015. 
Modelo ARMA 
• Consiste em ajustar modelo autoregressivos (AR), médias 
móveis (MA) e ARMA à uma série temporal estacionária. 
 
• Em uma série temporal estacionária a média, a variância e 
as covariâncias são invariantes no tempo 
(estacionariedade fraca). 
 
• Se uma série é não estacionária quase sempre é possível 
torná-la estacionária por meio de transformações simples. 
 
• Descreve uma série temporal estacionária por meio de um 
modelo parcimonioso (pequeno número de parâmetros). 
Modelo ARMA(p,q) 
Filtro Linear Zt at 
Ruído branco at é estacionário 
Variáveis aleatórias i.i.d 
E(at) = 0  t 
V(at) = 
2  t 
Cov(at,ak) = 0  t   tt
k
ktkt
aBBZ
aZ

 



2
210
0

ktt
k aaB 
Operador de atraso 
Se a sequência i  i>0 é convergente o filtro é estável e o processo Zt é 
estacionário 
Zt at 
 
  ppp
q
qq
BBB
BBB




...1
...1
1
1  
  tp
q
t a
B
B
Z



    tqtp aBZB 
Componente AR(p) 
Componente MA(q) 
Modelo ARMA(p,q) 
Exemplos modelo AR 
Modelo AR(1) , apenas a componente AR 
  tt aZB 1  
ttt
ttt
tt
aZZ
aZZ
aZB





11
11
11



Modelo AR(3) , apenas a componente AR 
  tt aZB 3  
ttttt
ttttt
tt
aZZZZ
aZZZZ
aZBBB





332211
332211
3
3
2
211



Exemplos modelo MA 
Modelo MA(1) , apenas a componente MA 
  tt aBZ 1  
11
11


ttt
tt
aaZ
aBZ


Modelo MA(3) , apenas a componente MA 
  tt aBZ 3  
332211
3
3
2
211
 

ttttt
tt
aaaaZ
aBBBZ


Exemplos modelo ARMA 
Modelo ARMA(1,1) 
    tt aBZB 11     
1111
1111
11 11





tttt
tttt
tt
aaZZ
aaZZ
aBZB



Modelo ARMA(2,2) 
    tt aBZB 22     
22112211
22112211
2
21
2
21 11





tttttt
tttttt
tt
aaaZZZ
aaaZZZ
aBBZBB



Modelo ARIMA(p,d,q): série com tendência 
Zt at 
 
  ppp
q
qq
BBB
BBB




...1
...1
1
1
d
 
  tp
qd
t a
B
B
Z


    tqt
d
p aBZB  
Componente MA(q) Componente AR(p) 
d diferenças simples 
da série temporal Zt 
até eliminar a 
tendência 
Exemplo modelo ARIMA(p,d,q) 
Modelo ARIMA(1,1,1) 
    tt aBZB 11      
  
  112111
1121111
1111
11
1
1
111







ttttt
tttttt
tttt
tt
aaZZZ
aaZZZZ
aaZZB
aBZBB




    tqt
d
p aBZB Modelo ARIMA(p,d,q) 
Funções de autocovariância e autocorrelação 
A autocorrelação e autocovariância de defasagem k são medidas da 
memória do processo, ou seja, a extensão para a qual o valor tomado t, 
depende daquele tomado em t-k (SOUZA & CAMARGO, 1996). 
 
Revela a estrutura de dependência temporal entre os termos da série. 
 
Processo estacionário, logo 
E(Zt) = E(Zt-k) = z  t,k 
V(Zt) = V(Zt-k) = 0 = z
2  t,k 
 
Função de autocovariância de lag k: covariância entre valores de Z 
separados por k unidades de tempo 
COV(Zt, Zt-k) = k = E[(Zt- z) (Zt-k- z)] 
 
Função de autocorrelação de lag k 
k = k / 0 
| k |  1  k 
A função de autocorrelação (fac ou acf) é útil na identificação das ordens 
p e q dos polinômios AR e MA 
Função de autocorrelação (FAC) 
Modelo AR 
A autocorrelação decresce exponencialmente 
 
Modelo MA(q) 
Autocorrelações |k | nulas para k>q 
 
Modelo ARMA(p,q) 
Combinação das autocorrelações dos processos AR e MA. 
As autocorrelações nos lags 1,2,...,q são afetadas pelo 
processo MA. 
A partir da autocorrelação q+1 a autocorrelação se comporta 
como a de um processo AR(p) e decresce exponencialmente. 
Função de autocorrelação parcial (FACP) 
Autocorrelação parcial de lag k é a autocorrelação entre Yt e 
Yt-k após a remoção dos efeitos das variáveis intermediárias 
Yt-1, Yt-2, Yt-k+1. 
 
Modelo AR(p) 
A FACP é finita para todo lag k p 
É nula em todo lag k > p 
 
Processo MA 
Descresce geometrica 
 
Processo ARMA 
Por ser uma combinação de processos AR e MA, a FACP do 
processo ARMA não apresenta particularidades notáveis. 
A função de autocorrelação parcial (facp ou pacf) é útil na identificação 
das ordens p e q dos polinômios AR e MA 
Simulando a realização de um modelo ARIMA(p,d,q) 
  tt aZBB  22,05,01
ARIMA(2,0,0) com 1 = 0,5 e 2 =0,2 
simulado = arima.sim(list(order = c(2,0,0), ar = c(0.5,0.2)), n = 200) 
ts.plot(simulado) 
Tamanho da série simulada 
Simulando a realização de um modelo ARIMA(p,d,q) 
FAC e FACP do ARIMA(2,0,0) com 1 = 0,5 e 2 =0,2 
par(mfrow=c(1,2)) 
acf(simulado) 
pacf(simulado) FAC FACP 
Simulando a realização de um modelo ARIMA(p,d,q) 
  tt aBZ 7,01ARIMA(0,0,1) com  =0,7 
simulado = arima.sim(list(order = c(0,0,1), ma = 0.3), n = 200) 
ts.plot(simulado) 
Simulando a realização de um modelo ARIMA(p,d,q) 
FAC e FACP do ARIMA(0,0,1) com  =0,7 
par(mfrow=c(1,2)) 
acf(simulado) 
pacf(simulado) FAC FACP 
Simulando a realização de um modelo ARIMA(p,d,q) 
   tt aZBB  17,01ARIMA(1,1,0) com  =0,7 
simulado = arima.sim(list(order = c(1,1,0), ar = 0.7), n = 200) 
ts.plot(simulado) 
Simulando a realização de um modelo ARIMA(p,d,q) 
FAC e FACP do ARIMA(1,1,0) com  =0,7 
par(mfrow=c(1,2)) 
acf(simulado) 
pacf(simulado) FAC FACP 
Simulando a realização de um modelo ARIMA(p,d,q) 
    tt aBZB 5,013,01 ARIMA(1,0,1) com  =0,3 e  = 0,5 
simulado = arima.sim(list(order = c(1,0,1), ar = 0.3, ma=0.5), n = 200) 
ts.plot(simulado) 
FAC e FACP do ARIMA(1,0,1) com  =0,3 e  = 0,5 
par(mfrow=c(1,2)) 
acf(simulado) 
pacf(simulado) FAC FACP 
Simulando a realização de um modelo ARIMA(p,d,q) 
Abordagem de Box & Jenkins 
Transformação dos 
valores da série 
observada 
Série estacionária 
Identificação de um 
modelo 
Estimação dos 
parâmetros do modelo 
Verificação do modelo 
Modelo é 
adequado ? 
Previsão 
Não 
Sim 
Estratégia de 
construção dos 
modelos 
Modelo SARIMA(p,d,q)x(P.D.Q)s: série com tendência e sazonalidade 
Zt 
at 
 
  ppp
q
qq
BBB
BBB




...1
...1
1
1
 
 
 
  tp
qd
s
P
s
QDs
t a
B
B
B
B
Z

 



Componente MA(Q) 
sazonal 
Componente MA(q) 
S é o período sazonal 
S=12 para série mensal 
S= 4 para série trimestral 
d
 
  PsPssP
Qs
Q
ss
Q
BBB
BBB


...1
...1
1
1
Ds
        tqsQtdDspsP aBBZBB  
Componente AR(p) Componente AR(P) 
sazonal 
Diferenças 
sazonais 
Diferenças 
simples 
Exemplo modelo SARIMA(P,D,Q)x(p.d.q)s 
Modelo SARIMA(0,1,1)x(0,1,1)12 
     
     
13111211113121
13111211113121
111211
12
1121
12
11
1111







tttttttt
tttttttt
tttt
tt
aaaaZZZZ
aaaaZZZZ
aaBZZB
aBBZBB




    tqQt aBBZ 1212 
Modelo SARIMA(P,D,Q)x(p,d,q)s 
        tqsQtdDspsP aBBZBB  
Modelo Airline 
plot(AirPassengers) 
Abordagem Box & Jenkins no R 
Função Arima 
Função Arima 
Exemplo: série AirPassengers 
# série airline está no objeto AirPassengers no R 
AirPassengers 
plot(AirPassengers) 
Exemplo: série AirPassengers 
# ACF da série 
acf(AirPassengers) 
Série não estacionária 
Tome a primeira diferença d=1 
Exemplo: Diferença simples da série AirPassengers 
# ACF da primeira diferença da série 
acf(diff(AirPassengers),60) 
ACF 
 plot(diff(AirPassengers)) 
Gráfico da primeira diferença 
Tome a primeira diferença sazonal D=1 
Exemplo: Diferença sazonal da primeira diferença 
# ACF da diferença sazonal da primeira diferença da série 
acf(diff(diff(AirPassengers),lag=12),60) 
ACF 
plot(diff(diff(AirPassengers),lag=12)) 
 
Gráfico da diferença sazonal 
da primeira diferença 
Componente MA q=1 
Exemplo: FACP da diferença sazonal da primeira diferença 
# PACF da diferença sazonal da primeira diferença da série 
pacf(diff(diff(AirPassengers),lag=12),60) 
Componente MA sazonal Q=1 
Exemplo: Ajuste do modelo SARIMA (Modelo Airline) 
# Modelo Airline ARIMA(0,1,1)x(0,1,1) 12 
modelo=Arima(AirPassengers,order=c(0,1,1),seasonal=list(order=c(0,1,1),period=12),lambda=0) 
 
# FAC dos resíduos da estimação do modelo ARIMA(0,1,1)x(0,1,1) 12 
acf(modelo$residuals) 
 
Modelo bem 
ajustado não há 
autocorrelações 
significativas nos 
resíduos 
Modelo Airline 
Exemplo: ajuste de modelo SARIMA (Modelo Airline) 
# Ajusta modelo SARIMA aos primeiros anos da série airline 
serie=window(AirPassengers,end=1956+11/12) 
modelo =Arima(serie,order=c(0,1,1),seasonal=list(order=c(0,1,1),period=12),lambda=0) 
 
# resultados no objeto modelo 
names(modelo)summary(modelo) 
      tt aBBZBB 112112 1111 
1̂
1̂
Exemplo: previsão da airline 
# faz previsão 48 meses à frente 
previsao=forecast(modelo,h=48) 
plot(previsao) 
lines(AirPassengers) 
 
# previsões 
previsao$mean 
 
# limite superior do intervalo de 
# confiança das previsões 
previsao$upper 
 
# limite inferior do intervalo de 
# confiança das previsões 
previsao$lower 
 
# valores ajustados 
# para o período histórico 
previsao$fitted 
Exemplo: identificação automática de modelo 
# função auto.arima 
auto.arima(AirPassengers) 
Não incluiu a componente MA sazonal 
Exemplo: identificação automática de modelo 
# ACF dos resíduos da estimação automática do modelo ARIMA 
modelo=auto.arima(AirPassengers) 
acf(modelo$residuals,60) 
Autocorrelação significativa 
decorrente da ausência da 
componente MA sazonal (Q) 
Atividade 1 
Na planilha energia.csv são disponibilizadas as série de consumo de 
energia elétrica (GWh) no Brasil para as classes de consumo comercial, 
residencial, industrial e outras, bem como a série do consumo total. 
 
Considere apenas as observações a partir de janeiro de 2004 e reserve as 
observações relativas ao ano de 2016 para o conjunto outsample ou 
amostra de validação. 
 
Modele cada série separadamente pelo modelo de Holt-Winters, inclusive 
a série do consumo total (sem considerar os dados de 2016). 
 
Obtenha as previsões geradas por cada modelo para o ano de 2016 e 
calcule os erros MAD (erro médio absoluto) e MAPE (erro médio relativo). 
 
Some as previsões dos consumos das classes para obter uma previsão 
via abordagem bottom-up para o consumo total. 
 
Qual abordagem gerou a melhor previsão para o consumo total, a 
aplicação do modelo Holt-Winters na série do total ou a abordagem 
bottom-up? 
Atividade 2 
Na planilha energia.csv são disponibilizadas as série de consumo de 
energia elétrica (GWh) no Brasil para as classes de consumo comercial, 
residencial, industrial e outras, bem como a série do consumo total. 
 
Considere apenas as observações a partir de janeiro de 2004 e reserve as 
observações relativas ao ano de 2016 para o conjunto outsample ou 
amostra de validação. 
 
Modele cada série separadamente pelos modelos de Box & Jenkins, 
inclusive a série do consumo total (sem considerar os dados de 2016). 
 
Obtenha as previsões geradas por cada modelo para o ano de 2016 e 
calcule os erros MAD (erro médio absoluto) e MAPE (erro médio relativo). 
 
Some as previsões dos consumos das classes para obter uma previsão 
via abordagem bottom-up para o consumo total. 
 
Qual abordagem gerou a melhor previsão para o consumo total, a 
aplicação do modelo de Box & Jenkins na série do total ou a abordagem 
bottom-up? 
Atividade 3 
Simule modelos ARIMA(p,d,q) no R e na sequência 
use a função auto.arima disponibilizada no pacote 
forecast, 
 
Verifique se o modelo identificado corresponde ao 
modelo simulado. 
Atividade 4 
Visite a página http://robjhyndman.com/hyndsight/ 
Atividade 5 
Visite a página https://www.otexts.org/fpp/7/7 
Referências bibliográficas 
CRYER, J.D.; CHAN, K.S. Time Series Analysis with 
applications in R, Springer, 2008. 
 
SOUZA, R.C.; CAMARGO, M.E. Análise e Previsão 
de Séries Temporais: Os modelos ARIMA, Ijuí: 
SEDIGRAF, 1996. 
Redes Neurais Artificiais 
Artificial Neural Networks 
O que é uma Rede Neural Artificial? 
• Modelo matemático inspirado na estrutura 
neural de organismos inteligentes e que 
adquirem conhecimento através da 
experiência. 
 
• Baseado no funcionamento do cérebro, o 
modelo é capaz de aprender, assimilar, errar e 
aprender com seus erros. 
• Os neurônios se comunicam através de sinapses. 
• Os impulsos recebidos por um neurônio são processados, e 
atingindo um dado limiar, o neurônio dispara, produzindo uma 
substância neurotransmissora que flui do corpo celular para o 
axônio, que pode estar conectado a um dendrito de um outro 
neurônio. 
 
 
 
 
 
 
• Em média, cada neurônio forma entre mil e dez mil sinapses. 
• O cérebro humano possui cerca de 10 E11 neurônios, e o 
número de sinapses é de mais de 10 E14, possibilitando a 
formação de redes muito complexa. 
 
Redes Neurais Biológicas 
McCullock e Pitts 1943 
Warren McCulloch 
1898-1969 
Walter Pitts 
1923-1969 
Analogia entre o neurônio biológico e o processo eletrônico 
 
Primeiro modelo computacional para o neurônio biológico 
 
Simulam o comportamento do neurônio biológico com uma saída binária que é 
função do valor de suas diversas entradas binárias ponderadas por pesos 
sinápticos. Y=f(w1X1+...+wpXp) = f(w
TX) 
Se w1X1+...+wpXp    Y=1 (pulso) 
Se w1X1+...+wpXp <   Y= -1 (não pulso) 
 
w1 
w2 
wp 
 
X1 
X2 
Xp 
 
f() 
Y  ... 
Regras E e OU 
Exemplo regra E 
X1 
X2 
W1=0.6 
W2=0.6 
 = 1 
Se 0,6X1+ 0,6X2 > 1  Y=1 
Se 0,6X1+ 0,6X2  1  Y=0 
Exemplo regra OU 
X1 
X2 
W1=1.1 
W2=1.1 
 = 1 
Se 1,1X1+ 1,1X2 > 1  Y=1 
Se 1,1X1+ 1,1X2  1  Y=0 
Um único neurônio artificial só funciona com classes linearmente separáveis 
Discriminador linear e o problema do XOR 
Neurônio artifical de McCulloch & Pitts 
Y=f(w1X1,+ w2X2) 
Se w1X1 + w2X2 >   Y=1 
Se w1X1 + w2X2    Y=0 
Reta 
w1X1,+ w2X2 =  
Se w1X1 + w2X2 >  → Y=1 
Se w1X1 + w2X2   → Y=0 
X1 E X2 X1 OU X2 X1 XOR X2 
X1 
X2 
X1 
X2 
X1 
X2 
No caso do XOR, não existe uma única reta que separe os pontos (0,0) e (1,1) 
para um lado, e (0,1) e (1,0) do outro lado. 
w1X1,+ w2X2 >  
Y=1 
w1X1,+ w2X2   
Y=0 
Solução do problema do XOR 
X1 
X2 
W1=0.6 
W2=0.6 
W1=1.1 
W2=1.1 
 = 1 
 = 1 
W1= - 2 
W2=1.1 
 = 1 
Rede com três neurônios 
Neurônio 1 
Neurônio 2 
Neurônio 3 
Neurônio 1 Neurônio 2 
Neurônio 3 
Neurônio 1 
N
e
u
rô
n
io
 2
 
 Implementação do primeiro modelo de neurônio 
artificial: o Perceptron. 
 
 Saída binária (-1 OU +1) é função (degrau) da 
soma dos estímulos (entradas -1 OU +1), 
ponderados por pesos com valores reais. 
 
 Rede neural com camada única. 
 
 Pesos sinápticos adaptáveis. 
 
 Introdução de um método de treinamento para 
ajuste dos pesos sinápticos. 
Frank Rosenblatt 1958 
IEEE Frank Rosenblatt Award 
Frank Rosenblatt 
1928 -1971 
Principles of neurodynamics; perceptrons 
and the theory of brain mechanisms 
Washington, Spartan Books, 1962 
Perceptron 
Y=f(w01 + w1X1+...+wpXp) = f(w
TX) 
Se w0 + w1X1+...+wpXp >   Y=1 (pulso) 
Se w0 + w1X1+...+wpXp    Y=-1 (não pulso) 
w1 
w2 
wp 
 
X1 
X2 
Xp 
Y ... 
+1 w0 
bias 
Função de ativação: Degrau (saída do perceptron é binária) 
Regra de propagação: w0 + w1X1+...+wpXp 
 
f() 
 
Lei de aprendizado do Perceptron 
Valores iniciais são atribuídos aleatoriamente aos pesos sinápticos w e 
limiar  
Para uma vetor de entrada  dpdidd xxxX ,,,.1 
Deseja-se uma saída yd 
A saída do perceptron pode ser y = -1 ou y = +1 
 
Rosenblatt empregou a regra de Hebb para alterar os pesos sinápticos w. 
  didi xyyw  i
velho
i
novo
i www 
Regra de Hebb 
Para yd = y o erro é zero, logo não há necessidade de modificar os pesos 
sinápticos w=0. 
 
Para yd = 1 e y = -1 , erro = 2 → 
Para yd = -1 e y = 1 , erro = -2 → 
d
ii xw 2
d
ii xw 2
d
i
d
i xyw 2
Perceptron com pesos adaptativos (aprendizado) 
Widrow & Lehr (1990) 
 velho
p
wE
w
w
w
w 

















 

1
0
Regra Delta de Widrow ou método do gradiente 
 
   
 









n
i
d
i
p
j
d
jij
wwww
yxwwEMin
p 1
2
0
,
,...,,
21
www velhonovo 
Algoritmo de treinamento ajusta os pesos w=(w0,...,wp) com o objetivo de 
minimizar o erro quadrático médio E(w) entre a saída da rede y=wTx e a saída 
desejada yd. 
Pesos w são inicializados aleatoriamente. 
 
Regra de atualização dos pesos. 
Gradiente da função 
erro quadrático médio 
saida da rede para 
o i-ésimoexemplo 
saida desejada do 
i-ésimo exemplo 
wj w0 
E(w) 
-E(w) 
 















pw
E
w
E
w
E
wE ,...,,
10
j
j
w
E
w


 
Regra Delta de Widrow ou método do gradiente 
w0 
wj 
Vetor wvelho 
Vetor w 
Vetor de 
pesos ideais 
Vetor wnovo 
Regra Delta de Widrow ou método do gradiente 
j
velho
j
novo
j www 
 velho
p
wE
w
w
w
w 

















 

1
0
 
 
 










 n
i
d
i
p
j
d
ji
velho
j
d
ji
j
yxwx
w
wE
1 0
,,2
 
j
velho
j
w
wE
w


 



n
i
i
d
ji
velho
j
novo
j xww
1
, 



n
i
i
d
i
velhonovo Xww
1

j-ésimo elemento de w 
   
 









n
i
d
i
p
j
d
jij yxwwE
1
2
1
,
i erro no i-ésimo exemplo 
Atualiza j-ésimo elemento de w 
Vetor de atualização dos pesos 
Atualiza vetor de pesos w 
Padrão de entrada 
Elementos do gradiente de E(w) 
Erro 
Regra Delta de Widrow ou método do gradiente 
i
d
i
velhonovo Xww 
Modificação dos pesos realizada iterativamente para reduzir a diferença (delta 
) entre a saída desejada e a saída da rede a assim minimizar o erro médio 
quadrático. 
 
Para cada padrão de treinamento apresentado à rede, um novo ajuste nos 
pesos é realizado 
Padrão de entrada Erro 
d
i
p
j
d
ji
velho
ji yxw  
0
, d pididi xxX ,1, ,...,,1
Regra Delta 
Regra de Hebb 
d
i
d
i
velhonovo Xyww 2
A regra Delta é uma variante da regra de Hebb 
modificação 
proporcional a saida 
Werbos 1974 
Introduziu o método de retropropagação do erro 
(error backpropagation) para o ajuste dos pesos 
sinápticos. 
 
Tese de doutorado em Harvard 
Beyond regression: new tools for prediction 
and analysis in the behavioral sciences 
 
 
 
Rede neural de três camadas 
Paul J. Werbos 
https://www.researchgate.net/publication/35657389_Beyond_regression_new
_tools_for_prediction_and_analysis_in_the_behavioral_sciences 
Rumelhart, Hinton e Williams 1986 
Rumelhart, D. E., Hinton, G. E. & Williams, 
R. J. in Parallel Distributed Processing: 
Explorations in the Microstructure of 
Cognition. Vol. 1: Foundations (eds 
Rumelhart, D. E. & McClelland, J. L.) 
318−362 (MIT, Cambridge, 1986) 
David Rumelhart 
1942 - 2011 
Geoffrey E. Hinton Ronald J. Williams 
Redescobriram e desenvolveram o método de retropropagação 
do erro para o ajuste dos pesos sinápticos. 
http://www.cs.toronto.edu/~fritz/absps/pdp8.pdf 
Rumelhart, Hinton e Williams 1986 
All the knowledge is in the connections 
David Rumelhart 
 
O método de retropropagação do erro permite treinar 
eficientemente redes com camadas intermediárias (Multilayer 
Perceptron MLP). 
We describe a new learning procedure, back-propagation, for networks of 
neurone-like units. The procedure repeatedly adjusts the weights of the 
connections in the network so as to minimize a measure of the difference between 
the actual output vector of the net and the desired output vector. As a result of the 
weight adjustments, internal ‘hidden’ units which are not part of the input or 
output come to represent important features of the task domain, and the 
regularities in the task are captured by the interactions of these units. The ability 
to create useful new features distinguishes back-propagation from earlier, simpler 
methods such as the perceptron-convergence procedure1. 
http://www.nature.com/nature/journal/v323/n6088/abs/323533a0.html 
Multilayer Perceptron com Backpropagation 
É a arquitetura de RNA mais difundida, eficaz e mais fácil de modelar 
redes complexas 
 
A retropropagação do erro é uma variação da regra delta, apropriada para 
redes multi-camadas: a regra delta generalizada. 
 
A regra delta padrão essencialmente implementa um gradiente 
descendente no quadrado da soma do erro para funções de ativação 
lineares. 
 
Na regra delta generalizada são utilizadas funções de ativação não 
lineares, diferenciáveis e não decrescentes (sigmóide ou tangente 
hiperbólica). A função degrau não se enquadra nesse requisito. 
 
A superfície do erro pode não ser tão simples, as redes ficam sujeitas aos 
problemas de de mínimos locais. 
Camada 
escondida 
Camada 
de saída 
Camada 
de entrada 
Y 
X1 
X2 
Variável dependente 
(Saída) 
Variáveis 
Independentes 
(Entradas) 
Recebe as variáveis de entrada 
apresentadas à rede neural artificial 
Realiza a maior parte do processamento, 
extrai as características contidas nos 
dados apresentadosà rede 
Calcula o resultado da 
rede neural artificial 
Multilayer Perceptron (MLP) 
Rede MLP típica com três camadas: 
• uma camada de entrada 
• uma camada escondida 
• uma camada de saída 
Perceptron – Neurônio Artificial 
w1 
w2 
wp 
 
X1 
X2 
Xp 
... 
+1 w0 
bias 



p
j
jj xwnet
0








 

p
j
jj xwfY
0
 
f() 
Funções de ativação típicas 
 
 net
netf


exp1
1
 
   
   netnet
netnet
netf



expexp
expexp
sigmóide 
tangente hiperbólica 
Normalização dos dados de entrada 
Uma característica das funções sigmoidais é a saturação, ou 
seja, para valores grandes de argumento, a função opera numa 
região de saturação. 
É importante trabalhar com valores de entrada que estejam 
contidos num intervalo [0,1] e que não atinjam a saturação da 
função de ativação. 
Definição da Arquitetura da rede 
A quantidade de neurônios nas camadas de entrada e de saída é 
definida em função do problema em questão. 
 
A quantidade de neurônios nas camadas de processamento são 
características do projeto. 
 
Mais neurônios na camada escondida contribuem para uma maior 
capacidade de mapeamento não-linear da rede. No entanto, 
quando se essa quantidade for superdimensionada pode haver o 
problema de sobre-ajustamento (overfitting). 
 
Por outro lado, uma rede com poucos neurônios na camada 
escondida pode não ser capaz de realizar o mapeamento 
desejado, o que é denominado de underfitting. 
Teorema de Kolmogorov-Nielsen 
Dada uma função contínua arbitrária f[0,1]n -> Rm, 
f(x)=y, existe sempre para f uma implementação 
exata de uma RNA de três camadas, sendo a 
camada de entrada um vetor de dimensão n, a 
camada oculta composta por 2n+1 neurônios e a 
camada de saída com m neurônios representando 
as m componentes de y 
RNA é um aproximador universal de funções 
Aprendizagem supervisionada 
• O aprendizado é resultado de apresentação repetitiva de todas os 
padrões de treinamento (pares entrada/saída). 
• Cada apresentação de todo o conjunto de treinamento é denominada 
época. 
• O processo de aprendizagem é repetido época após época, até que um 
critério de parada seja satisfeito 
• Para cada estímulo a rede se adapta para gerar uma saída próxima da 
saída desejada. 
• Quando a saída gerada não coincide com a saída desejada existe um 
erro que necessita ser corrigido 
• Retropropagação do erro: A correção é feita propagando o erro para 
trás pelas conexões da camada anterior até atingir a camada de 
entrada 109 
par entrada / saída 
Saída 
desejada 
Estímulo 
na entrada 
da rede 
Retropropagação do erro 
FASE FORWARD
FASE BACKWARD
padrão de
entrada
cálculo da
saída
erropesos
ajustados
O ajuste dos pesos sinápticos 
(w) se dá pela execução da 
retropropagação do erro, um 
processo de otimização em duas 
fases (fase forward e fase 
backward), onde os pesos são 
definidos de forma a minimizar a 
soma dos quadrados dos erros. 
    ijijij wtwtw 1
ij
ij
w
E
w



Taxa de aprendizagem 
Derivada do erro em relação aos pesos sinápticos 
Propaga a entrada 
através das camadas 
ocultas até a saída 
Propagar os erros de volta 
até a camada de entrada 
Atualização dos pesos: local ou por lote 
Local ou online: a atualização é feita imediatamente após a apresentação de 
cada padrão (amostra) de treinamento. 
Lote ou off-line:a atualização dos pesos só é feita após a apresentação de 
todas as amostras de treinamento que constituem uma época. 
- o ajuste relativo a cada apresentação de uma amostra é acumulado. 
- fornece uma melhor estimativa do vetor gradiente. 
- requer um menor armazenamento para cada conexão, e apresenta 
 menos possibilidade de convergência para um mínimo local. 
Retropropagação do erro 
 Inicialização aleatória dos pesos 
Regra delta generalizada 
   
 

n
p
k
j
p
j
d
j yywE
1 1
2
2
1
 pjjpj netfy 















pw
E
w
E
w
E
E ,...,,
10
ij
ij
w
E
w


 
Regra delta generalizada de atualização dos pesos 
Soma dos quadrados dos erros 
n padrões de treinamento 
k neurônios na camada de saída 
Aprendizado por 
gradiente descendente. 
    ijijij wvelhownovow 
resultado do neurônio j na camada de saída 
net é função dos pesos w das sinapses que 
chegam ao neurônio j 
0<<1 é a taxa de aprendizagem 
Regra delta generalizada 
Sem perda de generalidade considere uma RNA com 3 camadas: 
J0 = p neurônios na camada de entrada (camada 0) 
J1 neurônios na camada de escondida (camada 1) 
J2 = 2 neurônios na camada de saída (camada 2) 
 
Notação para os pesos wK,i,j, 
K = índice da camada 
i = índice do neurônio na camada K 
j = índice do neurônio na camanda K-1 
 
Notação para as saídas dos neurônios 
Na camada de saída (camada 2) y2,j,i 
Na camada escondida (camada 1) u1,j,i 
Na camada de entrada (camada 0) xj,i 
j = índice do neurônio na 
camada 
i = padrão de treinamento 

































d
n
d
n
d
d
d
d
y
x
y
x
y
x

2
2
1
1
n padrões de treinamento 
Fase forward do aprendizado supervisionado 
w2,1,1 
w2,1,2 
w2,1,J1 
... 
+ 
net2,1,i 
f 
y2,1,i 
w2,2,1 
w2,2,2 
w2,2,J1 
... 
+ 
net2,2,i 
f 
y2,2,i 
w1,1,1 
w2,1,2 
w1,1,J0 
... 
+ 
net1,1,i 
f 
u1,1,i 
w2,J1,1 
w2,J1,2 
w2,j1,J0 
... 
+ 
net1,J1,i 
f 
u1,J1,i 
... 
X1,i 
X2,i 
XJ0,i 
   
  















n
i
J
j
d
ij
J
h
ihhj yuwfwE
1
2
1
2
,,2
1
1
,,1,,2
2
1
    
   


























n
i
J
j
d
ij
J
h
J
g
igghhj yxwfwfwE
1
2
1
2
,,2
1
1
0
1
,,0,,1,,2
2
1
   
 

n
i
J
j
d
ijij yywE
1
2
1
2
,,2,,2
2
1
Retropropagação do erro 
Para um dado conjunto de pesos w, o erro quadrático na saída da rede é 
dado por: 
Regra de atualização dos pesos 
www velhonovo  Ew  
Retropropagação do erro Atualização dos pesos 
sinápticos das entradas dos 
neurônios da camada de saída. 
w2,1,1 
w2,1,2 
w2,1,J1 
... 
+ 
net2,1,i 
f 
y2,1,i 
w2,2,1 
w2,2,2 
w2,2,J1 
... 
+ 
net2,2,i 
f 
y2,2,i 
w1,1,1 
w2,1,2 
w1,1,J0 
... 
+ 
net1,1,i 
f 
u1,1,i 
w2,J1,1 
w2,J1,2 
w2,j1,J0 
... 
+ 
net1,J1,i 
f 
u1,J1,i 
... 
X1,i 
X2,i 
XJ0,i 
?
,,2
,,2 



hj
hj
w
E
Ew 
     
   















n
i
J
j
d
ijij
n
i
J
j
d
ij
J
h
ihhj ynetfyuwfwE
1
2
1
2
,,2,,2
1
2
1
2
,,2
1
1
,,1,,2
2
1
2
1
Retropropagação do erro 

 









 n
i hj
ij
ij
ij
ijhj w
net
net
y
y
E
w
E
1 ,,2
.,2
,,2
,,2
,,2,,2



1
1
,,1,,2,,2
J
h
ihhjij uwnet
ih
hj
ij
u
w
net
,,1
,,2
,,2


 d ijij
ij
yy
y
E
,,2,,2
,,2



 ij
ij
ij
netf
net
y
,,2
,,2
,,2
'


Atualização dos pesos 
sinápticos das entradas dos 
neurônios da camada de saída. 
   
 

n
i
J
j
d
ijij yywE
1
2
1
2
,,2,,2
2
1
    



 n
i
ihij
n
i
ihij
d
ijij
hj
uunetfyy
w
E
1
,,1,,2
1
,,1,,2,,2,,2
,,2
' 
Retropropagação do erro Atualização dos pesos 
sinápticos das entradas dos 
neurônios da camada de saída. 
w2,1,1 
w2,1,2 
w2,1,J1 
... 
+ 
net2,1,i 
f 
y2,1,i 
w2,2,1 
w2,2,2 
w2,2,J1 
... 
+ 
net2,2,i 
f 
y2,2,i 
w1,1,1 
w2,1,2 
w1,1,J0 
... 
+ 
net1,1,i 
f 
u1,1,i 
w2,J1,1 
w2,J1,2 
w2,j1,J0 
... 
+ 
net1,J1,i 
f 
u1,J1,i 
... 
X1,i 
X2,i 
XJ0,i 
d
ii yy ,1,2,1,2 
d
ii yy ,2,2,2,2 
   id ii netfyy ,1,2,1,2,1,2 '
   id ii netfyy ,2,2,2,2,2,2 '
i,1,2
i,2,2
Retropropagação do erro 



n
i
ihijhj uw
1
,,1,,2,,2 
hj
velhonovo www
hjhj ,,2,,2,,2

ihijhj uw ,,1,,2,,2 
Se atualiza após a apresentação de cada padrão (local) 
Se atualiza após a apresentação de todos os padrões (lote) 
Retropropagação do erro Atualização dos pesos sinápticos 
das entradas dos neurônios da 
camada escondida 
w2,1,1 
w2,1,2 
w2,1,J1 
... 
+ 
net2,1,i 
f 
y2,1,i 
w2,2,1 
w2,2,2 
w2,2,J1 
... 
+ 
net2,2,i 
f 
y2,2,i 
w1,1,1 
w2,1,2 
w1,1,J0 
... 
+ 
net1,1,i 
f 
u1,1,i 
w2,J1,1 
w2,J1,2 
w2,j1,J0 
... 
+ 
net1,J1,i 
f 
u1,J1,i 
... 
X1,i 
X2,i 
XJ0,i 
Retropropagação do erro 

 









 n
i gh
ih
ih
ih
ihgh w
net
net
u
u
E
w
E
1 ,,1
,,1
,,1
,,1
,,1,,1



0
1
,,0,,1,,1
J
g
igghih xwnet
ig
gh
ih
x
w
net
,,0
,,1
,,1



 ih
ih
ih
netf
net
u
,,1
,,1
,,1
'


   



 2
1
,,2,,2,,2,,2
,,1
'2
J
j
hjijij
d
ij
ih
wnetfyy
u
E
Atualização dos pesos sinápticos 
das entradas dos neurônios da 
camada escondida 
?
,,1
,,1 



gh
gh
w
E
Ew 

 






 2
1 ,,1
,,2
,,2,,1
J
j ih
ij
ijih u
net
net
E
u
E
  
 


 n
i
igih
n
i
ig
J
j
ihhjij
gh
xxnetfw
w
E
1
,,0,,1
1
,,0
2
1
,,1,,2,,2
,,1
2'2 
Retropropagação do erro 



n
i
igihgh xw
1
,,0,,1,,1 
gh
velhonovo www
ghgh ,,1,,1,,1

igihgh xw ,,0,,1,,1 
Se atualiza após a apresentação de cada padrão (local) 
Se atualiza após a apresentação de todos os padrões (lote) 
Retropropagação do erro 
w2,1,1 
w2,1,2 
w2,1,J1 
... 
+ 
net2,1,i 
f 
y2,1,i 
w2,2,1 
w2,2,2 
w2,2,J1 
... 
+ 
net2,2,i 
f 
y2,2,i 
w2,J1,1 
w2,J1,2 
w2,j1,J0 
... 
+ 
net1,J1,i 
f 
u1,J1,i 
... 
X1,i 
X2,i 
XJ0,i 
i
d
i yy ,1,2,1,2 
i
d
i yy ,2,2,2,2 
   iid i netfyy ,1,2,1,2,1,2 '
   iid i netfyy ,2,2,2,2,2,2 '
i,1,2
i,2,2
Atualização dos pesos 
sinápticos das entradas dos 
neurônios da camada oculta. 
1,2,2,2,2 wi 
i,1,1w1,1,1 
w2,1,2 
w1,1,J0 
... 
+ 
net1,1,i 
f 
u1,1,i 
 i
i
i
netf
w
w
,1,1
1,2,2,2,2
1,1,2,1,2
'












1,1,2,1,2 wi 
i,1,1
O processo de minimização da função erro não apresenta 
convergência garantida para o mínimo global. 
 
1) Quando o total de iterações atinge o máximo número de 
iterações pré-definido. Este critério de parada não leva em conta 
o estado do processo iterativo. 
 
2) Quando a norma euclidiana da estimativa do vetor gradiente 
atinge um valor suficientemente pequeno. 
 
3) Quando a variação do erro quadrático médio de uma época 
para outra atingir um valor suficientemente pequeno. 
 
4) Quando o erro quadrático médio atingir um valor 
suficientemente pequeno. 
Critérios de parada 
 )(wE
)(wE
 )(wE
125 
Taxa de aprendizagem variável 
ij
velhonovo
w
E
ww
ijij 

 
A taxa de aprendizagem 0 <  < 1 é uma constante 
 
Valores pequenos para  implicam em longo tempo para 
convergência 
 
Valores grandes implicam na oscilação do algoritmo entre 
soluções na vizinhança da solução ótimo, sem no entanto 
convergir. 
 
Uma solução consiste em modificar a taxa de aprendizagem 
ao longo do treinamento, iniciando com um valor grande, 
mas gradualmente reduzido. 
Taxa de aprendizagem variável 
Erro mínimo 
Superfície do 
erro 
Taxa  pequena Taxa  grande 
Uma maneira de aumentar a taxa de aprendizado sem levar à oscilação é 
modificar a regra delta generalizada para incluir o momento, um termo 
adicional expresso pelasoma ponderada das direções de buscas 
anteriores. 
 
Introduz um efeito de inércia no ajuste dos pesos. 
 
 
 
 
 
 
Os ajustes mais recentes nos pesos exercem influência no ajuste atual. 
 
O momento ajuda a amortecer as oscilações ao redor da solução ótima. 
 
Ajuda a aumentar a taxa de aprendizagem no inicio do aprendizado 
 
É uma estratégia para evitar mínimos locais da função erro 127 
Momentum term 
anterior
ij
ij
atual
ij w
w
E
w 


 
Tipos de Redes ou Paradigmas de Redes 
• Hopfield 
• Perceptron 
• Retro Propagação 
• Boltzmann 
• Contra propagação 
• Regressão Geral 
• LVQ 
• STN 
• Base Radial 
• PNN 
• ART 
• SOM 
• MLP 
128 
Além das propriedades dos neurônios 
individuais, uma rede neural é também 
caracterizada por propriedades globais, 
tais como: 
 
 - A topologia da rede. 
 
 - O algoritmo de aprendizado utilizado. 
 
 - O esquema de codificação dos dados 
Pacote neuralnet 
Redes Neurais Artificiais no R 
Um vendedor de automoveis deseja construir um aplicativo 
para precificação de carros usados, em especial de Toyota 
Corollas usados. 
 
O modelo deve fornecer estimativas de preço a partir de 
algumas características do carro usado. 
 
Ajuste uma rede neural artificial Multilayer Perceptron com 
três camadas para prever o preço do Toyota Corolla. 
 
Use as observações de 1436 Toyota Corollas disponíveis no 
arquivo ToyotaCorolla.csv. Para avaliar a habilidade da rede 
neural fornecer respostas adequadas, selecione 
aleatoriamente 100 observações para a amostra de validação. 
Exemplo Toyota 
# instala pacote 
library(neuralnet) 
# leitura de dados 
filename="c:/curso R/ToyotaCorolla.csv" 
dados=read.csv2(filename,header=TRUE,sep=",") 
# dimensões da matriz de dados 
nobs=dim(dados)[1] # número de casos (linhas) 
nvar=dim(dados)[2] # número de variáveis (colunas) 
# visualiza primeiras linhas da matriz de dados 
head(dados) 
attach(dados) 
# recodifica variável FuelType 
Fuel=ifelse(FuelType=="CNG",1,ifelse(FuelType=="Diesel",2,3)) 
# Matriz de dados com Fuel no lugar de FuelType 
dados1=data.frame(Price,Age,KM,Fuel,HP,MetColor,Automatic,CC,Doors,
Weight) 
# Intervalo de variação de cada variável 
limites=rbind(apply(dados1,2,min),apply(dados1,2,max)). 
Exemplo Toyota 
# normaliza dados 
dados1norm=matrix(0,nobs,nvar) 
colnames(dados1norm)=colnames(dados1) 
for (j in 1:nvar) { 
 amplitude=limites[2,j]-limites[1,j] 
 for (i in 1:nobs) { 
 dados1norm[i,j]=(dados1[i,j]-limites[1,j])/amplitude 
 } 
} 
 
# separa amostras de treinamento (insample) e validação (outsample) 
indice=seq(1,nobs,1) 
indice_treina=sample(nobs,1200) 
indice_valida=indice[-indice_treina] 
dados_treina=dados1norm[indice_treina,] 
head(dados_treina) 
dados_valida=dados1norm[indice_valida,] 
head(dados_valida) 
Exemplo Toyota 
# treina rede neural 
rede=neuralnet(Price~Age+CC+Doors+KM+HP,hidden=5,data=dados_treina) 
plot(rede) 
Exemplo Toyota 
# performance da rede neural na previsao do preço do conjunto de treinamento 
resposta=compute(rede,dados_treina[,c(2,8,9,3,5)])$net.result 
preco_estimado=resposta*(limites[2,1]-limites[2,2])+limites[1,1] 
preco_verificado=dados_treina[,1]*(limites[2,1]-limites[2,2])+limites[1,1] 
 
windows() 
plot(preco_estimado,preco_verificado,xlab="Estimados",ylab="Verificados",main="Preço
s: conjunto de treinamento") 
 
correlacao_insample=cor(preco_estimado,preco_verificado) 
MAPE_insample=mean(abs(preco_verificado-preco_estimado)*100/preco_verificado) 
MAD_insample=mean(abs(preco_verificado-preco_estimado)) 
 
print(correlacao_insample) 
print(MAPE_insample) 
print(MAD_insample) 
Exemplo Toyota 
Exemplo Toyota 
Exemplo Toyota 
# performance da rede neural na previsao do preço do conjunto de validacao 
resposta=compute(rede,dados_valida[,c(2,8,9,3,5)])$net.result 
preco_estimado=resposta*(limites[2,1]-limites[2,2])+limites[1,1] 
preco_verificado=dados_valida[,1]*(limites[2,1]-limites[2,2])+limites[1,1] 
 
windows() 
plot(preco_estimado,preco_verificado,xlab="Estimados",ylab="Verificados",main="Preço
s: conjunto de validação") 
 
correlacao_outsample=cor(preco_estimado,preco_verificado) 
MAPE_outsample=mean(abs(preco_verificado-preco_estimado)*100/preco_verificado) 
MAD_outsample=mean(abs(preco_verificado-preco_estimado)) 
 
print(correlacao_outsample) 
print(MAPE_outsample) 
print(MAD_outsample) 
Exemplo Toyota 
janela 
alvo 
valor 
tempo 
Entradas 
 da rede = 
5 valores 
passados 
Saída 
Desejada = 
valor da série 
1 passo à 
frente 
Previsão de séries temporais com RNA 
Considere um modelo univariado: y(t) = f( y(t-1),..., y(t-5) ) 
Considere previsão 1 passo à frente 
Geração dos padrões de treinamento da RNA 
janela de 
entrada 
janela de 
saída (alvo) 
janela 
alvo 
Ajuste dos pesos 
a partir do erro 
Erro= alvo - previsto 
Entradas 
 da rede 
Saída da rede: 
Valor previsto 
um passo à frente 
Previsão de séries temporais com RNA 
janela 
alvo 
Ajuste dos pesos 
a partir do erro 
Erro= alvo - previsto 
Entradas 
 da rede 
Saída da rede: 
Valor previsto 
um passo à frente 
Previsão de séries temporais com RNA 
janela 
alvo 
Ajuste dos pesos 
a partir do erro 
Erro=alvo - previsto 
Entradas 
 da rede 
Saída da rede: 
Valor previsto 
um passo à frente 
Previsão de séries temporais com RNA 
janela 
alvo 
Ajuste dos pesos 
a partir do erro 
Erro=alvo - previsto 
Entradas 
 da rede 
Saída da rede: 
Valor previsto 
um passo à frente 
Previsão de séries temporais com RNA 
janela 
previsto 
Saída da rede: 
Valor previsto 
Previsão de séries temporais com RNA 
janela previsto 
Saída da rede: 
Valor previsto 
Entradas da rede: 
inclui valores 
previstos pela Rede 
Previsão de séries temporais com RNA 
janela 
previsto 
Saída da rede: 
Valor previsto 
Entradas da rede: 
inclui valores 
previstos pela Rede 
Previsão de séries temporais com RNA 
Exemplo: previsão da série airline com RNA 
Série Airline: Número mensal de passageiros, em 
milhares, das linhas aéreas no período de janeiro 
de 1949 até dezembro de 1960 
Exemplo: previsão da série airline com RNA 
# Carrega pacotes 
library(neuralnet) 
 
# Leitura de dados 
serie=AirPassengers 
plot(serie,xlab="meses",ylab="passageiros (1000)") 
Exemplo: previsão da série airline com RNA 
# número de observações 
n=length(serie) 
 
# aplica o log na série 
logserie=log(serie) 
windows() 
plot(logserie,xlab="meses",ylab="log(passageiros (1000))") 
Transformação 
logarítmica 
Exemplo: previsão da série airline com RNA 
# retira a tendência da série 
delta=diff(logserie,1) 
windows() 
plot(delta,xlab="meses",ylab="primeira diferença log(passageiros 
(1000))") 
maximo=max(delta) 
minimo=min(delta) 
normalizado=(delta-minimo)/(maximo-minimo) 
Primeiras 
diferenças 
Exemplo: monta padrões de treinamento 
lags=c(1,6,12) # INFORME OS LAGS 
inic=max(lags)+1 
nobs=length(normalizado) 
inputs=c() # PADROES DE ENTRADA 
output=c() # PADROES DE SAIDA 
indice=c() # posição de cada output no tempo 
for (i in inic:nobs) { 
 inputs=rbind(inputs,normalizado[i-lags]) 
 output=c(output,normalizado[i]) 
 indice=c(indice,i+1) 
} 
data.train=cbind(inputs,output) # PADRÕES ENTRADA/SAÍDA 
 
nomes=c() 
for(i in 1:length(lags)) {nomes[i]=paste("X",i,sep="")} 
colnames(data.train)=c(nomes,"Y") 
 
limites=c(0,1) 
p=dim(inputs)[2]+1 # número de variáveis no modelo 
range.data=matrix(rep(limites,p),2,p) # intervalo de cada variável 
Padrões de 
treinamento para 
previsões 1 passo 
a frente 
Exemplo: treinamento da RNA 
# SELECIONA AMOSTRAS INSAMPLE E OUTSAMPLE 
npadroes=dim(data.train)[1] 
noutsample=12 # 12 últimos padroes (12 últimos meses da série) 
ninsample=npadroes-noutsample 
 
# TREINA REDE FEEDFORWARD # 
modelo=neuralnet(formula = Y ~ X1 + X2 + 
X3,data=data.train[1:ninsample,], hidden=8,linear.output=F)# gráfico da rede neural 
windows() 
plot(modelo,show.weights=F) 
Exemplo: treinamento da RNA 
plot(modelo,show.weights=T) 
Exemplo: previsão insample 
# previsão da diferença do log normalizada 
previsao=compute(modelo,inputs[1:ninsample,])$net.result 
plot(output[1:ninsample]) 
lines(1:ninsample,previsao) 
 
# previsão do log passageiros 1 passo a frente 
previsaolog=c() 
for (i in 1:ninsample) { 
 x0=logserie[indice[i]-1] 
 cumprevisao=x0+previsao[i] *(maximo-minimo)+minimo 
 previsaolog=c(previsaolog,cumprevisao) 
} 
plot(logserie[indice[1]:indice[ninsample]]) 
lines(1:ninsample,previsaolog) 
 
# previsão do número de passageiros (1000) 1 passo a frente 
previsao_passageiros=exp(previsaolog) 
plot(serie[indice[1]:indice[ninsample]]) 
lines(1:ninsample,previsao_passageiros) 
MAD = mean(abs(serie[indice[1]:indice[ninsample]] - previsao_passageiros)) 
MAPE = 100*mean(abs(serie[indice[1]:indice[ninsample]] - 
previsao_passageiros)/serie[indice[1]:indice[ninsample]]) 
Exemplo: previsão insample 
Exemplo: previsão outsample 
# previsão da diferença do log normalizada 
previsao=compute(modelo,inputs[(ninsample+1):(ninsample+noutsample),])$net.result 
plot((ninsample+1):(ninsample+noutsample),output[(ninsample+1):(ninsample+noutsample)]) 
lines((ninsample+1):(ninsample+noutsample),previsao) 
 
# previsão do log passageiros 1 passo a frente 
previsaolog=c() 
for (i in (ninsample+1):(ninsample+noutsample)) { 
 x0=logserie[indice[i]-1] 
 cumprevisao=x0+previsao[i-ninsample] *(maximo-minimo)+minimo 
 previsaolog=c(previsaolog,cumprevisao) 
} 
plot(indice[ninsample+1]:indice[ninsample+noutsample],logserie[indice[ninsample+1]:indice
[ninsample+noutsample]]) 
lines(indice[ninsample+1]:indice[ninsample+noutsample],previsaolog) 
 
# previsão do número de passageiros (1000) 1 passo a frente 
previsao_passageiros=exp(previsaolog) 
plot(indice[ninsample+1]:indice[ninsample+noutsample],serie[indice[ninsample+1]:indice[ni
nsample+noutsample]]) 
lines(indice[ninsample+1]:indice[ninsample+noutsample],previsao_passageiros) 
 
MAD = mean(abs(serie[indice[ninsample+1]:indice[ninsample+noutsample]] - 
previsao_passageiros)) 
MAPE = 100*mean(abs(serie[indice[ninsample+1]:indice[ninsample+noutsample]] - 
previsao_passageiros)/serie[indice[ninsample+1]:indice[ninsample+noutsample]]) 
Exemplo: previsão outsample 
Rede auto-organizável 
Self Organinzing Map (SOM) 
Rede auto-organizável 
Teuvo Kohonen 
Proposto por Teuvo Kohonen em 1982 
 
Rede neural com treinamento não supervisionado 
 
A rede aprende as similaridades entre os padrões de 
entrada (reconhecimento de padrões) 
 
Útil na análise de agrupamentos (cluster analysis) 
Inspiração neurofisiológica 
http://www.nature.com/articles/srep12455 
Ativação cortical 
relacionada à acupuntura 
Inspiração neurofisiológica 
Arquitetura do Mapa auto-organizável 
Em geral tem apenas duas camadas interconectadas 
por pesos sinápticos adaptáveis: 
• camada de entrada com p neurônios 
• camada de saída com q neurônios em uma grade 
bidimensional (mapa) 
X1 X2 Xp Camada de entrada 
Camada de saída 
Pesos wij 
Cada entrada é 
conectada com 
todos os 
neurônios da 
camada de saída 
Algortimo de treinamento 
 1) Inicialize a taxa de aprendizado, o tamanho da região de vizinhança e faça a 
Inicialização aleatória dos pesos. 
 2) Para cada padrão de treinamento (vetor xi  i=1,N) faça 
 2.1 Defina o neurônio vencedor 
 2.2 Atualize os pesos do neurônio vencedor e dos vizinhos. Os pesos destes 
neurônios ficam mais próximos do padrão de entrada. 
 2.3 Se o número de ciclos for múltiplo de N reduza a taxa de aprendizagem e 
a vizinhança do neurônio vencedor. 
 3) Repita o passo 2 até a convergência do mapa. 
 
 Duas fases: Ordenação e Convergência 
 Ordenação: Agrupa os neurônios em clusters (taxa de aprendizagem e região 
de vizinhança seguem trajetórias decrescentes) 
 Convergência: Refinamento do mapa topológica construído na ordenação 
(valores muito reduzidos da taxa de aprendizagem e vizinhança) 
Redução da região de vizinhança aos longo das iterações 
v 
v 
Visão Lateral Visão Superior 
Neurônio vencedor 
Região de vizinhança Região de vizinhança 
Região de vizinhança gaussiana do neurônio vencedor 







 

)(2
exp)(
2 t
th
jv
vj

rr
distância entre o neurônio v 
vencedor e o neurônio j que 
está sendo atualizado 
Redução da região de vizinhança aos longo das iterações 
Define a largura da vizinhança e 
deve ser decrescente no tempo. 







1
exp)0()(


t
t
)0(log
__
1


IteraçõesdeNúmero

 tthvj quando 0)(
Redução da taxa de aprendizagem 
  0
2
exp ,
t
t 

 
  
 
número total de iterações 
A taxa de aprendizagem decresce com o tempo, para que as 
adaptações sejam cada vez mais “finas”. 
Ajuste dos pesos 
)]()[()()()1( tthttt jvjjj wxww  
Vetor peso 
atualizado 
Vetor peso 
anterior 
Vizinhança Adaptação 
Taxa de 
aprendizagem 
Esta regra move o vetor de peso do neurônio vencedor em 
direção ao padrão de entrada 
w
Algortimo de treinamento 
Ao final do treinamento os neurônios organizam-se 
em um mapa topologicamente ordenado, em que 
padrões semelhantes ativam neurônios vizinhos. 
 
Após o treinamento os neurônios especializaram-se 
em detectar características dos padrões de entrada. 
SOM no R 
Exemplo Tipologias de curvas de carga (Pessanha et al, 2015) 
# Importação de dados 
filename="c:/curso R/curvas_de_carga.csv" # estabelece o diretório de trabalho 
dados = read.csv2(filename,sep=";",dec=".",header=T,row.names=1) 
 
# dimensões da matriz de dados 
dim(dados) 
 
# gráfico dos perfis 
matplot(matrix(seq(1,24,1),ncol=1),t(dados),type="l",ylab="PU da média",xlab="Horas") 
 
# Mapa de Kohonen de tamanho 3 x 3 
library(kohonen) 
tamanho=3 
dados=as.matrix(dados) 
mapa=som(dados,grid=somgrid(tamanho,tamanho),rlen=10000,alpha=c(0.05,0.01)) 
windows() 
plot(mapa) 
 
Exemplo Tipologias de curvas de carga (Pessanha et al, 2015) 
Perfis de carga 
Mapa 3 x 3 
Exemplo Tipologias de curvas de carga (Pessanha et al, 2015) 
Cálculo dos centroides em 
cada neurônio (cluster) 
 
Os centroides (perfis horários) 
são as linhas da matriz tipo 
ncurvas = length(mapa$unit.classif) 
classe=mapa$unit.classif 
numel=numeric(0) 
for (i in 1:(tamanho*tamanho)) { 
 indice=which(classe==i) 
 numel=c(numel,length(indice)) 
 if (i==1) { 
 if (length(indice)>1) { 
 tipo=apply(dados[indice,],2,"mean") 
 } else { 
 tipo=dados[indice,] 
 } 
 } else { 
 if (length(indice)>1) { 
 vetor=apply(dados[indice,],2,"mean") 
 } else { 
 vetor=dados[indice,] 
 } 
 tipo=rbind(tipo,vetor) 
 } 
} 
windows() 
par(mfrow=c(tamanho,tamanho)) 
par(mar=c(1,1,1,1)) 
indices<-apply(matrix(seq(tamanho^2:1),tamanho,tamanho),1,rev) 
vecindices<-matrix(t(indices),1,tamanho^2) 
for (i in 1:tamanho^2) { 
 aux<-which(classe==vecindices[i]) 
 teto<-max(dados[aux,]) 
 piso<-min(dados[aux,]) 
 ncurvas<-length(aux) 
 if (ncurvas>0) { 
 plot(tipo[vecindices[i],],type = "l",ylim=c(piso,teto),ylab= "", xlab = "",lty = "solid",col="black",lwd=2) 
 for (j in 1:ncurvas) { 
 lines(dados[aux[j],],col = "blue", lty = 1,ylab = "", xlab = "") 
 } 
 lines(tipo[vecindices[i],],type = "l",main = paste("cluster ",vecindices[i]),ylab = "", xlab = "",lty = "solid",col="black",lwd=2) 
 } 
} 
Exemplo Tipologias de curvas de carga (Pessanha et al, 2015) 
Gráfico das curvas em cada 
cluster e dos centroides 
Exemplo Tipologias de curvas de carga (Pessanha et al, 2015) 
Lógica Fuzzy 
Fuzzy Logic 
Teoria clássica dos conjuntos (Lógica Clássica) 
Os elementos são classificados em conjuntos bem definidos (crispset) 
 
Um elemento pertence ou não a um determinado conjunto. 
Exemplo: 
Consumidor adimplente: paga a conta até a data do vencimento 
Consumidor inadimplente: não paga a conta até a data do vencimento 
 
Lógica Booleana: VERDADEIRO ou FALSO. 
 
O grau de pertinência de um objeto ou indivíduo a um determinado 
conjunto é uma variável binária: 
”1” se elemento pertence a um conjunto 
“0” se elemento não pertence a um conjunto 
 
Um consumidor que PAGA a conta em dia tem grau de pertinência 1 no conjunto 
adimplente e grau de pertinência 0 no conjunto inadimplente. 
 
Um consumidor que NÃO PAGA a conta em dia tem grau de pertinência 0 no 
conjunto adimplente e grau de pertinência 1 no conjunto inadimplente. 
 
O que dizer do copo do meio ? 
 
O copo está meio cheio e meio vazio. 
 
O copo tem grau de pertinência de 50% no conjunto cheio e 
grau de pertinência de 50% no conjunto vazio 
Teoria dos conjuntos difusos (Lógica Fuzzy) 
Proposta por Zadeh em 1965 
https://people.eecs.berkeley.edu/~zadeh/papers/Fuzzy%20Sets-Information%20and%20Control-1965.pdf 
Zadeh, L.A.Fuzzy Sets, Information and Control, vol. 8, n.3, p. 338-353, June, 1965 
Lotfi Asker Zadeh 
Baku, Azerbaijão 1921 
http://images.google.com.br/imgres?imgurl=http://api.ning.com/files/0-voIJCmYgTgJmWkdGc1nvEiY0ke5Uye6Dbm7oSYjyl12kQPmC84se6li5xAI6hkFrmBKaBRw6-c-CXghvnRMt-Ylr0Dgr7c/398pxLotfi_Zadeh3.jpg&imgrefurl=http://www.analyticbridge.com/photo/photo/listForContributor%3FscreenName%3D08mjeds36039q&usg=__eqDRFg_W3t_hk2OCP8LQUyEPuLU=&h=599&w=398&sz=59&hl=pt-BR&start=4&tbnid=ZvhKn7jz0FxFyM:&tbnh=135&tbnw=90&prev=/images%3Fq%3DLotfi%2BZadeh%26gbv%3D2%26hl%3Dpt-BR
Teoria dos conjuntos difusos (Lógica Fuzzy) 
Trata de questões associadas à imprecisão na descrição das 
propriedades de um fenômeno (vagueza da informação), por exemplo, 
afirmações vagas: 
 
 O indivíduo é idoso 
 O indivíduo é alto 
 O transporte é muito rápido 
 A temperatura está quente 
 A chuva está forte 
 O consumo domiciliar é baixo 
 A participação da conta de luz no orçamento familiar é alta 
 
Os exemplos acima são informações linguisticas, ou seja, sentenças 
expressas em linguagem natural (baixo, moderado baixo, médio, 
moderado alto, alto) 
 
A Lógica Fuzzy fornece os fundamentos para efetuar o raciocínio 
aproximado com proposições imprecisas, permitindo tratar dados 
vagos ou imprecisos. 
Representação de informações línguisticas 
Teoria clássica dos conjuntos 
Conjuntos crisp 
 A {0,1} pertinência do tipo “tudo ou nada”, “sim ou não”, pertence (1) ou não 
pertence (0) ao conjunto A 
 
 
 
 
 
 
 
 
 
Lógica Fuzzy 
Função de perinência 
A(x) = 1 indica que x é completamente compatível com A 
A(x) = 0 indica que x é completamente incompatível com A; 
0 < A(x) < 1 indica que x é parcialmente compatível com A, com grau A(x) . 
 
Considere o conjunto de pessoas idosas (Conjunto A) 
Lógica Fuzzy x Teoria clássicas dos conjuntos 
Função de 
pertinência do 
conjunto alto na 
Teoria clássica dos 
conjuntos (crisp set) 
Transição abrupta 
Função de pertinência 
do conjunto fuzzy alto 
(fuzzy set) 
Transição gradual 
Conjunto clássico pessoas altas 
Conjunto fuzzy pessoas altas 
Conjunto Fuzzy 
Um conjunto fuzzy M definido no universo de discurso de uma variável X 
é caracterizado por uma função de pertinência M que mapeia os 
elementos de X no intervalo [0,1]. 
 
O grau de pertinência de um elemento xX ao conjunto fuzzy M é um 
número no intervalo [0,1] e mede a compatibilidade de x com o conjunto 
fuzzy M. 
 
Um conjunto fuzzy modela uma variável lingüística, por meio de uma 
função de pertinência M(X) que informa a compatibilidade um elemento 
de X com M. 
Altura (m) 1,80 1,65 0 
1 
Função de pertinência 
Conjunto fuzzy alto 
Variável lingüística: indivíduo é alto 
 
 acima de 1,80 m é ALTO com certeza. 
 grau de pertinência 1 no conjunto fuzzy alto 
 
 abaixo de 1,65 é NÃO ALTO com certeza. 
 grau de pertinência 0 no conjunto fuzzy alto 
 
 entre 1,65 e 1,80 PODE SER ALTO. 
 grau de pertinência entre 0 e 1 no conjunto fuzzy alto 
Universo de discurso (altura) 
M(X)[0,1] 
 Um conjunto fuzzy M em uma variável X é expresso 
por pares ordenados: 
 
}|))(,{( XxxxM M  
Universo de 
discurso 
Conjunto 
fuzzy 
Função de 
pertinência 
Conjunto Fuzzy 
CONJUNTO FUZZY M M(X) 
Lógica Fuzzy x Teoria Clássica dos Conjuntos 
Na lógica clássica os limites de idade que separam os conjuntos 
“jovem”, “adulto” e “idoso” são rigorosamente definidos e não há 
intercessão entre eles. Por exemplo: 
Jovem < 18 de idade 
Adulto entre 18 e 65 anos de idade 
Idoso > 65 anos de idade 
 
 
Na lógica fuzzy a separação entre os conjuntos é nebulosa, ou seja, há 
interseção entre os conjuntos “Jovem”, “Adulto” e “Idoso”. 
 
A seguir temos três conjuntos fuzzy (jovem, adulto e idoso) e suas 
respectivas funções de pertinência. 
idade 18 40 55 65 
Função de 
pertinência 
1 
0 
jovem adulto idoso 
30 
0,4 
0,6 
Um indivíduo com idade menor ou igual a 18 anos certamente é jovem. 
Um indivíduo com idade superior a 65 anos certamente é idoso. 
 
Mas, o que dizer de um indivíduo com 30 anos de idade: ele é jovem ou adulto? 
 
Neste caso podemos dizer que este indivíduo pertence ao conjunto jovem com pertinência 
de 0,4 a ao conjunto adulto com pertinência 0,6 (um indivíduo pode pertencer a vários 
conjuntos fuzzy, mas com diferentes graus de pertinência) 
idade 18 40 55 65 
Função de 
pertinência 
1 
0 
jovem adulto idoso 
30 
0,4 
0,6 
Lógica Fuzzy x Teoria Clássica dos Conjuntos 
Grau de crença x Grau de verdade 
Probabilidade x Fuzzines (Rentería, 2006) 
A função de pertinência fuzzy e a probabilidade quantificam a incerteza 
numericamente, ambas assumem valores no intervalo [0,1] e manipulam 
algebricamente conjuntos e proposições de forma associativa, comutativa e 
distributiva. 
 
No entanto, a pertinência fuzzy e a probabilidade têm interpretações distintas. 
 
Considere o conjunto de todos os líquidos (L) e o subconjunto fuzzy P com todos 
os líquidos potáveis. 
 
Um viajante sedento encontra duas garrafas rotuladas de K e M. 
 
Qual das duas deve escolher para beber? 
Grau de crença x Grau de verdade 
Probabilidade x Fuzzines (Rentería, 2006) 
A garrafa K não poderia conter líquidos venenosos, pois tem um grau de 
pertinência 0,91 significando que o conteúdo de K é bastante similar ou 
compatível com à água potável. 
 
A probabilidade de M ser potável é de 0,91, significa que após uma longa rodada 
de experimentos, é esperado que os conteúdos de M sejam potáveis em 91% das 
vezes. Nos outros 9% os conteúdos podem ser mortais. 
Grau de crença x Grau de verdade 
Probabilidade x Fuzzines (Rentería, 2006) 
Considere que os conteúdos das garrafas foram examinados e que foi descoberto 
que na garrafa K há cerveja e na garrafa M há veneno. 
 
O grau de poertinência de K permancece inalterado, mas a probabilidade de M cai 
de 0,91 para 0. 
O grau de pertinência fuzzy quantifíca similaridades de objetos com propriedades 
definidas imprecisamente. 
 
A probabilidade fornece informação de expectativas relativas a um grande 
número de experimentos. 
• X = {SF, Boston, LA} (discreto e 
não ordenado) 
– C = “Cidade desejável para se 
viver” 
– C = {(SF, 0.9), (Boston, 0.8), 
(LA, 0.6)} 
 
• X = {0, 1, 2, 3, 4, 5, 6} (discreto) 
– A = “Número de filhos” 
– A = {(0, .1), (1, .3), (2, .7), (3, 
1), (4, .6), (5, .2), (6, .1)} 
0 2 4 6 
0 
0.2 
0.4 
0.6 
0.8 
1 
X = Número de filhos 
G
ra
u
 d
e
 P
e
rt
in
ê
n
c
ia
 
(a) Universo Discreto 
Função de pertinência: Universo discreto 
• X = (Conjunto de 
números reais positivos) 
(contínuo) 
 
– B = “Pessoas com idade 
em torno de 50 anos” 
 
– B = {(x, B(x) )| x em X} 
B x
x
( ) 







1
1
50
10
2
0 50 100 
0 
0.2 
0.4 
0.6 
0.8 
1 
X = Idade 
G
ra
ud
e
 P
e
rt
in
ê
n
c
ia
 
(b) Universo Contínuo 
Função de pertinência: Universo contínuo 
• Função 
Triangular 
 
 
 
 
 
 
Função 
Trapezoidal 
 
0 20 40 60 80 100 
0 
0.2 
0.4 
0.6 
0.8 
1 
G
ra
u
 d
e
 P
e
rt
in
ê
n
c
ia
 
(a) Triangular 
0 20 40 60 80 100 
0 
0.2 
0.4 
0.6 
0.8 
1 
G
ra
u
 d
e
 P
e
rt
in
ê
n
c
ia
 
(b) Trapezoidal 
trimf x a b c
x a
b a
c x
c b
( ; , , ) max min , ,















0
trapmf x a b c d
x a
b a
d x
d c
( ; , , , ) max min , , ,















1 0
Funções de pertinência básicas 
0 20 40 60 80 100 
0 
0.2 
0.4 
0.6 
0.8 
1 
G
ra
u
 d
e
 P
e
rt
in
ê
n
c
ia
 
(c) Gaussiana 
0 20 40 60 80 100 
0 
0.2 
0.4 
0.6 
0.8 
1 
G
ra
u
 d
e
 P
e
rt
in
ê
n
c
ia
 
(d) Sino Gerneralizada 
2
2
1
),,;(





 

 
cx
ecbaxgaussmf
gbellmf x a b c
x c
b
b( ; , , ) 


1
1
2
• Função Gaussiana 
 
 
 
 
• Função Sino 
Generalizada 
 
Funções de pertinência básicas 
Operações básicas com conjuntos fuzzy (co-norma T) 
A função pertinência resultante da união de dois conjuntos 
fuzzy A OU B é o maior valor da pertinência aos dois 
conjuntos A e B em cada elemento de X (co-norma T) 
Operações básicas com conjuntos fuzzy (norma T) 
A função pertinência resultante da interseção de dois 
conjuntos fuzzy A E B é o menor valor da pertinência aos 
dois conjuntos A e B em cada elemento de X (norma T) 
Operações básicas com conjuntos fuzzy (norma T) 
O produto das pertinências aos dois conjuntos A e B também 
é uma norma T 
Operações básicas com conjuntos fuzzy (negação) 
Função de pertinência do conjunto fuzzy complementar ao conjunto A. 
Regras fuzzy 
Relacionam as variáveis linguisticas de entrada (antecedentes) com a variável 
de saída z (consequente). 
 
 
 
 
A, B e C são variáveis linguisticas (conjuntos difusos) que descrevem o 
processso. 
 
x, y e z são valores assumidos pelas variáveis que descrevem o processo. 
 
As regras relacionam o estado atual do processo (antecedentes) com a ação 
de controle para levá-lo ao consequente e que pode ser o estado desejado (no 
caso de um sistema de controle) ou o desfecho (no caso de uma previsor ou 
classificador). 
 
As regras de um sistema difuso também são conhecidas como memórias 
associativas difusas (FAM – Fuzzy Associative Memory). 
Regras fuzzy e inferência 
Exemplo 
1.85 
.5 
.75 
.1 
Alto 
90 
.5 
.75 
.1 
Pesado 
SE a altura é ALTA ENTÃO o peso é PESADO 
 
para altura =1.85, peso = ? 
Sistemas difusos de regras 
Modelam processos cujos comportamentos são descritos de 
forma apenas aproximada ou através de regras heurísticas. 
 
Úteis quando o processo só pode ser descrito por um modelo 
complicado. 
 
São semelhantes aos sistemas especialistas, onde o 
conhecimento sobre o processo é descrito, armazenado e 
processado através de regras do tipo: 
 
Se ANTECEDENTE Então CONSEQUENTE 
Exemplo problema da gorjeta 
O valor da gorjeta recebida por um garçom é uma função da avaliação do cliente 
acerca da qualidade do atendimento e do paladar do prato servido. 
http://www.mathworks.com/help/pdf_doc/fuzzy/fuzzy.pdf 
 
Variáveis linguisticas nos antecedentes das regras: qualidade do atendimento 
(precário, bom ou excelente) e paladar do prato (insosso ou delicioso). 
 
Variável linguistica nos consequentes das regras: valor da gorjeta (pequena, boa 
ou generosa). 
 
Base de regras fuzzy do problema da gorjeta: 
SE o atendimento é precário OU o prato é insosso ENTÃO a gorjeta é pequena. 
SE o atendimento é bom ENTÃO a gorjeta é boa 
SE o atendimento é excelente OU o prato é delicioso ENTÃO a gorjeta é generosa 
 
Mas o que é um atendimento precário, um prato insosso, um atendimento bom, 
um atendimento excelente, um prato delicioso, uma gorjeta pequena, boa ou 
generosa? 
 
Necessidade de definir os conjuntos fuzzy das variáveis lingüísticas! 
http://www.mathworks.com/help/pdf_doc/fuzzy/fuzzy.pdf
Sistemas de regras fuzzy do problema da gorjeta 
OU 
OU 
Então 
Então 
Então 
Se 
Se 
Se Insossa 
Linguístico 
Numérico 
Nível 
Variáveis de entrada 
Variáveis de entrada 
(Valores Numéricos) 
(Valores Linguísticos) 
Inferência Variáveis de saída 
Defuzzificação 
Fuzzificação 
(Valores Linguísticos) 
Variáveis de saída 
(Valores Numéricos) 
Base de regras 
Nível 
Etapas do raciocícionio fuzzy 
3 etapas: 
1) Fuzzyficação: transformação de entradas precisas em valores 
fuzzy através das funções de pertinência 
2) Inferência: Determina como as regras são ativadas e 
combinadas 
3) Defuzzyficação: converte a saída fuzzy em um valor precido 
• Definição das variáveis fuzzy de entrada 
e de saída e respectivos conjuntos fuzzy 
 
• Regras fuzzy 
 
• Técnica de defuzzificação 
Componentes de um sistema de inferência fuzzy 
Inferência fuzzy 
Procedimento de avaliação das regras fuzzy que relacionam 
as variaveis linguisticas antecedentes e consequentes, 
produzindo uma conclusão final. 
 
 Se < antecedente > então < conseqüente > 
 
Por exemplo, o problema da gorjeta: Dada uma nota entre 0 e 10 para a qualidade 
do atendimento e uma nota entre 0 e 10 para a qualidade do prato qual deve ser o 
valor da gorjeta? 
 
Duas etapas: 
•avaliação da implicação de cada regra 
•composição das conclusões das regras em um valor consolidado. 
 
Realizada por meio das normas-T e normas-S. 
 
Inferência min-max (Tipo Mandani). 
Excelente 
Bom 
Precário 
Deliciosa 
Rançosa 
Generosa 
Boa 
Pequena 
Nota do atendimento = 3 Nota da comida = 8 
SE atentimento é excelente OU comida é deliciosa ENTÃO gorjeta é generosa 
SE atentimento é bom ENTÃO gorjeta é generosa 
SE atentimento é precário OU comida é rançosa ENTÃO gorjeta é pequena 
Fuzzyficação 
Aplica operação fuzzy 
(max), pois neste caso o 
cenectivo lógico do 
antecedente da regra é OU Aplica implicação (min) 
Agrega os 
conjuntos fuzzy 
dos 
conseqüentes 
Gorjeta 
Inferência fuzzy 
insossa 
insossa 
Defuzzyficação 
Conjunto fuzzy do 
conseqüente para nota 
de atendimento = 3 e 
nota da comida = 8 
Conversão do conjunto fuzzy em um número real (crisp) 
 
Há várias formas de fazer a defuzzyficação, por exemplo a gorjeta poderia ser 
definida como a abscissa do centro de gravidade do conjunto fuzzy do 
consequente. 
Gorjeta 
Gorjeta = 16,7% 
z0 z0 z0 
Centróide First-of-Maxima Critério Máximo 
Defuzzyficação 
Outros exemplos de defuzzyficação 
Exemplo (Kucukali & Baris, 2010) 
Exemplo (Kucukali & Baris, 2010) 
Regras fuzzy 
Conjuntos fuzzy Conjuntos fuzzy 
Exemplo (Kucukali & Baris, 2010) 
GDP = 207 
TWh = 41 
Exemplo (Kucukali & Baris, 2010) 
Wang & Mendel 1992 
Método automático de extração de regras fuzzy 
a partir dos dados 
Jerry M. Mendel Li-Xin Wang 
Wang & Mendel 1992 
5 etapas: 
 
1) Formação dos conjuntos fuzzy das 
variáveis de entrada e de saída. 
 
2) Fuzzyficação dos dados e geração das 
Regras Fuzzy. 
 
3) Definição de um grau para cada regra 
gerada. 
 
4) Composição da Base de Conhecimento. 
 
5) Defuzzificação (Previsão de valores 
futuros) 
 
Treinamento 
Formação da base de regras 
Seja x(t), t=1,2,...,n uma série temporal com n 
observações. 
 
Dada uma janela de k observações passados da série 
temporal 
 
 x(t-k+1), ..., x(t-2) , x(t-1) , x(t) 
 
pretende-se prever o próximo valor da série em x(t+1). 
 
 x(t+1) = f( x(t) , x(t-1) , x(t-2) , ... , x(t-k+1) ) 
 
Método de Wang & Mendel na previsão de séries temporais 
Considere uma série temporal X(t) 
 Série sem tendência 
 Série confinada ao intervalo [U-,U+], o universo de 
discursos da variável X. 
 
(RIBEIRO, 2009) 
Método de Wang & Mendel na previsão de séries temporais

Outros materiais