Вы можете попробовать следующее. Упомянутое вами уравнение IMDB использует взвешивание, чтобы склониться либо к среднему рейтингу фильма, либо к среднему рейтингу всех фильмов:
WR = (v/(v+m)) × R + (m/(v+m)) × C
So
v << m => v/(v+m) -> 0; m/(v+m) -> 1 => WR -> C
и
v >> m => v/(v+m) -> 1; m/(v+m) -> 0 => WR -> R
Как правило, это должно быть справедливо. Подсчитать рейтинг популярности между 0 и 100 на основе количества игр довольно сложно, если вы действительно не знаете свои данные. В качестве первой попытки вычислите среднее количество воспроизведений avg (p) и дисперсию var (p), затем вы можете использовать их для масштабирования количества воспроизведений, используя метод отбеливания:
WHITE(P) = (p - avg(p))/var(p)
Это даст вам оценку от -1 до 1, если предположить, что ваши данные выглядят как кривая колокола. Затем вы можете масштабировать его в диапазоне от 0 до 100, снова масштабируя:
POP = 50 * (1 + WHITE(P))
Чтобы объединить оценку на основе некоторого весового коэффициента w (например, 0,75), вы просто должны сделать:
RATING = w x WR + (1 - w) x POP
Поиграй с ними и дай мне знать, как у тебя дела.
ПРИМЕЧАНИЕ: это не учитывает тот факт, что использование может «сыграть» популярность, купив трек много раз. Вы можете обойти это, оштрафовав несколько пьес одной песни:
deltaP = (1 - (Puser - 1) / TPuser)
Где:
- deltaP = Изменение в # воспроизведениях
- Puser = количество раз, когда этот пользователь играл этот трек
- TPuser = общее количество треков (не уникальных), проигранных пользователем
Таким образом, чем больше раз пользователь проигрывает только один трек, тем меньше он учитывается в общем количестве воспроизведений для этого трека. Если у пользователей разные привычки прослушивания, то TPuser будет большим, и, следовательно, deltaP будет стремиться к 1. Это все еще можно использовать, но это хорошее начало.