Обновление расчета рейтинга пользователей.
Полтора года назад мы с @Иван Бочкарев добавили в рейтинг коэффициент активности. В комментариях Іван Клімчук предложил учитывать ещё и возраст самой заметки — я ответил, что идея отличная, и пообещал попробовать. Концепт я сделал, выкатил на боевой сайт и заодно выключил тот самый коэффициент активности, о котором написал двумя неделями раньше. Включить обратно забыл — на полтора года.
В комментариях к январской статье он написал, что коэффициент по автору всё равно даёт перекос: стоит былому активисту зайти и что-нибудь написать, как весь его старый рейтинг возвращается целиком. И предложил считать коэффициент от возраста самой заметки — правильнее, но лезть в формулу страшно, поломается всё.
Я ответил, что идея отличная и что я до неё не додумался. И пообещал попробовать сделать концепт.
17 января я дописал расчёт по годам и выложил на бой. Заодно закомментировал коэффициент активности — рассуждение было такое, что раз старые заметки и так дешевеют, штрафовать автора второй раз незачем.
Раскомментировать забыл.
Полтора года рейтинг считался не так, как описано в январской статье: возраст заметок учитывался, активность автора — нет. Снаружи подмену было почти не видно, потому что оба коэффициента бьют по одним и тем же людям. Но бьют по-разному. Заметка десятилетней давности дешевеет до 0.1 сама по себе, а вот автор, переставший писать пару лет назад, не получал больше никакого штрафа — все его заметки последних лет продолжали считаться по полной.
Полез я в это только на прошлой неделе, когда решил разобраться, почему в ТОП-20 держатся аккаунты без единой заметки за год.
Оба коэффициента работают вместе, как Іван и предлагал.
Коэффициент активности автора — без изменений с января. Писал в последний месяц — 1, от месяца до трёх — 0.8, от трёх до полугода — 0.5, от полугода до года — 0.3, больше года назад — 0.1.
Коэффициент возраста заметки — новый. Теперь каждая публикация и каждый голос весят по тому году, когда случились:
Пока разбирался, вылезли две вещи, которые тихо работали неправильно:
@Василий Наумкин — пятый. Формула по-прежнему считает его вклад самым большим на портале, но без свежих заметок первые строчки он уступил. Напишет что-нибудь — вернётся на первое место при ближайшем пересчёте.
@Павел Гвоздь поднялся на третье место, @Володя и @Prihod вошли в первую дюжину. Все трое — жертвы той самой ошибки с датой: они всё это время писали, а формула считала их ушедшими.
@Алексей Шумаев, @Павел Романов и @vectorserver зашли в ТОП-20 из третьего десятка.
Ушли из ТОП-20 Іван Клімчук, Михаил и Pavel Zarubin — те самые, кого январская статья уже провожала с первой страницы. Полтора года без коэффициента активности они держались на накопленном.
Тут не могу удержаться: Іван покинул двадцатку из-за коэффициента, который сам же и предложил. В январе он написал «Дорогу молодым» — ну вот, дорога.
И да, первым в списке теперь я. Понимаю, как это выглядит, поэтому скажу прямо: базовые баллы у меня и так были вторыми и от изменения не зависят, поменялся только множитель — потому что я пишу. Формула одна на всех, считает её скрипт по расписанию, а не я руками.
Как и в январе — это не окончательная формула.
Затухание по годам пока применяется не ко всему: баллы за написанные комментарии и за добавление в избранное живут по-старому, без учёта возраста. Плюс коэффициент меняется скачком первого января, а не плавно по месяцам. И то, и другое буду доделывать.
Картина, которую я вижу сейчас, кажется мне честнее прошлогодней: наверху люди, которые пишут, а накопленные заслуги никуда не делись — просто перестали держать место вечно. Но если вы видите иначе или у вас есть идея получше — пишите. Прошлогодняя дискуссия в комментариях вылилась ровно в это обновление, так что смысл в ней есть.
1
Что предложил Іван
В комментариях к январской статье он написал, что коэффициент по автору всё равно даёт перекос: стоит былому активисту зайти и что-нибудь написать, как весь его старый рейтинг возвращается целиком. И предложил считать коэффициент от возраста самой заметки — правильнее, но лезть в формулу страшно, поломается всё.
Я ответил, что идея отличная и что я до неё не додумался. И пообещал попробовать сделать концепт.
Концепт я сделал. И заодно выключил январское обновление
17 января я дописал расчёт по годам и выложил на бой. Заодно закомментировал коэффициент активности — рассуждение было такое, что раз старые заметки и так дешевеют, штрафовать автора второй раз незачем.
Раскомментировать забыл.
Полтора года рейтинг считался не так, как описано в январской статье: возраст заметок учитывался, активность автора — нет. Снаружи подмену было почти не видно, потому что оба коэффициента бьют по одним и тем же людям. Но бьют по-разному. Заметка десятилетней давности дешевеет до 0.1 сама по себе, а вот автор, переставший писать пару лет назад, не получал больше никакого штрафа — все его заметки последних лет продолжали считаться по полной.
Полез я в это только на прошлой неделе, когда решил разобраться, почему в ТОП-20 держатся аккаунты без единой заметки за год.
Как считается теперь
Оба коэффициента работают вместе, как Іван и предлагал.
Коэффициент активности автора — без изменений с января. Писал в последний месяц — 1, от месяца до трёх — 0.8, от трёх до полугода — 0.5, от полугода до года — 0.3, больше года назад — 0.1.
Коэффициент возраста заметки — новый. Теперь каждая публикация и каждый голос весят по тому году, когда случились:
- 2026 и 2025 — полный вес
- 2024 — 0.9
- 2023 — 0.8
- дальше минус 0.1 за каждый год
- 2016 и раньше — 0.1, ниже не опускается
Заодно нашлось
Пока разбирался, вылезли две вещи, которые тихо работали неправильно:
- Дата активности для комментаторов считалась неверно. Бралась не дата комментария, а дата публикации заметки, в которой он оставлен. То есть человек, отвечающий на вопросы в старых ветках, для формулы выглядел молчуном. Таких набралось 14 в первой двухсотке, двое из них — в ТОП-20.
- Заблокированные снова обнуляются. Эта проверка жила внутри коэффициента активности и полтора года не работала вместе с ним.
Что стало со списком
@Василий Наумкин — пятый. Формула по-прежнему считает его вклад самым большим на портале, но без свежих заметок первые строчки он уступил. Напишет что-нибудь — вернётся на первое место при ближайшем пересчёте.
@Павел Гвоздь поднялся на третье место, @Володя и @Prihod вошли в первую дюжину. Все трое — жертвы той самой ошибки с датой: они всё это время писали, а формула считала их ушедшими.
@Алексей Шумаев, @Павел Романов и @vectorserver зашли в ТОП-20 из третьего десятка.
Ушли из ТОП-20 Іван Клімчук, Михаил и Pavel Zarubin — те самые, кого январская статья уже провожала с первой страницы. Полтора года без коэффициента активности они держались на накопленном.
Тут не могу удержаться: Іван покинул двадцатку из-за коэффициента, который сам же и предложил. В январе он написал «Дорогу молодым» — ну вот, дорога.
И да, первым в списке теперь я. Понимаю, как это выглядит, поэтому скажу прямо: базовые баллы у меня и так были вторыми и от изменения не зависят, поменялся только множитель — потому что я пишу. Формула одна на всех, считает её скрипт по расписанию, а не я руками.
Что дальше
Как и в январе — это не окончательная формула.
Затухание по годам пока применяется не ко всему: баллы за написанные комментарии и за добавление в избранное живут по-старому, без учёта возраста. Плюс коэффициент меняется скачком первого января, а не плавно по месяцам. И то, и другое буду доделывать.
Картина, которую я вижу сейчас, кажется мне честнее прошлогодней: наверху люди, которые пишут, а накопленные заслуги никуда не делись — просто перестали держать место вечно. Но если вы видите иначе или у вас есть идея получше — пишите. Прошлогодняя дискуссия в комментариях вылилась ровно в это обновление, так что смысл в ней есть.
Комментарии: 1