O Serviço de Predição e o MEPIM são dois módulos que se comunicam entre si. Basicamente, o MEPIM é responsável por salvar os dados no banco e aplicar políticas de consumo de energia e consulta o Serviço de Predição para análise de dados. O Serviço de Predição é um mecanismo para determinar o momento de aplicar uma das políticas de consumo de energia aos dispositivos através da análise dos dados. O Serviço de Predição retorna o resultado dos treinamentos realizados para o MEPIM, assim, o MEPIM toma uma decisão para enviar através do MQTT mensagens aos dispositivos que estão conectados à rede. A mensagem nada mais é que a política que será aplicada aos dispositivos. Dependendo do erro produzido pelo modelo de predição será aplicada uma das três políticas se guia:
i. DeepSleep, para erro menor ou igual a 5%;
ii. LightSleep, para erro menor ou igual a 15% e maior que 5%;
iii. ModemSleep, para erro menor ou igual 20% e maior que 15%.
A Figura 16 mostra a sequência da execução dos elementos incluídos no sistema.
Figura 16. Diagrama de Sequência Para Inserção de Dados e Treinamento da Base de Dados.
Os dispositivos realizam uma requisição HTTP do tipo POST ao MEPIM que realiza a inserção dos dados no banco. Logo em seguida o próprio MEPIM também realiza uma requisição do tipo POST ao Serviço de Predição contendo informações necessárias como o atributo alvo, atributos independentes e o algoritmo que será utilizado para construir o modelo. O Serviço de Predição consulta os dados do Firebase, e em seguida realiza o treinamento para gerar o modelo de predição. O modelo de predição passa por métricas de avaliação de erro, onde são calculados o erro médio absoluto, variância e desvio padrão. Após a avaliação, o Serviço de Predição retorna os resultados para que o MEPIM chame o publicador MQTT para publicar a informação para os dispositivos, que por sua vez realizam uma checagem ao tópico assinado para recuperar as informações passadas.
O processo ilustrado na Figura 16 pode demorar bastante a depender da complexidade do algoritmo utilizado e do tamanho da base de dados, por isto, todo o fluxo só acontece a cada 5 minutos em que a aplicação está sendo executada. Neste tempo, o funcionamento do sistema limita-se a postagem de dados ao banco de dados e obtenção dos dados como mostra a Figura 17.
Figura 17. Diagrama de Acesso a Dados.
Para recuperar dados é necessário realizar uma requisição HTTP do tipo GET ao Serviço de Predição. Ele retorna todos os dados que o dispositivo gerou no período em que esteve ativo. Nesse caso não é utilizado o modelo de predição que está criado neste instante. O Caso 2 mostra quando se quer obter um valor estimado para o atributo alvo que foi determinado, nesta situação, é necessário realizar uma requisição HTTP do tipo POST, onde são passadas as informações das variáveis independentes (Base de Conhecimento) para que o modelo de predição possa prever o dado para a variável dependente (Elemento de Desempenho). O Serviço de Predição não necessita consultar o banco de dados para recuperar alguma informação, então, só cabe ao Serviço de Predição a tarefa de retornar a chamada com o resultado que o modelo gerou.
A Figura 18 mostra como é a entrada de dados para o que Serviço de Predição possa construir o modelo de predição.
Figura 18. Requisição POST ao Serviço de Predição
O conjunto de informações é bem simples. Basicamente, é necessário informar o endereço HTTP do Firebase Realtime Database, a identificação do dispositivo que gerou os dados que serão analisados pelo serviço, em seguida, informar qual a variável alvo para o modelo de predição e as variáveis independentes. As informações da Figura 18 são passadas em formato JSON. Para a consulta do modelo de predição criado, as entradas de dados são os valores das variáveis independentes que serão utilizados como base para estimar o valor futuro para a variável alvo da predição.
4 AVALIAÇÃO
Este capítulo tem como objetivo apresentar e especificar a metodologia criada para a avaliação do MEPIM e o Serviço de Predição. Com o intuito de verificar se os objetivos levantados na Seção 1.1 foram alcançados.
4.1 OBJETIVOS DA AVALIAÇÃO
Para aplicação dos objetivos da avaliação foi utilizado o método GQM (Goal/Question/Metric) (BASILI, 1992). O GQM é uma abordagem para avaliação de produtos ou processos de software. Partindo do princípio no qual toda avaliação deve ser orientada a metas, onde toda coleta de dados deve ser baseada em um fundamento lógico e documentada de forma explícita.
Para alcançar os objetivos deste trabalho seguindo o GQM, é necessário definir as metas. Considerando os objetivos do trabalho foram elaboradas as metas da avaliação:
Primeira Meta (M1): Avaliar o uso do Serviço de Predição em analisar dados
e construir modelos de predição eficazes, isto é, modelos que possuam erro próximo de zero;
Segunda Meta (M2): Medir o impacto que o Serviço de Predição causa ao resto
do sistema no que diz respeito às políticas de energia aplicadas pelo MEPIM e no tempo de funcionamento de dispositivos.
Após definidas as metas de avaliação, foram derivadas as questões para especificar se a meta foi alcançada.
4.2 QUESTÕES
As questões são utilizadas para definir modelos do objetivo que se pretende alcançar, e depois foca no objetivo para caracterizar a avaliação de uma meta específica.
Seguindo o Modelo GQM, foi levantada uma série de questões a partir de cada meta definida, com o propósito de determinar medições adequadas para a avaliação. Assim, as questões Q1 e Q2, refinam a meta M1, já Q3 a meta M2.
Q1: Qual a diferença entre os algoritmos utilizados no Serviço de Predição em
termos do erro médio absoluto, variância e desvio padrão?
Q2: Com qual frequência as políticas de economia de energia são aplicadas
segundo os critérios baseados na taxa do erro produzido pelos modelos de predição?
Q3: Qual o impacto na autonomia dos dispositivos de IoT alimentados por
baterias que a adoção do Serviço de Predição como mecanismo para aplicação de políticas de consumo causou?
4.3 MÉTRICAS
Após definidas as questões com base nas metas estipuladas, um conjunto de métricas baseadas nos modelos é associada a cada questão para respondê-la de um ponto de vista quantitativo.
As métricas são definidas com o propósito de quantificar a eficiência do Serviço de Predição em termos de:
(i) Desempenho em relação aos erros na predição com os algoritmos utilizados;
(ii) Frequência de aplicação das políticas de consumo com base no percentual de erro do modelo de Predição;
(iii) Tempo relacionado a autonomia dos dispositivos com a utilização do Serviço de Predição e o MEPIM e a ausência de ambos para dispositivos alimentados por fontes limitadas de energia.
A métrica T1 foi criada para comparar o desempenho dos algoritmos de predição em relação aos erros na predição. O objetivo é calcular a margem de erro que cada um dos modelos possui ao analisar os dados. Os modelos mais complexos como o SVM e a RNA já usam os melhores parâmetros obtidos. Para calcular o erro do modelo basta calcular o MAE (mean absolute error, ou no português, erro médio absoluto), dado por:
𝑇1= ∑
𝑛𝑖=1|𝑦
𝑖− 𝑦`
𝑖|
Onde:
•
𝑦
𝑖 E o valor estimado em relação a entrada i; •𝑦`
𝑖 É a média do elemento de desempenho;•
𝑛
É o número total de entradas de dados avaliados pelo modelo.A métrica T2 foi criada com o propósito de checar a taxa de aplicação das políticas de consumo de energia em relação a taxa de erro produzida pelo modelo de predição. Para determinar, consideramos o total de políticas aplicadas no período de funcionamento da aplicação. Calcula-se da seguinte forma:
𝑇2 = (𝑞
𝑖∗ 100)
𝑡
𝑖Onde:
•
𝑇2
É a taxa de aplicação da política;•
𝑞
𝑖 É a quantidade de vezes que a política (i) foi aplicada; •𝑡
𝑖 É a quantidade total de políticas aplicadas.A métrica T3 foi criada com o propósito de verificar o impacto que a utilização do Serviço de Predição causa na aplicação de políticas de consumo de energia no que diz respeito ao tempo de funcionamento de dispositivos em uma fonte limitada de uso (bateria). O objetivo desta métrica é calcular a diferença no tempo de funcionamento de um dispositivo equipado com sensores e a utilização com o MEPIM e o Serviço de predição, comparando com o tempo de utilização que o dispositivo levaria para descarregar uma bateria sem a utilização das plataformas para gerenciamento de políticas de consumo. Para determinar o resultado da comparação aplica-se a seguinte equação:
𝑇3 = 𝑡
𝑠− 𝑡
𝑐Onde:
• 𝑡3 Diferença entre
𝑡
𝑠 e𝑡
𝑐;•
𝑡
𝑠 Tempo de funcionamento para o dispositivo utilizando o método s (MEPIM sem a adoção do Módulo de Predição de Dados);•
𝑡
𝑐 Tempo de funcionamento para o dispositivo utilizando o método c (MEPIM com a adoção do Módulo de Predição de Dados).Antes de iniciar os experimentos e obter os dados dos resultados, é necessário realizar algumas preparações que antecedem o período dos experimentos.
Para utilizar os algoritmos, alguns testes são realizados antes que seja disponibilizado o serviço para o usuário final. Essa análise é necessária, pois RNA e SVM possuem diversos parâmetros ajustáveis que influenciam diretamente no resultado do modelo gerado. É necessário realizar testes com diferentes configurações, até encontrar a melhor possível que minimize o erro médio do modelo. Como existe uma quantidade muito grande de combinações, foi utilizado o
GridSearchCV disponível na biblioteca do Scikit-Learning. Essa API é usada para
busca exaustiva sobre os valores de parâmetros especificados para um estimador. O GridSearchCV recebe um conjunto de informações contendo os parâmetros do estimador e definições de suas variações para cada teste possível. O
GridSearchCV utiliza o Cross Validation (Validação Cruzada) como técnica de
amostragem de dados. Essa técnica de amostragem é ideal para bases com baixo número de exemplos e atributos.
O GridSearchCV foi utilizado neste trabalho para encontrar as melhores configurações de parâmetros para os algoritmos RNA e SVM.
Os testes realizados foram dispostos da seguinte forma:
(i) separar a base de dados em dados de treino e teste, 70% e 30% respectivamente;
(ii) treinar o modelo com os dados de treino; (iii) testar o modelo gerado com os dados de teste;
(iv) analisar o comportamento do modelo verificando o erro produzido com os dados de teste.
A Figura 20 descreve o passo a passo de cada atividade realizada para conclusão do processo.
Figura 20. Diagrama de Atividades Para Treinamento da Base
A Figura 21 mostra o código produzido com Python para achar a melhor configuração de parâmetros para os modelos de regressão. As variáveis “param_grid_SVR” e “param_grid_RNA” linhas 7 e 13 respectivamente, contém as informações de parâmetros que serão utilizados no modelo como também a variação para cada execução. GridSearchCV irá rodar o treinamento a partir da quantidade de combinações possíveis entre os valores dos parâmetros passados. Por fim, o método “Fit” inicia o treinamento, recebendo como parâmetros os dados de treino. No fim do processo, que pode ser demorado, o GridSearchCV mostra qual foi a melhor configuração encontrada.
O mais importante para poder realizar o processo para treinar os algoritmos é ter uma base de dados no contexto certo, com um número satisfatório de exemplos e atributos.
Figura 21. Fluxo do Algoritmo para Treinamento
O processo para obter dados foi utilizar alguns sensores conectados a um dispositivo ESP8266 (NodeMCU) em um ambiente exposto às mudanças de clima, monitorando um laboratório por 3 dias e obtendo dados como temperatura, luminosidade, umidade do ar e temperatura da água. A medição dos sensores foi ajustada para ocorrer a cada 1 minuto, levando em consideração a instabilidade de alguns dos sensores e a conexão com a Internet, a base obtida possuiu ao final da coleta cerca de 3500 exemplos.
Figura 22. Sensores Utilizados.
• DHT11: sensor de temperatura e umidade relativa do ar; • LDR: sensor de intensidade da luz;
Os experimentos realizados contam com a utilização de um esquemático montado com um ESP8266 equipado com sensores como mostra a Figura 23. O dispositivo se comunica com o MEPIM para realizar as ações de inserção de dados. Esquemático digital no Apêndice A.
Figura 23. Ligação dos Dispositivos Aos Sensores e Bateria
Para alimentar os dispositivos é colocado uma bateria de 9v (Volts) tradicional como fonte para o funcionamento da aplicação.
Os experimentos aplicados variam para cada uma das métricas que foram criadas. Cada métrica possui um cenário de testes diferente.
A diferença de desempenho entre os algoritmos de predição utilizados no trabalho foi obtida após o processo de treinamento, e ao final, aplicar o método de avaliação definido na métrica T1. Para cada algoritmo foram testados todos os atributos da base como elemento alvo da predição. Os atributos utilizados foram: (i) temperatura ambiente; (ii) luminosidade; (iii) temperatura da água e (iv) umidade do ar, todos estes foram obtidos nos testes de desempenho do Serviço de Predição.
A métrica T2 foi calculada com base na frequência de aplicação das políticas de consumo de energia em um período de funcionamento por cerca de 5 (cinco) horas para a predição de cada um dos atributos da base. O teste é disposto tendo um dispositivo enviado dados a cada 1 (um) minuto, e a cada 5 minutos o MEPIM realiza uma chamada ao Serviço de Predição para analisar os dados e retornar os resultados.
A métrica T3 foi calculada com base no tempo total em que um dispositivo equipado com sensores levou para descarregar uma bateria de 9v (volts) Figura 24. O cenário do teste foi baseado em dispositivos enviando dados ao banco de dados com o tempo de medição em 1 minuto, sem auxílio de nenhuma ferramenta de gerenciamento de políticas de consumo, comparando com a utilização do MEPIM junto ao Serviço de Predição aplicado ao mesmo cenário.
Figura 24. Bateria Alkaline 9v (volts).
O ambiente em que ocorreu os experimentos é um laboratório de estudos, onde o mesmo é utilizado com frequência pela manhã e o resto do dia permanece sem a presença de pessoas. Possui um ar-condicionado, luzes e uma janela para que o ambiente fique mais iluminado. Durante boa parte do tempo os experimentos ocorreram no momento em que o ar-condicionado estava ligado e as luzes acesas, porém, as janelas permaneciam sempre fechadas.
5 RESULTADOS
Este capítulo tem como objetivo apresentar os resultados obtidos no trabalho em relação as metas, questões e métricas especificadas nas seções anteriores. As métricas relacionadas as metas M1 e M2 foram obtidas através da execução do MEPIM e o Serviço de Predição. Os dados de todas as métricas foram obtidos após o término do período de testes do MEPIM e o Serviço de Predição. Os resultados estão organizados de acordo com o índice das métricas.
As Tabelas 1, 2 e 3, mostram os resultados para cada um dos algoritmos utilizados no trabalho referente ao que foi descrito para a métrica T1.
Tabela 1. Desempenho Regressão Linear
Temperatura Temp. Água Luminosidade Umidade do Ar
MAE 0,06 0,46 139,05 0,52 TAXA % 0,21% 1,81% 15,12% 0,58% Variância 0,006 0,36 431,61 0,5 Desvio Padrão 0,08 0,6 657,15 0,71 MÉDIA DO ATRIBUTO 28 25,41 919,36 90,15 Tabela 2. Desempenho SVM
Temperatura Temp. Água Luminosidade Umidade do Ar
MAE 0,03 0,39 95,59 0,5 TAXA % 0,11% 1,53% 10,40% 0,5% Variância 0,002 5,09 2,88 2,85 Desvio Padrão 0,01 7,14 4,57 8,15 MÉDIA DO ATRIBUTO 28 25,41 919,36 90,15
Tabela 3. Desempenho Rede Neural
Temperatura Temp. Água Luminosidade Umidade do Ar
MAE 0,2 0,45 102.53 0,5 TAXA % 0,14% 1,27% 11,15% 0,5% Variância 0,14 1,27 75,2 0,53 Desvio Padrão 0,38 3,57 80,36 0,73 MÉDIA DO ATRIBUTO 28 25,41 919,36 90,15
Todos os algoritmos tiveram comportamento semelhante ao analisar o erro do modelo para as variáveis de desempenho. A Regressão Linear entregou excelentes resultados mesmo sendo um algoritmo mais simples, porém, o desvio padrão para a luminosidade é muito alto, isso significa que o modelo produz erros bem maiores que a média absoluta do erro, o que acaba mostrando que optar por este algoritmo depende muito da situação. A RNA entregou bons resultados e bem balanceados, diferente da Regressão Linear, a média do erro da RNA em geral não foge muito da média do erro absoluto. A SVM entregou melhores resultados, mantendo sempre o erro baixo, pouca variância e desvio padrão.
Um detalhe a comentar sobre os resultados acima é que para a variável luminosidade, nenhum dos algoritmos conseguiu entregar o resultado abaixo de 5%, que seria o ideal, pois o MEPIM com esse resultado poderia aplicar a política de economia deepsleep, que segundo os resultados registrados em Bernardo (2017) é a política que tende a economizar mais energia entre os dispositivos.
As Tabelas 4, 5 e 6 mostram os resultados obtidos através do que foi descrito na métrica T2.
Tabela 4. Aplicação de Políticas utilizando a Regressão Linear
Temperatura Temp. Água Luminosidade Umidade
DeepSleep 96% 100% 0% 93%
LightSleep 4% 0% 75% 5%
ModemSleep 0% 0% 10% 0%
Não Aplicou 0% 0% 15% 2%
Tabela 5. Aplicação de Políticas utilizando a SVM
Temperatura Temp. Água Luminosidade Umidade
DeepSleep 100% 100% 1% 99%
LightSleep 0% 0% 95% 1%
ModemSleep 0% 0% 4% 0%
Tabela 6. Aplicação de Políticas utilizando a RNA
Temperatura Temp. Água Luminosidade Umidade
DeepSleep 99% 98% 0% 100%
LightSleep 1% 2% 92% 0%
ModemSleep 0% 0% 8% 0%
Não Aplicou 0% 0% 0% 0%
Os resultados em relação a métrica T2 mostram que os algoritmos tendem a ser bem parecidos em relação ao erro produzido, levando em consideração que, em geral, a frequência com que as políticas são aplicadas tendem a estar bem próximas. O caso particular como citado antes, fica em relação a políticas aplicadas quando a variável monitorada é luminosidade, que tendem a ter erros acima de 5%, por essa razão a política deepsleep é aplicada com uma frequência muito baixa e as vezes sequer foi aplicada uma vez.
O gráfico da Figura 25 mostra os resultados da métrica T3 em relação a diferença de tempo em que os dispositivos permaneceram em funcionamento até a bateria não oferecer mais energia suficiente para manter o circuito ligado.
A diferença chega a ser maior que 3 horas de funcionamento a mais de vantagem para os dispositivos que utilizaram o MEPIM e o Serviço de Predição (x) comparado ao mesmo experimento porém, sem a adoção do Módulo de Predição de Dados (y), sendo um aumento de cerca de 63% aproximadamente no tempo total para o método (x).
Figura 25. Tempo de Funcionamento do Dispositivo
Durante as 8 (oito) horas e 33 (trinta e três) minutos em que a aplicação esteve em funcionamento, o MEPIM aplicou 50 (cinquenta) vezes uma política aos dispositivos. A Tabela 7 mostra a frequência de cada política aplicada levando em consideração a variável de desempenho que foi a temperatura da água e o algoritmo utilizado para a análise de dados foi o que apresentou os melhores resultados dos testes que é o SVM.
Tabela 7. Frequência de Políticas Aplicadas
DeepSleep LightSleep ModemSleep
Total Aplicado 48 1 1
Frequência 96% 2% 2%
Total de Políticas Aplicadas
50
Os resultados da métrica T3 também mostra que a utilização do MEPIM e o Serviço de Predição poderia reduzir a utilização de aproximadamente 700 (setecentas) baterias de 9v tradicionais utilizadas num período de 1 ano, o que colabora para a redução do descarte de baterias e também caracteriza uma economia de cerca de 10 (dez) mil reais em compras de novas baterias, levando em consideração o preço médio do mercado que gira em torno de 15 (quinze) reais.
6 CONCLUSÃO
Partindo dos resultados obtidos neste trabalho foi possível determinar que a utilização do Serviço de Predição de dados desenvolvido neste trabalho tem grande influência no que diz respeito a ser uma medida de avaliação para aplicação de políticas de consumo de energia em dispositivos de IoT. O ganho na autonomia dos dispositivos utilizando a solução proposta no trabalho foi bastante satisfatório levando em consideração que é possível melhorar ainda mais o desempenho do Serviço de Predição através de uma análise de atributos que a base contiver, o que pode possibilitar treinar modelos mais eficientes. O Serviço de Predição causou perda de informações enviadas aos dispositivos em relação as mensagens em que o Publisher MQTT envia aos Subscribers que são os dispositivos da aplicação, nada tão alarmante, cerca de 6% aproximadamente.
De maneira geral a adoção do Serviço de Predição como um módulo adicional a arquitetura do MEPIM cumpriu com as expectativas do trabalho, o que fica claro a eficiência de algoritmos de Machine Learning e Deep Learning para utilização em cenários complexos.
O Serviço de Predição também entregou bons resultados para preencher a lacuna e continuar fornecendo dados a aplicação mesmo que os dispositivos estejam inativos por um período de tempo.
O aumento no tempo de funcionamento de dispositivos de IoT proporciona uma maior produtividade com a aplicação, já que os dispositivos entregarão uma autonomia maior para medição e atuação no ambiente, o que causa diminuição no descarte de baterias e pilhas.
Uma das limitações do trabalho está ligada ao fato de que os testes realizados nas métricas Seção 4.3. A duração dos experimentos não comtemplou um período de tempo de um dia inteiro, o que limita os resultados. Outra questão importante é sobre a quantidade de dados da base que foi utilizada para treinar os modelos de regressão, como havia poucos atributos, seria importante ter uma base um pouco maior e uma boa variabilidade entre os dados.
5.1 TRABALHOS FUTUROS
Como proposta futura aos algoritmos de Machine Learning utilizados neste