В нашем приложении ralis есть модель, объектам которой присваивается оценка на основе положительных действий пользователя.Мы будем называть их продуктами для простоты.Если пользователю нравится продукт, или он покупает продукт, или просматривает продукт, оценка увеличивается с разным весом (подобное может стоить больше, чем просмотр, два просмотра в течение 30 секунд могут стоить больше, чем три просмотра по всемучас и т. д.)
Мы хотели бы использовать эти оценки для сортировки и ранжирования товаров, скажем, для списка популярных товаров, но по разным причинам - использование прямого ранжирования будет неравномерно благоприятствовать пожилымпродуктов, поскольку у них будет больше времени, чтобы набрать более высокий балл.
Мой вопрос заключается в том, как нормализовать баллы между новыми и старыми продуктами.Я думал о том, чтобы разделить оценку продуктов на единицу времени, скажем, количество дней, в течение которых они существовали, но я беспокоюсь, что слишком сильно урежет старые продукты.Есть какие-нибудь мысли о том, как лучше нормализовать оценки между старыми и новыми продуктами?
Я также рассматриваю пример байесовской рейтинговой системы, которую я нашел в другом вопросе:
rating = ((avg_num_votes * avg_rating) + (product_num_votes * product_rating)) / (avg_num_votes + product_num_votes)
Где avg
числа рассчитываются путем просмотра баллов по всем продуктам, которые имеют более одного vote
(или в нашем случае, положительный action
).Это может быть не лучшим способом, потому что у нас нет отрицательного рейтинга в нашей системе, и это вообще не учитывает время.