Мне нужно отсортировать некоторые продукты на основе оценок пользователей.
Предположим, у нас есть 3 продукта {a,b,c}, и у нас есть отзывы пользователей об этих продуктах. Неважно, какой пользователь оставил нам отзыв (этот вопрос не о корреляционной фильтрации, если вы знакомы с ней - интересы пользователей здесь не имеют значения)
Каждая из приведенных ниже строк представляет собой отзывы пользователей, когда они пытались сравнить 3 продукта:
a 150 баллов - b 0 баллов (этот пользователь только что сказал нам, что он думает о 2 продуктах a и b, и в сравнении a и b он подумал, что если он даст 150 баллов, тогда b стоит 0 баллов)
a 150 баллов – c 20 баллов
c 200 баллов - a 10 баллов (несмотря на предыдущий этот пользователь считает, что c лучше, чем a)
a 200 баллов - b 40 баллов - c 100 баллов
а 150 баллов - б 50 баллов
а 150 баллов - б 20 баллов
(Эти рейтинги являются лишь примером, и в реальном мире количество продуктов и рейтингов намного больше, чем это)
Теперь мне нужен алгоритм для определения рейтинга продукта на основе голосов пользователей. На мой взгляд, лучше всего описать эту проблему графом корреляции и соединить все продукты друг с другом.
Любая помощь или советы приветствуются.
/****************************************************** **********************************/
Вы не можете просто добавить очки и вычислить среднее значение очков продукта, потому что важно, как он получил свои очки. Предположим, что a набрал 800 очков против b, тогда c получит 10 очков против a следующим образом:
a 200 - b 0
a 200 - b 0
a 200 - b 0
a 200 - b 0
c 10 - a 0 (это означает, что c лучше, чем a)
так что определенно a лучше, чем b, но с небольшими 10 баллами c получил лучший рейтинг от a
/********************************************************************************/