Сортировка

sveta75

Задача:
Скажем на странице есть 10 ссылок. Какие то из них я посещаю каждый день, а какие то раз в месяц. Естественно хочется чтобы популярные ссылки шли сверху, поэтому каждой ссылке при добавлении на страницу присваивается 0 рейтинг и при каждом ее посещении увеличивается на 1. Все замечательно работает: чем больше у ссылки рейтинг, тем она выше. Проблема появлется когда я добавляю новую ссылку, которая оказывается популярнее остальных, но болтается в конце списка, потому что остальные свой рейтинг полгода набирали, а она только несколько дней.
Вопрос:
1) Какой можно придумать алгоритм устаревания рейтинга? То есть как перестать учитывать посещения старых ссылок, некогда бывших популярными.
2) Как перейти от учета количества посещений к их частоте? Вести какие то логи и потом их обрабатывать неохота.

abrek

EWMA (Exponentially Weighted Moving Average)?

avinir60

То что в голову пришло:
Самое простое: учитывать только количество посещений за последние 5 дней.
Более серьезный вариант: каждый день вес одного клика понижается, скажем на 10%. То есть если вчера у ссылки был вес w, то сегодня это будет уже w*0.9+n, где n - количество кликов за последний день.
Если нужен совсем продвинутый вариант, читай статьи. дал ключевые слова.

abrek

> Самое простое: учитывать только количество посещений за последние 5 дней.
Простое Moving Average, как я понимаю.
Недостаток: нужно хранить моменты всех посещений, тогда как для EWMA достаточно одной величины.
> Более серьезный вариант: каждый день вес одного клика понижается, скажем на 10%.
Приближение EWMA.

sergey_m

Более серьезный вариант: каждый день вес одного клика понижается, скажем на 10%. То есть если вчера у ссылки был вес w, то сегодня это будет уже w*0.9+n, где n - количество кликов за последний день.

Короче говоря, ставишь на cron задачу которая делает: "update <table> set <counter>=<counter>*0.9". И все дела.

sveta75

каждый день вес одного клика понижается, скажем на 10%

Кликов там не так много будет
А как в моем случае будет выглядеть формула для вычисления EWMA? То что я в инете нашел, как то слишком запутанно

Varvara2002

Я конечно не спец в этом вопросе, но почему бы не сделать так:
с каждой ссылкой связано число дней ее существования (когда она первый раз была загружена) и
число раз ее посещения. Отношение и буднт крутизна ссылки ($2/$1).

Chupa

маза такой штукой посты в форуме считать
Оставить комментарий
Имя или ник:
Комментарий: