Как считается рейтинг пилотов?
1 Математическая основа
Мы используем модель Брэдли-Терри с Lasso-регуляризацией — стандарт спортивной аналитики, применяемый в теннисе, футболе и киберспорте. Модель не просто считает места — она определяет вероятность победы одного пилота над другим.
Где θᵢ — рейтинговый коэффициент пилота. Чем выше θ, тем выше вероятность победы в прямом столкновении.
2 Временное затухание — свежие гонки важнее
Каждая гонка получает вес, который уменьшается по экспоненте с течением времени. Старые результаты постепенно теряют влияние — как в реальном спорте.
| Давность гонки | Вес |
|---|---|
| 1 месяц | 94% |
| 6 месяцев | 67% |
| 1 год | 45% |
| 1,5 года | 30% |
| 2 года | 20% |
| 3 года | 9% |
Значения для λ = 0,8. Вес уменьшается плавно, без скачков: гонка, прошедшая 364 или 366 дней назад, весит практически одинаково.
Пилоты, которые не выступали в классе дольше порога неактивности, в таблицу рейтинга не попадают. На странице такого пилота рядом с классом написано «вне рейтинга». Как только пилот снова выйдет на старт в этом классе, он вернётся в таблицу.
3 Как это работает на практике
Шаг 3.1. Парные сравнения
Каждая гонка разбивается на парные сравнения с учётом временного веса. Если в гонке 10 пилотов — получаем 45 сравнений (каждый с каждым).
| Место | Пилот | Победы в парах | Вес сравнения |
|---|---|---|---|
| 1 | Пилот 1 | 9 побед | зависит от даты гонки |
| 2 | Пилот 2 | 8 побед | зависит от даты гонки |
| 3 | Пилот 3 | 7 побед | зависит от даты гонки |
Шаг 3.2. Учёт силы соперников
Победа над сильным соперником добавляет больше рейтинга, чем победа над слабым. Финиш 2-м среди сильных пилотов может быть ценнее, чем победа в слабом поле.
Шаг 3.3. Пропущенный этап
Если пилот уже выступает в классе и пропустил этап, в расчёте он считается финишировавшим последним — позади всех участников этого этапа. Этапы, прошедшие до его первого старта в классе, пропуском не считаются: в это время пилот выступал в другом классе или ещё не начинал.
4 Байесовское сглаживание — защита от случайных скачков
Пилот с 1–2 стартами может случайно оказаться на вершине таблицы. Мы применяем байесовское сглаживание: рейтинг новичка тянется к медиане класса, пока не накопится достаточно данных.
Где 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.
6 Тренд формы — ▲ / ▬ / ▼
В таблице рейтинга рядом с каждым пилотом отображается стрелка тренда — она показывает, улучшились или ухудшились результаты в последних гонках. Для каждой гонки считается нормализованная позиция:
Где N — число участников в заезде. 1-е место из 20 пилотов даёт 100 баллов, 10-е из 20 — около 47. Затем сравниваются средние за последние 5 и предыдущие 5 гонок:
предыдущих 5 на 10%+
в пределах ±10%
предыдущих 5 на 10%+
в классе
7 Lasso-регуляризация (α = …)
Параметр Alpha управляет силой регуляризации при обучении модели. Он предотвращает переобучение на малых выборках и стабилизирует рейтинги при малом числе гонок в классе.
8 Мало стартов — вне таблицы
Пилоты, у которых в классе меньше … стартов, в таблицу рейтинга не попадают: одна-две гонки — слишком мало, чтобы честно сравнивать с теми, кто проехал сезон. Рейтинг для них всё равно считается, и на странице пилота видно, где бы он был, с пометкой «вне рейтинга: мало стартов». Набрав нужное число стартов, пилот появляется в таблице. Правило действует в классе, где нужное число стартов набрали хотя бы 5 пилотов; в небольших классах, где у всех по одной-две гонки, в таблице показываются все.
| Пилот | Старты | Рейтинг | Уровень доверия |
|---|---|---|---|
| Новичок | 2 | — | Вне таблицы, пока мало стартов |
| Середняк | 7 | 78.1 | Умеренное доверие |
| Ветеран | 20 | 91.4 | Высокое доверие |
9 Смена класса и рейтинг
Каждый класс — отдельная дисциплина: разные возрастные группы, разный конкурентный уровень. Рейтинг в новом классе считается только по гонкам в этом классе, в профиле пилота рейтинги показаны отдельно по каждому классу.
Но новичок класса — не всегда пилот «с нуля». Если пилот перешёл из другого класса, мы учитываем, каким он был там: пока в новом классе мало стартов, его рейтинг тянется не к середине таблицы, а к опоре, сдвинутой к тому же месту, которое он занимал в прошлом классе. Сдвиг — 50% пути от медианы: лидер прошлого класса начинает в верхней части новой таблицы, но не первым — соперники в новом классе сильнее.
Место в прошлом классе оценивается только по реально проведённым там гонкам: пропуски после перехода на него не влияют. Учитывается класс, в котором пилот провёл не меньше 2 стартов и закончил выступать до первого старта в новом. С каждым стартом в новом классе вес собственных результатов растёт, и через сезон место определяют уже они.
10 Итоговый алгоритм
- Собираем все результаты гонок по каждому классу отдельно
- Для каждой гонки вычисляем временной вес: свежие гонки важнее старых
- Разбиваем на парные сравнения каждый с каждым внутри одной гонки
- Обучаем модель Брэдли-Терри с Lasso-регуляризацией — получаем базовые рейтинги
- Применяем байесовское сглаживание: пилоты с малым числом стартов тянутся к медиане класса, а перешедшие из другого класса — к своему прошлому уровню
- Нормируем в шкалу 0–100 внутри каждого класса
- Рассчитываем тренд формы ▲/▬/▼ по нормализованной позиции за последние 10 гонок
- В таблицу попадают пилоты, у которых достаточно стартов в классе и которые выступали в нём не дольше порога неактивности назад