NTDevLab / ODP

Prediction Methodology

ODP uses a scientific approach to predicting Dota 2 matches, based on machine learning and rigorous model validation.

Ensemble Approach

Our system uses an ensemble of machine learning models instead of a single model. This increases reliability and prediction accuracy.

  • LightGBM — fast gradient boosting for tabular data
  • CatBoost — specialized in categorical features
  • XGBoost — classic gradient boosting with high accuracy

The final prediction is formed by weighted averaging of all model predictions, where weights are determined based on each model's performance on validation data.

Why ensemble? Different models capture different patterns in the data. By combining their predictions, we get more stable and accurate results.
Ensemble Architecture

Feature Engineering

Prediction quality directly depends on the quality of features. Our system uses several dozen features grouped by category.

Key principle: All features are computed as differences (diff) between teams, not absolute values. This makes the model invariant to which side plays Radiant or Dire.
Main feature categories:
Team Features
  • Head-to-head history
  • Current form (rolling windows)
  • KDA and GPM difference
  • Result stability (variance)
Player Features
  • Player statistics by role
  • Hero mastery (experience per hero)
  • Pool depth (number of heroes)
  • Individual recent form
Draft Features
  • Aggregated hero pool win rate
  • Meta hero ratings on current patch
  • Hero interaction aggregates (diff)
  • Role balance within the team
Context Features
  • Tournament type and tier
  • Series format (BO1, BO3, BO5)
  • Seasonal team history
  • Patch — deviation from base period
Feature Categories Distribution

Model Validation

We use strict validation methodology to avoid overfitting and obtain realistic accuracy estimates.

Temporal Split

Data is split strictly by time, not randomly. This is critically important:

  • Game meta changes with every patch — future data cannot be used during training
  • Teams change rosters and strategies — past results aren't always representative
  • Random splitting creates data leakage and inflates accuracy estimates
5-Fold Temporal Cross-Validation

We use 5-fold temporal cross-validation to evaluate model quality: data is split into 5 consecutive time periods, the model trains on previous folds and is evaluated on the next. The final score is averaged across all folds.

7-Day Buffer

Between training and test sets, a 7-day buffer is left — matches from this period are excluded entirely.

Why buffer? Form features aggregate over the last N days. Without a buffer, test matches could appear in training aggregates — this is data leakage.
Quality Metrics
  • Accuracy — share of correct winner predictions (primary metric)
  • ROC AUC — ranking ability of the model (diagnostic, secondary)
  • Calibration — alignment of predicted probabilities with actual frequencies
  • Brier Score — quality of probabilistic predictions
Production primary metric: prediction == match_result. Improving AUC while reducing accuracy is a regression, not progress. Only winner prediction accuracy has practical value for users.
Temporal Validation Timeline

Calibration and Overfitting Prevention

Even a well-trained model can be "overconfident" — giving probabilities close to 0% or 100% when real uncertainty is higher.

Calibration methods:
  • Platt Scaling — logistic regression on top of model predictions
  • Isotonic Regression — non-parametric calibration for complex cases
  • Temperature Scaling — simple method for neural networks
Overfitting prevention:
  • Early Stopping — stop training when validation performance degrades
  • Regularization — L1/L2 penalization of complex models
  • Feature Selection — removing noisy and correlated features
  • Cross-Validation — checking stability across different time periods
Calibration Curve

Continuous Improvement

Models are retrained as new data accumulates — especially after patch changes, roster swaps, or significant meta shifts.

  • Real-time performance monitoring via Accuracy Dashboard
  • New features validated on temporal cross-validation before entering production
  • Error analysis — which teams and scenarios the model systematically mispredicts
  • Data leakage audit for every new feature added
Predicting Dota 2 is an inherently hard task. The random baseline is 50%. The goal is to consistently exceed this threshold with honest validation.

Results

Accuracy varies by period, tournament tier, and current patch. We don't publish fixed numbers — they become stale and create a false sense of stability.

  • Random guessing

    50% — the baseline for comparison

  • Live statistics

    View on Accuracy Dashboard →

  • Results are not stable

    After patch changes or major roster updates, accuracy may temporarily drop

Even a few percent above 50% is a meaningful result in a task where experienced analysts also miss often.

Important Limitations

Our predictions are probabilistic estimates, not guarantees. Even with 80% win probability, a team can lose in 20% of cases.

  • Unforeseen factors (technical issues, player substitutions)
  • Psychological state of teams
  • New strategies and unexpected drafts
  • Randomness in the game (crits, bashes, rune spawns)
Do not use for betting! Predictions are intended for analytics and entertainment, not for gambling.

Learn More

Want to dive deeper into technical details?