Projeto de Machine Learning para prever resultados de partidas de CS2 usando dados do HLTV.org.
O objetivo é coletar dados reais de partidas profissionais de Counter-Strike 2 e usar esses dados para treinar modelos que preveem se um time vai vencer ou perder uma partida específica, considerando o mapa, o adversário e o desempenho recente dos jogadores.
Os dados vêm do HLTV, principal site de estatísticas de CS2 do mundo. O scraping coleta informações dos top 50 times do ranking mundial.
O projeto segue um pipeline em 3 etapas:
Etapa 1 — Coleta de dados (Scraping)
- Acessa o ranking HLTV e identifica os top 50 times
- Para cada time, coleta todas as partidas dentro do período configurado
- Coleta os 5 jogadores de cada time em cada mapa jogado
- Coleta estatísticas detalhadas (rating, KD, ADR, etc.) de cada jogador
Etapa 2 — Preparação dos dados
- Reorganiza os dados para que team1 seja sempre o time analisado
- Aplica transformação Box-Cox na diferença de pontos entre os times
- Calcula peso de recência (partidas mais recentes valem mais)
- Detecta mudanças de lineup entre partidas
- Faz one-hot encoding dos mapas
- Aplica oversampling no treino para balancear vitórias e derrotas
Etapa 3 — Treinamento e avaliação
- Treina 7 modelos diferentes nos mesmos dados
- Compara todos usando Accuracy, Precision, Recall e F1-Score
- Otimiza hiperparâmetros da rede neural com Optuna
- Analisa quais features mais influenciam nas previsões
| Modelo | Tipo |
|---|---|
| Rede Neural Híbrida | CNN 1D + Transformer |
| XGBoost | Gradient Boosting |
| CatBoost | Gradient Boosting |
| Gradient Boosting | Gradient Boosting |
| Random Forest | Ensemble |
| KNN | Baseado em distância |
| Decision Tree | Árvore de decisão |