Introdução
Muito se tem falado sobre o Machine Learning e este artigo tem como objetivo principal, resumir o conceito desta abordagem e demonstrar um caso prático de previsão, dentro do complexo e relevante cenário da pandemia do COVID-19 que estamos vivendo. Será utilizado o Prophet, projeto open-source do Facebook, para a demonstração de uma aplicação prática. É importante salientar que este artigo se trata apenas de um exemplo de aplicação deste framework e os seus resultados não devem ser considerados como válidos para qualquer tipo de decisão.
O que é aprendizado de máquina?
É a ciência (e a arte) da programação de computadores para que eles possam aprender com os dados.
Um exemplo muito evidente de aprendizado de máquina, é o filtro de spam, que pode aprender e assinalar e-mails como spam e não spam. Durante este processo, existe alguns componentes:
- Conjuntos de treinamento: são os exemplos utilizados pelo sistema de treinamento.
- Amostra: é cada exemplo do conjunto de treinamento.
- Acurácia: é a taxa de assertividade do algoritmo treinado.
Tipos de Sistemas de Aprendizado de Máquina
Existem muitos tipos diferentes de sistemas de aprendizado de máquina e neste artigo, será descrito os dois sistemas principais: aprendizado supervisionado e aprendizado não supervisionado.
Aprendizado Supervisionado
No aprendizado supervisionado, os dados de treinamento que você fornece ao algoritmo incluem as soluções desejadas, chamadas de rótulos.
A classificação é uma tarefa de aprendizado supervisionado. Como exemplo, temos o filtro de spam, onde existem vários e-mails que são classificados como spam e não spam.
Prever um valor numérico é outra tarefa típica de aprendizado supervisionado. Como exemplo, temos a previsão do preço (label) de um determinado carro, baseado em um conjunto de características (ex.: modelo, ano de fabricação, quilometragem, etc) denominadas de previsores.
Segue a lista de alguns algoritmos do aprendizado supervisionado:
- KNN – K Nearest Neighbours
- Regressão Linear
- Regressão Logística
- Máquinas de Vetores de Suporte (SVM)
- Árvores de Decisão e Florestas Aleatórias
Aprendizado Não Supervisionado
No aprendizado não supervisionado, os dados de treinamento não são rotulados, ou seja, o sistema tenta aprender sem um professor.
Uma importante tarefa e muito utilizado nos dias atuais, que representam um bom exemplo de aprendizado não supervisionado, é a detecção de transações incomuns em operações de cartões de crédito para evitar a ocorrência de fraudes, onde o sistema é treinado com instâncias normais e quando vê uma nova instância, pode dizer se ela parece normal ou se é uma provável anomalia.
Outro exemplo muito utilizado, é o de detecção de semelhanças em grupos de usuários que visitam um determinado blog. Neste caso, temos a aplicação de um algoritmo de clustering. É muito importante a detecção dos grupos que frequentam determinado blog, para que seja realizado o processo de segmentação das postagens para cada grupo de visitantes.
Segue a lista de alguns algoritmos do aprendizado não supervisionado:
- K-Means
- Clustering Hierárquico
Estudo de Caso
Como forma de melhor entender a utilização dos algoritmos de máquina, será mostrado a resolução de um problema de regressão e para facilitar ainda mais o entendimento do autor, será apresentado o algoritmo Prophet, projeto open–source do Facebook.
Cenário
Foi realizado uma projeção de 30 dias com relação aos casos confirmados do COVID-19, a partir do dia 13-09-2020. O objetivo principal é saber se nos próximos 30 dias, teremos uma estabilização dos casos confirmados.
URL do data-set: https://data.brasil.io/dataset/covid19/_meta/list.html (arquivo caso.csv.gz) extraído em 14-09-2020 às 00h47m
Prophet
Prophet é um algoritmo de previsão implementado em R e Python, mas especialmente neste artigo foi utilizado a implementação em Python. Ele é rápido e fornece uma completa automação do processo de previsão que pode ser utilizado por cientistas e analistas de dados.
O Prophet é um projeto open source do time de Cientistas de Dados do Facebook.
O Prophet segue o mesmo princípio dos algoritmos do Scikit Learn (https://scikit-learn.org/). Resumidamente temos os seguintes passos:
- Cria uma instância da classe Prophet
- Chama o método “fit” para o treinamento do modelo
- Chama o método “predict” para a realização da previsão
Os parâmetros de entrada do Prophet sempre serão um dataframe com duas colunas: ds e y.
- ds: é um datestamp e deve ter o formato esperado pelo Pandas, idealmente YYYY-MM-DD para uma data ou YYYY-MM-DD HH:MM:SS para timestamp.
- y: deverá ser numérico e representa a medida que desejamos prever.
Aplicação do Prophet no Cenário
Resultados
Na tabela a seguir é mostrado os últimos quatro registros de toda a tabela de resultados. Observe que a saída dos dados da previsão é mostrada seguindo as seguintes colunas: yhat_lower (previsão baixa), yhat (previsão média) e yhat_upper (previsão alta). Considerando o número de casos confirmados apurados no dia 13-09-2020 que são de 163535, se comparado a quantidade de casos confirmados apurados no dia 13-10-2020 que serão aproximadamente 224230 se considerado a previsão média, então teremos um crescimento considerável de casos confirmados.
Referências Bibliográficas
- Mãos à Obra: Aprendizado de Máquina com Scikil-Learn & TensorFlow; Alta Books; 2019.
- https://facebook.github.io/prophet/docs/ (acessado em Setembro/2020)