1. Problema de Negócio

O conjunto de dados foi coletado por um período de 10 minutos por cerca de 5 meses. As condições de temperatura e umidade da casa foram monitoradas com uma rede de sensores sem fio ZigBee. Cada nó sem fio transmitia as condições de temperatura e umidade em torno de 3 min. Em seguida, a média dos dados foi calculada para períodos de 10 minutos.

Os dados de energia foram registrados a cada 10 minutos com medidores de energia de barramento m. O tempo da estação meteorológica mais próxima do aeroporto (Aeroporto de Chievres, Bélgica) foi baixado de um conjunto de dados públicos do Reliable Prognosis (rp5.ru) e mesclado com os conjuntos de dados experimentais usando a coluna de data e hora. Duas variáveis aleatórias foram incluídas no conjunto de dados para testar os modelos de regressão e filtrar os atributos não preditivos (parâmetros).

O nosso objetivo é prever o uso de energia armazenado na variavel 'Appliances', dessa forma iremos construir um modelo de Regressão.

-- Objetivos

Feature Descrição Unidade
date Data no formato ano-mês-dia hora:minutos:segundos.
Appliances Consumo de energia. Variavel Target. Wh (Watt-Hora)
lights Consumo de energia de luminárias. Wh (Watt-Hora)
T1 Temperatura na Cozinha. Celsius
RH1 Umidade Relativa na Cozinha. %
T2 Temperatura na Sala de Estar. Celsius
RH2 Umidade Relativa na Sala de Estar. %
T3 Temperatura na Lavanderia. Celsius
RH3 Umidade Relativa na Lavanderia. %
T4 Temperatura no Escritório. Celsius
RH4 Umidade Relativa no Escritório. %
T5 Temperatura no Banheiro. Celsius
RH5 Umidade Relativa no Banheiro. %
T6 Temperatura Externa Lado Norte. Celsius
RH6 Umidade Relativa Externa Lado Norte. %
T7 Temperatura na Sala de Passar Roupa. Celsius
RH7 Umidade Relativa na Sala de Passar Roupa. %
T8 Temperatura no Quarto do Adolescente. Celsius
RH8 Umidade Relativa no Quarto do Adolescente. %
T9 Temperatura no Quarto dos Pais. Celsius
RH9 Umidade Relativa no Quarto dos Pais. %
T_out Temperatura Externa. Celsius
Press_mm_hg Pressão. mm/hg
RH_out Umidade Relativa Externa. %
Windspeed Velocidade do Vento. m/s
Visibility Visibilidade. km
Tdewpoint Ponto de Saturação. Celsius
rv1 Variável Randômica.
rv2 Variável Randômica.
NSM Segundos até a meioa noite
WeekStatus Indicativo de Dia da Semana ou Final de Semana.
Day_of_week Indicativo de Segunda à Domingo.

2. Imports

2.1 Ambiente

3. Carregamento dos Dados

4. Analise Exploratoria

Possuimos ao todo 19375 observações, unindo o conjunto de treino e teste.

A unica feature que aparenta estar no formato errado é a coluna 'Date', essa que é 'datetime' foi carregada como 'object'.

Agora os dados estão no formato correto, e não tivemos perda de informação.

Colunas como 'date', 'rv1' e 'rv2' possuem valores unicos para cada observação, sendo 1:1. Iremos verificar depois se essas informações são relevantes para o modelo, pois isso pode causar problemas.

Para melhor interpretação dos dados, iremos separa eles em variaveis qualitativas e quantitativas.

4.2 Geração de plots e insights

Analisando o grafico abaixo é perceptivel que o consumo de energia nos 'Weekend' são proporcionais aos 'Weekday'. Já que a 'Weekday' representa exatatemente 28.5% de uma semana. Por acaso esse também é o valor do consumo de energia em %.

É perceptivel que ao longo do periodo da coleta dos dados mantemos oscilações comuns no consumo de energia, provavel que se de por eventos climaticos ao longo do periodo.

É perceptivel que as variaveis 'T' como 'T1', 'T2'... possuem baixa correlação com a variavel target. Onde possuimos concentrações maiores para valores médios, porém ao aumentarem ou diminuirem muito passam a diminuir a 'Appliances'. Já variaveis 'RH_' possuem uma correlação um pouco maior.

4.3 Distribuição dos Dados

Iremos verificar se os nossos dados possuem uma distribuição Gaussiana ou não. Dessa forma iremos entender quais metodos estatisticos utilizar. Distribuições Gaussianas utilizam de métodos estatisticos paramétricos. Já o contrário utiliza de métodos estatisticos não paramétricos. É importante entender qual método utilizar para não termos uma vissão errada sobre os dados.

Olhando os graficos abaixo, possuimos algumas variaveis que não seguem a reta Gaussiana, indicando dados não normalizados, porém para termos certeza, iremos trazer isso para uma representação numerica, onde podemos ter uma maior certeza.

4.3.1 Teste normal de D'Agostino

O teste Normal de D'Agostino avalia se os dados são Gaussianos utilizando estatisticas resumidas como: Curtose e Skew.

Aparentemente os nossos dados não seguem o comportamento Gaussiano, dessa forma iremos ter que tomar medidas estatisticas para amenizar o impacto na hora da modelagem preditiva.

Analisando abaixo o boxplot das variaveis quantitativas, percebemos que algumas variaveis possuem muitos outliers e irão necessitar um tratamento.

Sendo alguas delas: 'Appliances', 'T1', 'RH_1', 'Visibility', 'RH_5'. Sendo alguns outliers somente para valores maximos e outros para valores minimos.

Visualizando rapidamente o heatmap, percebemos que existem valores muito proximo de preto e outros muito proximo de branco, valores esses fora da diagonal principal, indicando fortes indicios de multicolinearidade, o que para modelos de regressão são prejudiciais.

Um segundo ponto são as variaveis 'rv1' e 'rv2' que possuem correlação 1, de acordo com o nosso dicionario de dados essas variaveis são randomicas, então irão ser removidas do dataset de qualquer maneira. Já o NSM é uma variavel sequencial, que também irá ser removida.

Apartir do Sweetviz confirmamos que possuimos muitas variaveis com alta correlação, o que irá gerar Multicolinearidade, para tentarmos amenizar o impacto iremos utilizar de autovetores.

Observação: O report foi analisado e anotado insights, porém para melhor compreensão passo a passo dos dados, iremos realizar a analise de forma manual ao longo do notebook.

4.4 Avaliando MultiColinearidade

Analisando as variaveis de indice 11, 19, 21 e 24, aparentam possuir multicolinearidade devido ao seu alto valor absoluto. Porém a sua correlação é baixa, dessa forma iremos aprofundar mais a analise para tomarmos alguma decisão.

A variavel 'RH_5' não apresenta um comportamento nitido de correlação com as demais variaveis no scatter_plot. Porém, apresenta uma tendencia pequena de aumento nos valores de 'RH_5' apartir de uma determinada crescente nas variaveis independentes.

Para 'RH_9' temos o mesmo detalhe, não apresenta um comportamento nitido de correlação com as demais variaveis no scatter_plot. Porém, apresenta uma tendencia pequena de aumento nos valores de 'RH_9' apartir de uma determinada crescente nas variaveis independentes.

Para 'RH_9' temos o mesmo detalhe, não apresenta um comportamento nitido de correlação com as demais variaveis no scatter_plot.

Para 'Visibility' temos o mesmo detalhe, não apresenta um comportamento nitido de correlação com as demais variaveis no scatter_plot. Porém, apresenta uma tendencia pequena de aumento nos valores de 'Visibility' apartir de uma determinada crescente nas variaveis independentes.

Analisando as variaveis que apontam possuir alguma Multicolinearidade, até o momento não conseguimos identificar com alta confiança se isso se é verdade. Iremos utilizar VIF para verificar o impacto das variaveis de maneira mais automatizada e acertiva.

É esperado que valores de VIF = 1 ou proximos a 1 não possua correlação com outras variaveis independentes. Caso VIF ultrapasse valores como 5 ou até 10, possuimos fortes indicios de multicolinearidade entre as variaveis com tal valor.

Analisando abaixo é perceptivel que a unica variavel com valor baixo para VIF é 'lights'. Assim iremos necessitar de um grande tratamento sobre as variaveis.

Abaixo realizamos a primeira tentativa removendo variaveis com VIF > 2000. Porém ainda possuimos alto indice de MultiColinearidade. Iremos remover variaveis com VIF > 1000.

Ainda com a remoção de VIF > 1000 estamos com fortes indicios de MultiColinearidade, iremos aumentar o nosso range para VIF > 250.

Após uma remoção massiva de variaveis continuamos com alta taxa de MultiColinearidade, iremos remover mais algumas variaveis. Porém, é esperado que iremos fazer mais testews nas variaveis para verificar seu valor para a predição.

Após removermos 21 variaveis das 25 variaveis quantitativas, conseguimos reduzir o VIF para um valor aceitavel, porém é necessário verificar o impacto dessa remoção e se a tecnica para sua remoção foi utilizada da maneira correta.

Iremos verificar o valor das variaveis utilizando tanto o dataset original quanto com as variaveis removidas apartir do calculo de VIF. Para isso iremos utilizar um modelo base de regressão lienar do StatsModels.

Analisando abaixo percemos que o nosso modelo representa somente 16.5% da variancia dos dados, R-squared. Também verificamos que o valor F esta muito alto, sendo inviavel utilizar pare predição. Nosso AIC e BIC já indicam um valor muito alto, o que esta nos sinalizando MultiColinearidade.

Também possuimos variaveis como 'T1', 'RH_4', 'T5', 'RH_5', 'T7' e 'Press_mm_hg' com valores de p > 0.05, indicando que não possui relação com a predição de variaveis.

Possuimos um 'Omnibus' muito alto, visto que o ideal seria 0. Já Skew e Kurtosis possuem valores relativamente normais para dos que não foram tratados. Já o Durbin-Watson está com um valor relativamente proximo do normal (entre 1 e 2), porém esta indicando que os nossos dados podem estar concentrados, a medida que o ponto de dados aumenta o erro relativo aumenta. Por ultimo, estamos com um 'Conditiom Number' extremamente alto, indicando mais ainda a nossa multicolienaridade.

Abaixo iremos criar o modelo novamente porém a redução de variaveis implicadas pelo p value e VIF.

Treinando o modelo com a remoção de variaveis, notamos que tivemos uma grande redução no R-Squared, trazendo uma significancia de apenas 6% da variancia dos nossos dados. Devemos tentar escolher variaveis melhores para o nosso modelo, consequentemente levou ao aumento do valor F e diminuição do 'Log-Likelihood'.

Outros valores permaneceram com resultados semelhantes, com exceção de 'Conditiom Number' que reduziu drasticamente ao ponto de não sofrermos mais multicolinearidade.

Iremos ter que avaliar melhor quais variaveis utilizar para o nosso modelo, afim de reduzir a MultiColinearidade sem perder variaveis de valor.

4.5 Simetria dos Dados

4.5.1 Skewness

Esperamos valores de Skewness proximo de 0 para uma simetria perfeita.

image.png

Olhando primeiramente para o Skewness, possuimos variaveis com alta simetria o que é muito bom para os algoritmos de Machine Learnign em geral. Porém possuimo a variavel 'lights' com um simetria muito acima de 0. Já as outras variaveis possuem um Skewness aceitavel, valores maiores que 0.5 ou menores que -0.5 indicam que a simetria já começa a se perder, porém ainda é aceitavel.

4.5.2 Histograma

Abaixo iremos verificar o histograma das variaveis. Porém para visualizarmos de uma melhor forma iremos separar em grupos de plots abaixo. Fica perceptivel que 'Appliances' e'lights' não possuem simetria, devido a sua alta concentração entre 0 e 10. Porém variaveis como 'T1' e 'T4' possuem alta simetria.

4.5.3 Exceço de Kurtosis

image.png

Mesokurtic -> Kurtosis ~= 0: Distribuição normal.

Leptokurtic -> Kurtosis > 0: Valores proximos a media ou dos extremos.

Platykurtic -> Kurtosis < 0: Valores muito espalhados.

É perceptivel que variaveis como 'Appliances', 'lights' e 'RH_5' claramente estão distantes de uma distribuição normal, porém outras variaveis se aproximam de uma distribuição Gaussiana, com valores maiores que 3 e menores que 4. Também é perceptivel qque possuimos muitas variaveis com o comportamento de uma 'Platykurtic', ou seja valores muito espalhados.

4.6 Analise Temporal

4.6.1 Pre-Processamento colunas temporais

Para realizarmos uma analise eficiente das variaveis temporais, iremos transforma-las, adicionando coluna de 'Month', 'Day', 'Hour', e convertendo coluna 'Day_of_week' e 'WeekStatus' para numericas.

4.6.2 Analise Temporal de Gasto Energia

Abaixo percebemos que o gasto energetico por dia da semana tende a iniciar alto na Segunda / 0 em 115 Wh, passando por um queda para 80-85 Wh até Quinta, voltando a subir até os 105 Wh na Sexta e Sabado. Por ultimo, voltamos a uma queda por volta dos 85 Wh no Domingo.

Apartir desse cenario, podemos visualizar que a Segunda passa a ser um dia onde as pessoas gastam maior energia, talvez por estar começando a semana com maior foco em atividades que leval a gasto de energia eletrica. Com uma queda ao longo da semana, que volta a subir proximo ao final de semana, onde temos dias de descanso que passam a acontecer em casa, e por ultimo no domingo onde tende a ser dias para saida de familia.

Claro que o cenario acima é somente uma hipotese, porém representar a realidade de algumas pessoas, para um melhor entendimento poderia ser feito uma pesquisa do estilo de vida do cidadões de onde foi retirado o dataset.

É analisado que o gasto de hora começa a subir aproximadamente as 6 da manhã até as 11 horas da manhã chegar em um pico de 130 Wh, depois temos uma queda até os 100 Wh e voltamos a subir pro volta das 15 horas da tarde, até chegar ao pico de 180 Wh as 18 horas, apartir desse momento vamos caindo o nivel de energia até chegar abaixo dos 60 Wh as 23 horas.

Percebe-se que o gasto de energia vem oscilando bastante entre os meses, porém mantem uma média constante devido ao alto volume de dados. Talvez a coluna 'Mês' e 'Dia' possuam uma representatividade interessante para o modelo.

5. Pre-Processamento

5.1 Removendo Colunas Desnecessárias

Abaixo iremos remover as colunas que mostraram se sem valor durante a analise exploratoria.

5.2 Detectando Outliers

image.png

É perceptivel que com exceção das variaveis: 'RH_4', 'RH_6', 'T7' e 'T9', todas as outras variaveis possuem outliers. Alguns possuem somentne acima do limite inferior, outras apenas do limite superior. Ainda poussimos os casos de variaveis que possuem em ambos os limites.

Para tratar os outliers iremos utilizar a tecnnica de IQR, iremos mover os dados abaixo do limite inferior para o limite inferior, já para o limite superior iremos mover os dados acima do mesmo para o limite superior.

5.3 Tratando Outliers

Dataset antes da aplicação do IQR para correção de outliers.

Dataset após aplicação do IQR para correção de outliers. Percebe-se que valores minimos e maximos passaram a ser muito mais realistas, também é perceptivel mudanças na média. Considerando que temos mais de 19 mil registros, uma mudança na média passa a ser muito significativo.

Observação: Não foi aplicado IQR em 'lights' por uma baixa concentração de outliers, também ocorre que ao aplicar IQR em 'lights', todos os valores são zerados.

5.4 Feature Scaling

5.4.1 Aplicando Normalização

Para os algoritmos que iremos utilizar como SVM, XGBoost e Regressão Logística Multilinear a normalização se mostra mais relevante. Como nossas variaveis

Após realizar a normalização dos dados, iremos revisitar algumas metricas como skewness, kurtose e boxplot stats.

5.4.2 Analisando Dados Pós Normalização

Verificando novamente o skewness, tivemos um aumento consideravel na simetria dos dados, conseguimos reduzir o nosso Skewness total pela metade, o que deve levar a melhores resultados para os algoritmos. Iremos realizar a analise de suas vantagens posteriormente na aplicação dos algoritmos.

Verificando novamente a Kurtosis possuimos uma perspectiva muito melhor, conseguimos ajustar as respectivas kurtosis para proximo de 3, trazendo uma distribuição normal Gaussiana, isso se da pela normalização dos dados. A soma ideal da Kurtosis para as nossas 27 variaveis seria 0, chegamos em um valor bem proximo.

Percebemos uma melhora significativa no histograma abaixo das variaveis, com exceção de lights que manteve um skewness alto.

Já em relação aos outliers, com a aplicação de IR e correçõs nas escalas dos dados conseguimos uma redução perceptivel.

Observação: Não foi aplicado correção de outliers por IQR na variavel 'lights'.

5.5 Incremento nas Features

Aqui iremos acrescentar mais uma variavel no nosso dataset que irá merecer uma analise na etapa de Feature Selection. Iremos acrescentar uma Feature do tipo booleana para os feriados no de coleta dos dados.

Como verificado abaixo criamos uma variavel boolean para os dias que forem feriado, onde pode ocorrer um aumento do consumo de energia.

Por ultimo iremos remover a variavel 'lights' por não fazer sentido estar no modelo, visto que a mesma apresenta o consumo de Wh das fontes luz da residencia, assim nos indicando um pouco do consumo de energia.

6. Feature Selecting

Após uma densa etapa de analise exploratoria e pre-processamento iremos iniciar a etapa de seleção de variaveis, onde iremos ter que trabalhar densamente para eliminar multicolinearidade escolher variaveis que trazem valor para o nosso problema.

Sobre a regressão Lasso e Ridge, iremos utilizar a Lasso com uma das alternativas para medir a importancia das variaveis. Já a ressão Ridge, iremos utilizar durante a modelagem preditiva para tentar aumentar a importancia das variaveis corretas.

6.1 Select From Model - Random Forest

Iremos utilizar o SelectModel para secionarmos as variaveis baseadas em sua importância, posteriormente iremos realizar o plot de importância por variavel.

6.2 Random Forest - Feature Importance

Agora iremos utilizar o Random Forest na sua forma pura, sem hiperparametros. Essa forma é um pouco perigosa pois pode gerar vies do modelo, por isso iremos testar posteriormente com um modelo diferente.

Analisando, possuimos a variavel 'NSM' com a maior importancia muito a frente, seguido por 'Hour' e 'Lights'. O SelectModel analisou que as melhores variaveis seriam as: 'lights', 'T3', 'RH_3', 'T8', 'Press_mm_hg', 'NSM' e 'Hour'.

Dessa forma escolhendo as 7 variaveis com maior importancia.

6.3 Regressão LASSO

Iremos utilizar a Regressão LASSO para minimizar variaveis, assim podemos diminuir a nossa dimensionalidade e multicolinearidade, de forma que o modelo se torne mais generalizado.

6.4 Recursive Feature Elimination (RFE) - Linear SVR

Como quarto metodo, iremos utilizar RFE, onde em geral apresenta bons resultados para combater multicolinearidade que é o nosso principal problema nesse dataset. Porém, o seu tempo de execução pode ser muito grande.

6.5 Analisando Seleção

6.5.1 Random Forest

Primeiramente iremos avaliar o modelo com todas as variaveis utilizadas durante a sua construção.

Avaliando o modelo utilizando somente 6 colunas, mantivemos um R^2 de 70% com um aumento para 23 do RMSE. Apesar do modelo ser um pouco pior, aumentamos a nossa generalização em muito, visto que passamos de 31 variaveis para 6 variaveis.

6.5.2 LASSO

Primeiramente iremos avaliar o modelo com todas as variaveis utilizadas durante a sua construção.

Analisando o modelo é perceptivel que ele não conseguiu representar os dados da forma adequada, mantendo um R^2 abaixo de 50%, com acuracia pouco acima de 50%.

6.5.3 RFE - Linear SVR

Analisando o modelo com todas variaveis, o deu desempenho não aparenta ser bom visto que manteve um R^2 abaixo de 50% e alto RMSE, apesar disso apresentou uma acuracia superior ao modelo de regressão LASSO.

Realizando a analise acima é perceptivel que as variaveis que aparentam trazer mais representatividade para o nosso modelo são as do modelo de Random Forest, esse que sugeriu utilizar as seguintes variaveis:

'T3', 'RH_3', 'T8', 'Press_mm_hg', 'NSM' e 'Hour'

Analisando as variaveis acima: 'T3' -> Mede a temperatura em graus celsius na lavanderia, a lavanderia constuma possuir equipamentos que consomem um nivel de energia significativamente maior do que outros eletrodomesticos, assim também aumenta o nivel de calor no comodo.

'RH_3' -> Umidade relativa na lavanderia, indicando aumento da umidade no ambiente, também por conta dos eletrodomesticos utilizados no ambiente.

'T8' -> Temperatura no quarto do adolescente.

'Press_mm_hg' -> Pressão.

'NSM' -> Quantos segundos faltam para a meia noite, visto que quando mais proximo da meia noite menor o consumo de energia.

'Hour' -> Semelhante a 'NSM' porém indicando a forma do dia de forma mais especifica, visto que a hora influencia diretamente no consumo de energia.

7. Modelagem Preditiva

7.1 Definindo Ambiente

7.2 SVR

Primeiramente iremos criar um modelo base utilizando o algoritmo SVM para regressão, conhecido como SVR. Assim, iremos poder ter uma metrica minima para comparar os nossos modelos, posteriormente iremos passar por uma fase de tuning dos hiperparametros, utilizaando GridSearchCV e depois um tuning manual.

Apesar da nossa acuracia base ser 67%, estamos com um R^2 muito baixo de apenas 20.75%. Iremos tentar diminuor o nosso RMSE na medida que aumentamos o R^2.

7.2.1 Conclusão SVR

Executando o algoritmo SVR, conseguimos atingir as seguintes metricas sem evitar overfitting:

Apesar de atingirmos um RMSE relativamente baixo de 28 unidades, não possuimos uma boa acuracia, estando apenas em 75%. Ainda possuimos um R^2 baixo, de apenas 56%.

O algoritmo SVR necessita de uma alta carga de processamento, chegando a possuir testes em que os resultados demoravam mais de 1 hora para serem gerados. Para melhor compreensão foram exibidos nesse documento somente os algoritmos de maior influência.

O algoritmo SVR, não apresentou bom desempenho, devido a alta variabilidade nos dados, que não conseguiram ser identificados da forma ideal. Assim, iremos adotar a eestratégia de utilizar algoritmos ensemble, como XGBoost e CatBoost da categoria boosting.

7.2.2 Executando Melhor Modelo

7.2.3 Avaliando SVR

7.3 CatBoost Regressor

7.3.1 Definindo Ambiente

7.3.2 Iniciando Modelagem

Comparando com o melhor modelo gerado no tuning do algoritmo SVR, o modelo base do Catboost já possui um desempenho superior com maior R^2 Ajustado e menor RMSE e MSE.

7.3.3 Conclusão CatBoostRegressor

Após uma série de intensos treinamento com o algoritmo CatBoostRegressor, foi atingido as seguintes metricas:

Apesar de um intenso treinamento a acuracia que tinhamos como meta não foi alcançada por 0.56%. Apesar do objetivo não ser atingido, obtivemos metricas excelentes comparadas a outros algoritmos que atuaram no mesmo problema. O modelo final ainda obteve overfitting, apesar disso conseguiu seguir uma boa metrica de teste.

7.3.4 Execução Melhor Modelo

7.3.5 Salvando Modelo

7.3.6 Avaliando CatBoostRegressor

Abaixo temos o impacto da predição 0 e 13, assim conseguimos ver como o resultado é afetado por cada variavel.

Abaixo possuimos a distribiução dos dados e seus respectivos impactos ao longo de n observações, assim conseguimos entender de forma simples o impacto de cada variavel e ainda realizar filtros.

É perceptivel que variaveis como 'NSM' e 'Hour' possuem um comportamento similar ao consumo de energia por hora, isso se da pois ambas variaveis estão relacionadas a tempo, onde impacta diretamente no consumo de energia.

É perceptivel que a maioria das variaveis possuem um impacto significativo e uma direção homogenea em relação ao impacto no valor resultante da função f(x) do nosso modelo. Essas tendencia se tornna maior em variaveis como 'NSM', 'Hour', 'T3' e 'T8'. Já em 'Press_mm_hg' se mostra menor em relação as outras.

8. Conclusão

Por ultimo na etapa de conclusão, o CatBoostRegressor conseguiu ter um desempenho formidavel em relação a outros algoritmos como SVM e XGBoost.

Observação: Alguns testes foram realizados em outros notebooks para menor peso do notebook final.

O algoritmo CatBoostRegressor apresentou overfitting, que foi possivel controlar em determinadas etapas, porém com o alto custo computacional gerado a cada modelo, acabou ficando inviavel um maior controle. Ainda assim, conseguimos realizar um aumento nas metricas para o modelo, apresentando metricas relativamente altas.

-- Objetivos

  1. R^2 superior a 70% ✔
  2. RMSE inferior a 25 ✔
  3. MAE inferior a 15 ✔
  4. Acuracia superior a 80%
  5. Relatar economia total de energia ✔

Observação: O objetivo numero 5 será coberto no relatório final.

Analisando abaixo na linha tracejada em vermelho temos o consumo real de energia, já em azul possuimos o consumo estimado pelo modelo. Analisando previamente, percebemos que o modelo consegue diversas vezes capturar com precisão o consumo de energia naquele momento, já para momentos que não captura com exatidão, consegue prever a tendencia correta.

Dessa forma é interessante perceber que o algoritmo possui comportamentos em sua maioria corretos. Ainda iremos observar o valor previsto com o limite inferior e superior.

Observando abaixo ainda possuimos o limite inferior em verde e o superior em amarelo. O limite foi calculado uitilizando um intervalo de 95% de confiança. Dessa forma é possível visualizar que as predições em nenhum momento estiveram fora dos limites de confiança. Assim, podemos estimar que o nosso modelo possui valores com confiança acima de 95%.

Abaixo conseguimos perceber que o consumo de energia total previsto foi 0.8 kWh abaixo do consumo real, dessa forma se aproximando muito do valor real, sendo perceptível que o modelo conseguiu prever o consumo de energia considerando os limites inferiores e superiores. Dessa forma podendo gerar economia de energia e maior eficiência na rede elétrica.

Abaixo é perceptivel que o custo eletrico em Euro possui uma diferença de apenas € 0.20, assim chegando a minimizar o custo em relação ao esperado.

Abaixo é perceptivel que o custo eletrico em Dolar possui uma diferença de apenas $ 0.85, assim chegando a minimizar o custo em relação ao esperado.