Skip navigation

Как считается рейтинг пилотов?

Пилотов в рейтинге
Учтено гонок
Пилотов с ⚠️
Пилотов с 10+ стартами
Активных классов
Последнее обновление рейтингов
Рейтинг пересчитывается после каждого нового этапа

1 Математическая основа

Мы используем модель Брэдли-Терри с Lasso-регуляризацией — стандарт спортивной аналитики, применяемый в теннисе, футболе и киберспорте. Модель не просто считает места — она определяет вероятность победы одного пилота над другим.

P(i > j) = exp(θᵢ) / (exp(θᵢ) + exp(θⱼ))

Где θᵢ — рейтинговый коэффициент пилота. Чем выше θ, тем выше вероятность победы в прямом столкновении.

2 Временное затухание — свежие гонки важнее

Каждая гонка получает вес, который уменьшается по экспоненте с течением времени. Старые результаты постепенно теряют влияние — как в реальном спорте.

вес = exp(−λ × дней / 365)
λ активного пилота
Гонки в последние дней
λ неактивного пилота
Без гонок более дней
Порог неактивности
дней без гонок → ускоренное затухание

Активный пилот

  • ✅ Гонка 1 месяц назад → вес 93%
  • ✅ Гонка 6 месяцев назад → вес 67%
  • ✅ Гонка 1.5 года назад → вес ~30%

Участвовал в гонках в последние дней.

Неактивный пилот

  • ⚠️ Гонка 6 месяцев назад → вес 37%
  • ⚠️ Гонка 1 года назад → вес 14%
  • ⚠️ Гонка 1.5 года назад → вес ~5%

Не участвовал более дней. Рейтинг постепенно тускнеет.

Зачем это нужно? Пилот, который ушёл из класса 2 года назад, не должен занимать высокое место только за счёт прошлых результатов. Временное затухание делает рейтинг живым и актуальным.

3 Как это работает на практике

Шаг 3.1. Парные сравнения

Каждая гонка разбивается на парные сравнения с учётом временного веса. Если в гонке 10 пилотов — получаем 45 сравнений (каждый с каждым).

МестоПилотПобеды в парахВес сравнения
1Пилот 19 победзависит от даты гонки
2Пилот 28 победзависит от даты гонки
3Пилот 37 победзависит от даты гонки

Шаг 3.2. Учёт силы соперников

Победа над сильным соперником добавляет больше рейтинга, чем победа над слабым. Финиш 2-м среди сильных пилотов может быть ценнее, чем победа в слабом поле.

4 Байесовское сглаживание — защита от случайных скачков

Пилот с 1–2 стартами может случайно оказаться на вершине таблицы. Мы применяем байесовское сглаживание: рейтинг новичка тянется к медиане класса, пока не накопится достаточно данных.

Байес = (N × BT_raw + C × μ) / (N + C)   C = 15

Где N — число стартов пилота, C = 15 — коэффициент доверия, μ — медиана всех пилотов класса. При N=15 стартах пилот получает 50% доверия, при N≥45 — почти полное.

Без сглаживания

  • ⚠️ 1 старт, случайная победа → рейтинг 100
  • ⚠️ Новичок выше опытных пилотов
  • Рейтинг нестабилен

С байесовским сглаживанием

  • ✅ 1 старт → рейтинг близок к среднему по классу
  • ✅ После 15+ стартов — рейтинг полностью доверяется
  • Рост рейтинга заслуженный

5 Нормировка (шкала 0–100)

После байесовского сглаживания все рейтинги нормируются в понятную шкалу. Лидер класса всегда имеет 100, замыкающий — 0.

Рейтингнорм = (θ − θмин) / (θмакс − θмин) × 100
Важно: Рейтинг раздельный для каждого класса. Нельзя сравнивать пилота из Micro с пилотом из Senior — это разные дисциплины с разными конкурентными полями.

6 Тренд формы — ▲ / ▬ / ▼

В таблице рейтинга рядом с каждым пилотом отображается стрелка тренда — она показывает, улучшились или ухудшились результаты в последних гонках. Для каждой гонки считается нормализованная позиция:

позиция_норм = (N − место) / (N − 1) × 100

Где N — число участников в заезде. 1-е место из 20 пилотов даёт 100 баллов, 10-е из 20 — около 47. Затем сравниваются средние за последние 5 и предыдущие 5 гонок:

На подъёме
Последние 5 лучше
предыдущих 5 на 10%+
Стабильно
Разница
в пределах ±10%
Спад
Последние 5 хуже
предыдущих 5 на 10%+
Нет данных
Менее 6 гонок
в классе

7 Lasso-регуляризация (α = )

Параметр Alpha управляет силой регуляризации при обучении модели. Он предотвращает переобучение на малых выборках и стабилизирует рейтинги при малом числе гонок в классе.

8 Иконка ⚠️ — мало стартов

Пилоты с менее чем стартами отмечаются иконкой ⚠️. Байесовское сглаживание уже корректирует их рейтинг, но визуальное предупреждение помогает правильно интерпретировать результат.

ПилотСтартыРейтингУровень доверия
Новичок254.2 ⚠️Тянется к медиане класса
Середняк778.1Умеренное доверие
Ветеран2091.4Полное доверие
Участие в двух классах одновременно: Если пилот стартует в двух классах (например, Junior и Senior), рейтинг рассчитывается независимо для каждого класса. Результаты в Junior не влияют на рейтинг в Senior и наоборот — каждый класс имеет собственный рейтинг со своим нулём и своей сотней.

9 Смена класса и рейтинг

При переходе в новый класс рейтинг пилота начинается с нуля. Каждый класс — отдельная дисциплина: разные возрастные группы, разный конкурентный уровень. В профиле пилота отображаются рейтинги отдельно по каждому классу.

10 Итоговый алгоритм

  • Собираем все результаты гонок по каждому классу отдельно
  • Для каждой гонки вычисляем временной вес: свежие гонки важнее старых
  • Разбиваем на парные сравнения каждый с каждым внутри одной гонки
  • Обучаем модель Брэдли-Терри с Lasso-регуляризацией — получаем базовые рейтинги
  • Применяем байесовское сглаживание C=15: новички тянутся к медиане класса
  • Нормируем в шкалу 0–100 внутри каждого класса
  • Рассчитываем тренд формы ▲/▬/▼ по нормализованной позиции за последние 10 гонок
  • Помечаем ⚠️ пилотов с малым числом стартов
Обновление: Рейтинг пересчитывается после каждого нового этапа. Последнее обновление: