Skip navigation

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

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

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

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

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

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

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

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

вес = exp(−λ × дней / 365)
λ — скорость затухания
…
Одна для всех гонок и всех пилотов
Порог неактивности
…
дней без стартов в классе — пилот не показывается в таблице
Давность гонкиВес
1 месяц94%
6 месяцев67%
1 год45%
1,5 года30%
2 года20%
3 года9%

Значения для λ = 0,8. Вес уменьшается плавно, без скачков: гонка, прошедшая 364 или 366 дней назад, весит практически одинаково.

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

Пилоты, которые не выступали в классе дольше порога неактивности, в таблицу рейтинга не попадают. На странице такого пилота рядом с классом написано «вне рейтинга». Как только пилот снова выйдет на старт в этом классе, он вернётся в таблицу.

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

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

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

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

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

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

Шаг 3.3. Пропущенный этап

Если пилот уже выступает в классе и пропустил этап, в расчёте он считается финишировавшим последним — позади всех участников этого этапа. Этапы, прошедшие до его первого старта в классе, пропуском не считаются: в это время пилот выступал в другом классе или ещё не начинал.

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

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

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

Где N — число стартов пилота, C = 4 — коэффициент доверия, μ — медиана всех пилотов класса (у пилота, перешедшего из другого класса, — опора с учётом прошлого класса, см. раздел 9). При N = C стартах пилот получает 50% доверия к своим результатам, при N = 2C — 67%, при N = 3C — 75%.

Коэффициент подобран под реальную длину выступления в классе: обычно пилот проводит в классе 3–9 этапов и переходит дальше. Поэтому доверие набирается за один сезон, а не за несколько лет.

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

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

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

  • ✅ 1 старт → рейтинг близок к среднему по классу
  • С каждым стартом доверие растёт: при C = 4 четыре старта дают 50%, восемь — 67%, сезон (около 9 стартов) — около 70%
  • Рост рейтинга заслуженный

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 Мало стартов — вне таблицы

Пилоты, у которых в классе меньше … стартов, в таблицу рейтинга не попадают: одна-две гонки — слишком мало, чтобы честно сравнивать с теми, кто проехал сезон. Рейтинг для них всё равно считается, и на странице пилота видно, где бы он был, с пометкой «вне рейтинга: мало стартов». Набрав нужное число стартов, пилот появляется в таблице. Правило действует в классе, где нужное число стартов набрали хотя бы 5 пилотов; в небольших классах, где у всех по одной-две гонки, в таблице показываются все.

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

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

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

Но новичок класса — не всегда пилот «с нуля». Если пилот перешёл из другого класса, мы учитываем, каким он был там: пока в новом классе мало стартов, его рейтинг тянется не к середине таблицы, а к опоре, сдвинутой к тому же месту, которое он занимал в прошлом классе. Сдвиг — 50% пути от медианы: лидер прошлого класса начинает в верхней части новой таблицы, но не первым — соперники в новом классе сильнее.

Место в прошлом классе оценивается только по реально проведённым там гонкам: пропуски после перехода на него не влияют. Учитывается класс, в котором пилот провёл не меньше 2 стартов и закончил выступать до первого старта в новом. С каждым стартом в новом классе вес собственных результатов растёт, и через сезон место определяют уже они.

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

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