class: center, middle, inverse, title-slide # Utilizando o Pycaret com dados do Covid-19 ### Francisco Rosa Dias de Miranda ### Predict - ICMC ### Novembro 2021 --- class: center
## Sobre a apresentação - **Motivação**: o pipeline padrão de um cientista de dados requer muitas linhas de código. - **Objetivo**: apresentar o módulo `pycaret` como maneira de resolver problemas do Predict em 2020 e 2021, indicar como utilizá-lo como ferramenta. --- ## Qual o foco de nossa análise? - **2020**: Modelos de regressão - **Resposta**: total acumulado de casos - **Modelo**: Gompertz - **Resposta**: novos casos /óbitos diários - **Modelo**: SARIMA, Redes Neurais - **2021**: Modelos de classificação - **Resposta**: indivíduo veio óbito ou não - **Modelo**: Regressão logística, ... --- class: center, middle
--- class: center, middle
--- class: center, middle ## Pycaret <img src="https://miro.medium.com/max/625/1*2otHnNXOngAcvKzcTo_vlw.jpeg" width="70%" height="70%" /> Fonte: https://brianray-7981.medium.com/google-clouds-automl-first-look-cb7d29e06377 --- ## Pycaret **O que é?** - Uma biblioteca para automatizar o pipeline padrão de um experimento em ciência de dados. **Pró**: - Código mais compacto, robusto e interpretável; - É possível focar mais nos dados do que na programação. **Contra**: - Necessário conhecer muito bem a documentação para entender o que está sendo feito, senão tudo vira uma caixa preta. - Por estar em desenvolvimento, novos módulos podem surgir e outros ficarem _deprecated_ rapidamente. --- ## Instalação local - Altamente recomendável utilizar um ambiente virtual (a documentação explica como criar um) ```bash # install the full version of pycaret pip install pycaret[full] # time series module (beta) pip install pycaret-ts-alpha ``` Fonte: https://pycaret.readthedocs.io/en/latest/installation.html --- ## Collab Utilize a versão "slim" ```python !pip install pycaret ``` Também é necessário ativar o modo collab: ```python from pycaret.utils import enable_colab enable_colab() ``` Fonte: https://pycaret.readthedocs.io/en/latest/installation.html --- ## Carregando Módulos Atualmente, existem 6 módulos estáveis e um beta suportados. ```python from pycaret.classification import * # Classification from pycaret.regression import * # Regression from pycaret.clustering import * # Clustering from pycaret.anomaly import * # Anomaly Detection from pycaret.nlp import * # Natural Language Processing from pycaret.arules import * # Association Rule Mining from pycaret.time_series import * # Time Series (experimental) ``` -- - **Classificação**: prever a classe de novas observações; - **Regressão**: prever valores de novas observações; - **Detecção de Anomalias**: identificar valores ou eventos raros. - **Processamento de Linguagem Natural**: análise de corpus textuais; - **Association Rule Mining**: `\(\{cebolas, batatas\} \rightarrow \{tomate\}\)`; - **Séries Temporais** (beta) --- ## Setup Primeiro e único passo obrigarório em qualquer experimento. Embora o comando seja simples, muitas coisas acontecem aqui: - **Tipo dos dados**: inferido automaticamente, confira e pressione `enter` ![](https://i0.wp.com/pycaret.org/wp-content/uploads/2020/02/setup1-1.png?resize=599%2C346&ssl=1) Fonte: https://pycaret.org/setup/ --- ## Setup Também é possível passar os tipos diretamente através dos argumentos: ```python categorical = ['asma', 'diabetes', 'obesidade'] numeric = ['idade'] clf = setup(data = dados, target='obito', categorical_features = categorical, numeric_features = numeric, session_id = 4336) ``` - **session_id**: semente aleatória, para reprodutibilidade do experimento - **limpeza/preparação**: tratamento de dados faltantes, data inputting - **amostragem**: modelos preliminares com diferentes tamanhos amostrais - **data splitting**: a amostra é separada em treino e teste (70:30 por padrão) Fonte: https://pycaret.org/setup/ --- ## Comparando modelos Passo inicial no _workflow_ de qualquer experimento supervisionado. Todos os modelos da biblioteca são ajustados e suas métricas de performance são avaliadas. ```python compare_models() ``` ![](img/Compare.PNG) Fonte: https://pycaret.org/compare-models/ --- ## Ajustar o modelo Toma como parâmetro o ID do modelo e retorna uma tabela com métricas de validação cruzada em _k-folds_ (no caso supervisionado), assim como o modelo. Por padrão, o parâmetro `fold = 10`. ```python dt = create_model('dt') ``` Métricas de avaliação que podem ser utilizadas: - **Classificação**: Accuracy, AUC, Recall, Precision, F1, Kappa, MCC. - **Regressão**: MAE, MSE, RMSE, R2, RMSLE, MAPE Fonte: https://pycaret.org/create-model/ --- ## Tunar o modelo Encontra melhores hiperparâmetros do modelo criado através de um random grid search (modelos supervisionados). Similar à função `create_model()` ```python tuned_dt = tune_model(dt) ``` - Por padrão, essa função realiza 10 iterações aleatórias dentro do espaço de busca, controlado através do parâmetro `n_iter` - Aumentá-lo pode custar mais tempo, porém regularmente oferece um modelo melhor otimizado. - A métrica a ser otimizada pode ser definida através do parâmetro `optimize `. - Por padrão são utilizados o `\(R^2\)` em tarefas de Regressão, e a _acurácia_ na Classificação. Fonte: https://pycaret.org/tune-model/ --- ## Modelo ajustado ![](https://cdn.motor1.com/images/mgl/PqO9K/s1/saveiro-surf-2015-cabine-simples-ja-e-vendida-por-r-48050.jpg) Fonte: https://cdn.motor1.com/images/mgl/PqO9K/s1/saveiro-surf-2015-cabine-simples-ja-e-vendida-por-r-48050.jpg --- ## Modelo tunado <img src="https://pbs.twimg.com/media/DwHbcrHXcAAZtp1.jpg" width="80%" height="85%" /> Fonte: https://pbs.twimg.com/media/DwHbcrHXcAAZtp1.jpg --- ## E em seguida? Depende da sua tarefa, do seu conhecimento e da sua disposição! Alguns passos extras para a modelagem: - Ensembling - Bagging - Boosting - Blending - Model voting - Stacking - Multiple Layer Fonte: https://www.pycaret.org/ensemble-model --- ## O que mais? - Análise do modelo - Plots - Interpretação - Deployment - Previsões ## Vamos programar! 1. `covid-class.ipynb` 1. `covid-ts.ipynb` --- ## O que vimos hoje? ### mini-pipeline do pycaret: 1. `setup()` 1. `create_model()` 1. `tune_model()` 1. `finalize_model()` --- class: center, middle, inverse ##"... all models are approximations. Essentially, all models are wrong, but some are useful. However, the approximate nature of the model must always be borne in mind...." # George Box