Я не знаю, насколько масштабируем этот алгоритм, но я успешно реализовал его на нескольких сайтах, которые я разработал с рейтингом (адаптировано из Рейтинг IMDB ):
взвешенный рейтинг (WR) = (v / (v+m)) * R + (m / (v+m)) * C
Где:
- R = среднее значение для котенка (среднее) = (голосов / число проголосовавших)
- v = количество голосов за котенка = (голосов)
- m = минимальное количество голосов, необходимое для включения в Топ-100 (около 25 - безопасное число)
- C = средний голос по всем котятам = (сумма голосов) / (сумма всех проголосовавших)
Приведенный выше алгоритм работает для сайта в стиле войны с котятами, но его не адекватный алгоритм для "экспертной системы" или механизма рекомендаций.
Один подход - и я не могу гарантировать хороший - для механизма рекомендаций будет представлять различные варианты в матрице. Допустим, вы хотели выбрать юбку, вы можете представить различные свойства юбки следующим образом:
Fashionable Affordable Colorful Practical
Miniskirt 10 5 7 5
Cheer skirt 3 1 10 1
Grass skirt 2 7 2 1
Jean skirt 9 5 3 10
Теперь вы спрашиваете пользователя, какую одежду они хотят носить:
- [X] Что-нибудь модное?
- [] Что-нибудь доступное?
- [] Что-нибудь красочное?
- [X] Что-то практичное?
Введенные выше данные указывают на то, что пользователь ищет что-то модное и практичное, не заботясь о других свойствах, поэтому его достаточно легко обработать приведенными выше данными следующим образом:
Fashionable Practical Total
Jean skirt 9 10 19
Miniskirt 10 5 15
Cheer skirt 3 1 4
Grass skirt 2 1 3
Этот очень простой, но эффективный подход работает до тех пор, пока вы знаете свойства каждого объекта, который вы сравниваете.