Блог пользователя nileq

Автор nileq, история, 20 часов назад, По-русски

Привет, Codeforces!


Помните этот пост?

Если нет, кратко напомню. Последние 3–4 дня я делаю расширение для Codeforces, которое показывает ваше чистое место в standings без подозрительных участников.


Как это работает?

Идея довольно простая:

  1. Расширение берёт standings соревнования на Codeforces.
  2. Проходит по каждому handle.
  3. Делает предсказание с помощью 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. Вы можете посмотреть реализацию и предложить улучшения здесь: тык

  • Проголосовать: нравится
  • -5
  • Проголосовать: не нравится