- https://www.kaggle.com/c/ieee-fraud-detection/data
- data definition: https://www.kaggle.com/c/ieee-fraud-detection/discussion/101203
O projeto foi organizado de uma forma linear de modo a facilitar a navegação e compreensão do passo a passo.
.
├── data
│ ├── 01_raw
│ │ ├── ...
│ ├── 02_intermediate
│ ├── ├── ...
│ │ 03_processed
│ │ ├── ...
│ ├── 04_models
│ │ ├── ...
│ ├── 05_model_output
│ │ ├── ...
│ ├── 06_reporting
│ │ ├── ...
│ ├── 07_prediction
│ │ ├── ...
│ ├── temp
│ │ ├── ...
├── notebooks
│ ├── 01_data_validation.ipynb
│ ├── 02_split.ipynb
│ ├── 03_eda_cleansing.ipynb
│ ├── 04_encoding.ipynb
│ ├── 05_feature_engineering_sandbox
│ ├── 06_check_correlations.ipynb
│ ├── 07_model_linear.ipynb
│ ├── 07_model_tree_rf.ipynb
│ ├── 07_model_tree_xgboost.ipynb
│ ├── 08_model_selection.ipynb
│ ├── 09_final_model.ipynb
│ ├── 10_decision_making.ipynb
├── src
│ ├── build_subfolders.py
│ ├── model.py
│ ├── params.py
│ ├── s04_1_feature_engineering.py
│ ├── utils.py
├── temp
├── README.md
├── requirements.txt
└── runtime.txt
- model.py: funções voltadas para modelos de Machine Learning
- params.py: parâmetros principais do projeto
- s03_encoding.py: seção não utilizada, mas análoga ao s03_encoding.ipynb
- s05_2_feature_engineering.py: diversas funções que formulam pré-processamento e alimentam parte de modelagem
- utils.py: funções genéricas, mas aplicadas ao longo de notebooks diversos do projeto
Reports over datasets and case.
Esse projeto usa Python 3.7.5 e os seguintes pacotes devem ser instalados se não estiver usando uma distribuição como Anaconda:
impyute - matplotlib - numpy - pandas - scipy - seaborn - scikit-learn - statsmodels - xgboost
Os pacotes podem ser automaticamente instalados por meio do arquivo requirements.txt. Para utilizá-los, é necessário criar um ambiente virtual, por exemplo via virtualenv e rodar o seguinte código no terminal:
pip install -r requirements.txt
Lembrando que IDEs como pycharm automatizam toda essa tarefa.
Para trabalhar com os arquivos, é necessário ter jupyter notebook instalado (se possuir distribuições como anaconda, pode pular esse passo). Para instalar, digite no terminal:
sudo apt update
pip install jupyter
Um projeto de machine learning demanda cuidado minucioso sobre diversas etapas. Abaixo, fiz um fluxograma (via figma) de um projeto usual:
O modelo final utilizado foi um xgboost com um set específico de hiperparâmetros e features. O score, seja ele acurácia, precisão, recall, f1, não é o único fator relevante para a tomada de decisão. Interpretabilidade, velocidade de treinamento e de predição também podem ser relevantes a depender de cada problema de negócio com o qual as empresas se deparam.
Segue abaixo gráficos comparativos da performance de cada modelo:
Obs: diferenças de velocidade dependem não apenas do modelo escolhido, mas também da configuração do hyperparameter tuning.
Os notebooks possuem análises mais detalhadas de acordo com cada etapa.
O racional para decisões quanto a escolha do modelo e estratégias sugeridas será demonstrado na apresentação.
- Customizar pipeline de pré-processamento dentro do sklearn para garantir eficácia da validação dos modelos
- adicionar docstrings
- adicionar testes unitários
- refatorar código (com assistência de IDEs como pycharm)
- preparar código para produção
- implementar modelo na nuvem (AWS, GCP ou Azure)
Além disso, cada notebook poderia ter um trabalho mais minucioso quanto à escolha de técnicas, assim como de parâmetros.