Привет, Codeforces!
Помните этот пост?
Если нет, кратко напомню. Последние 3–4 дня я делаю расширение для Codeforces, которое показывает ваше чистое место в standings без подозрительных участников.
Как это работает?
Идея довольно простая:
- Расширение берёт standings соревнования на Codeforces.
- Проходит по каждому handle.
- Делает предсказание с помощью ML-модели, используя историю выступлений пользователя в предыдущих соревнованиях.
Среди признаков: наличие skipped contests, резкие rating deltas вроде +100 или +200 после более стабильных изменений типа +10/+20, поведение рейтинга после первых 5 соревнований, когда он становится более устойчивым, и другие признаки.
Полный список признаков можно посмотреть в cheating_dataset.csv, который я использовал для обучения классификатора.
Интересно, что расширение можно использовать не только во время соревнования, но и после него — чтобы находить подозрительные профили в standings. По текущим тестам модель показывает достаточно неплохую точность.
Примеры использования
Покажу несколько примеров:

Возьмём пользователя с высоким score. Чем выше score, тем увереннее модель. Например: studyyyzz.
Посмотрим его профиль:

Можно подумать, что модель находит только очевидные случаи. Поэтому возьмём пользователя с более низким score, например HubRis504.


Как видно, расширение уже работает достаточно неплохо.
FAQ
Как установить расширение?
Инструкция по установке есть в этом посте.Модель всегда права?
Нет. Это ML-модель, а ML-модели не могут предсказывать со 100% точностью. Пожалуйста, не обвиняйте людей только потому, что модель пометила их как подозрительных.Можно ли улучшить расширение?
Да, конечно. Проект open-source. Вы можете посмотреть реализацию и предложить улучшения здесь: тык








