A full-circle MLOps system for flagging cheaters from player behavioral telemetry — actions per minute, click-interval consistency, reaction time, headshot %, movement entropy — built on a full MLOps toolchain (Kedro, MLflow, Optuna, Dash, Docker) applied to player behavioral telemetry and a multi-method anomaly-detection ensemble.
feature_eng and
monitoring both
read the same player-level features; training
logs every run to MLflow and only promotes a challenger if its weak-label AUC is at least as good as the champion's.
Nothing downstream of inference
ever bans a player automatically — it hands a ranked list to a human.
How far a player sits from the "normal" cluster, measured in units that account for how features correlate with each other — not a naive Euclidean distance.
Anomalies are easier to isolate with random splits than normal points are — so they land at shallower average tree depth. Contamination rate tuned with Optuna.
Compresses each player into a few principal components, then rebuilds them. Normal players reconstruct cleanly; unusual behavior leaves a large residual.
Only about 6% of true cheaters in this dataset are ever caught and labeled — which means every metric this system reports, weak_label_auc, top_k_capture_rate, is a lower bound against an unlabeled majority, not a real precision/recall guarantee.
That asymmetry is why inference never auto-bans. A false positive here means suspending a legitimate, skilled player — a far more expensive mistake than a missed detection — so the model's only output is a ranked queue for a human reviewer.
| Milestone | Covered | Lives here |
|---|---|---|
| 01 | Project scaffolding — uv / git | pyproject.toml, uv.lock |
| 02–03 | EDA, anomaly-detection taxonomy, SHAP | notebooks/01 - EDA - Cheat Detection.ipynb |
| 04–06 | Baseline model, tuning, experiment tracking | pipelines/training/ |
| 07 | Feature engineering pipeline structure | pipelines/feature_eng/ |
| 08 | Config-driven hyperparameter search | training/nodes.py |
| 09 | MLflow hooks, champion/challenger | hooks.py, pipelines/inference/ |
| 10 | Data management module | src/app_data_manager/ |
| 11 | Programmatic KedroSession entrypoints | entrypoints/training.py, inference.py |
| 12 | Multi-page Dash UI, callbacks | src/app_ui/ |
| 13 | Model monitoring, data drift | pipelines/monitoring/ |
| 14 | Real-time streaming, pytest | app_stream_data.py, tests/ |
| 15 | Code quality, pre-commit | .pre-commit-config.yaml |
| 16 | CI with GitHub Actions | .github/workflows/ci.yml |
| 17 | Docker deep-dive | Dockerfile, docker-compose.yml |
| 18 | Cloud deployment, CD | .github/workflows/cd.yml |
| 19 | Prefect orchestration | not implemented — see tradeoffs above |
| 20 | Full docker-compose stack | docker-compose.yml |