Baixe o app para aproveitar ainda mais
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),tN}, 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,01ARIMA(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,1w1,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 xX 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
Compartilhar