Git Product home page Git Product logo

datathon_fgv's Introduction

Datathon FGV - Grupo: snake_case

Introdução

Esse repositório foi desenvolvido durante o Datathon da FGV, cujo o tema era criptomoedas.
Tínhamos como objetivo realizar uma análise, de tema livre, sobre o universo de criptomoedas. Decidimos então realizar o forecast do preço diário e 5-5min de algumas criptomoedas e utilizar a biblioteca Shap para trazer explicação das variáveis, sendo possível uma análise mais profunda das nossas predições.

Metodologia

Iniciamos nossa análise pela obtenção da base de dados. Consultamos vários datasets públicos, mas alguns apresentavam inconsistência e outro, muitas vezes, não eram de alta frequência. No entanto, na nossa busca, encontramos uma base muito bem estruturada no Kaggle. Tal coleção traz uma série de bases, minuto a minuto, de pares de criptomoedas. Além disso, o fato de estar na estrutura parquet a torna mais leve de se trabalhar.
Com a base em mãos, consultamos o site Coin Market Cap para selecionar com quais moedas iriamos fazer as análises, com base na capitalização de mercado das moedas. Escolhemos então as seguintes moedas:

  • Ethereum
  • Bitcoin
  • Ripple
  • Iota
  • Litecoin

Decidimos também que gostaríamos de olhar as moedas com seus valores baseado em dólar e em bitcoin, para realizar uma análise de como as escolha do par influencia na predição.
Em relação a modelagem, decidimos por utilizar desde modelos mais simples até alguns mais complexos, para entender como essas criptomoedas se comportam em cada uma deles e tentar explicar os motivos de termos tido bons ou maus resultados. Os modelos que escolhemos para avaliar foram:

  • Support Vector Machines for Regression (SVR)
  • Moving Average
  • Linear Regression
  • Multi Layer Preceptron (MLP)
  • Recurrent Neural Networks with LSTM blocks
  • KNN (K-Nearest Neighbors)

A ideia de trazer essa análise veio da leitura do artigo [Statistical and Machine Learning forecasting methods: Concerns and ways forward] e resolvemos agregar a questão da explicabilidade, pois sabemos que mais importante do que bons resultados, é entender a forma como nosso modelo realiza suas predições, a fim de encontrar bons insights, garantir a qualidade do processo e até mesmo refiná-lo.

Validação dos modelos

Vamos dividir esse tópico em duas partes:

Conjunto de teste

Um importante ponto na hora de criar um conjunto de teste para séries temporais é garantir que você realize a predição usando valores isolados no tempo, ou seja, treino no passado e realize predições no futuro. É muito importante que, dada a sazonalidade de uma séria temporal, seja respeitado o limite temporal de tal sazonalidade para realizar a divisão de treino e teste, para que o modelo utilizado, caso consiga, aprenda essa a sazonalidade de série. Quando quebramos tal padrão na hora de dividir nossa base podemos fazer com que o modelo não aprenda isso, ocasionando possíveis erros.

Predição

Métricas de avaliação

Para avaliar nossos modelos, utilizamos como métrica de avaliação a raiz da soma dos erros quadrados, também conhecido como RMSE (Root Mean Squared Error). Sua fórmula é dada por:



Resultados

Webapp

Desenvolvemos também um webapp para que você possa realizar alguns testes com sua própria base.

Para rodá-lo localmente você deve seguir os seguintes passos (seu desenvolvimento foi utilizando python 3.7):

  1. Baixar as dependências do projeto:
pip install -r streamlit/requirements.txt
  1. Executar o app (assumindo que você no mesmo diretório do README.md):
streamlit run streamlit/st_app.py
  1. Acessar o endereço local que irá aparecer no seu terminal.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.