Дизайн формулы оценки (концептуальный, а не кодирование)


Одним из элементов моего сайта является рейтинговая система. Я немного озадачен тем, как лучше всего настроить формулу, и я надеюсь, что кто-то с большими математическими способностями сможет мне помочь.

Пользователи загружают фотографии, которые оцениваются другими пользователями 1-10. Таким образом, рейтинг пользователей является средним значением этих баллов.

Достаточно просто. Тем не менее, я хочу добавить некоторую систему, которая вознаграждает пользователей за загрузку большего количества фотографий. ЧТОБЫ формула была средней по рейтингам + некоторая функция от количества картинок закачанный.

Примером может быть, Рейтинг = СРЕДНЕЕ значение + .05 * Количество

Эта формула была бы несколько справедливой для пользователей, которые загрузили 1-20 изображений... Однако, если пользователи загрузят 2000 фотографий, они обойдут всю систему рейтингов и автоматически получат оценку 10/10.

Итак, мои ограниченные знания математики после алгебры терпят неудачу. Какова была бы какая-то формула, которая дала бы желаемый эффект? Слово "журнал" продолжает вертеться у меня в голове, но я, честно говоря, не могу помните что-нибудь о том, почему...:)

Author: user187680, 2012-07-01

3 answers

Вы могли бы сделать что-то вроде:

Rating = Average + (\sum_{i=1}^numofuploads 1/i)*scalefactor

Хотя сумма растет до бесконечности - сумма растет очень медленно

Изменить:

Идея в основном такая же, как и в решении @maxhud, вы добавляете меньше баллов к своему рейтингу для каждой картинки, а для простоты говорите, что масштабирование равно 1/3, и сейчас я использую точную математику без плавающей точки

1 -> avg + (1/1)*.3 = avg + 1/3
2 -> avg + (1/1+1/2)/3 = avg + (3/2)/3) = avg + 1/2
3 -> avg + (3/2+1/3)/3 = avg + (10/6)/3 = avg + 10/18 = avg + 5/9 ~ avg + .55555
4 -> ...

Технически серия (1+1/2+1/3+ ...) уходит в бесконечность, но вам придется загрузить огромное количество фотографий, чтобы превысить 50 - так что вам лучше тщательно выбрать коэффициент масштабирования и немного подумать. Если вы хотите получить максимум очков, которые могут быть достигнуты с помощью загрузки, это НЕПРАВИЛЬНОЕ решение. Вам лучше выбрать что-то вроде

avg + scaling*(.9^n)

Где n - количество картинок. если бы вы могли загружать бесконечно много фотографий, у вас было бы

avg + scaling*(1/(1-.9)) = avg + 10*scaling

Для вашего рейтинга: который, как я уже отметил, намного лучше.

Ps: Я думаю, что @maxhud должен уйти

avg + numofpics*scale*(.9^numofpics)
      ^^^^^^^^^

Потому что после загрузки 10 фотографий вы перевесили свою функцию сокращения роста.

 3
Author: epsilonhalbe, 2012-07-01 20:32:33

Просто сделайте что-то вроде:

Среднее значение +нумофикс*масштаб*(.9^нумофикс)

Это заставит его делать это по мере того, как они загружают больше фотографий, они получают все меньше и меньше. Вы можете изменить 0,09 (скорость затухания) в зависимости от того, сколько изображений, как вы ожидаете, загрузит средний пользователь.

Это уравнение, используемое для распада периода полураспада

 4
Author: maxhud, 2012-07-01 20:16:46

Рассмотрите альтернативный подход - вы хотите вознаградить пользователей, увеличив плату за загрузку изображений, но, возможно, пользователь загружает много-много изображений, которые не оценены высоко. Хотите ли вы вознаградить их, если большинство их изображений плохие?? Рассмотрим stackoverflow в качестве примера - вы можете ответить на множество вопросов, но если они не будут сочтены "хорошими" остальной частью сообщества, ваша репутация не увеличится, независимо от того, сколько ответов вы предоставите.

Это возможно что это не так, как вы хотите это сделать, и вы хотите вознаграждать количество, а не качество, но если вы решите наоборот, вы можете попробовать что-то вроде

    UserRating = 10 * (AverageRating/10 + Scalefactor*((AverageRating/10)^2 * ImageUploadCount)))

Вы выбираете масштабный коэффициент таким, какой хотите, и, очевидно, ограничиваете рейтинг максимальными 10. Таким образом, вы вознаграждаете несколько загрузок изображений, но вы также вознаграждаете пользователей более качественными загрузками изображений. Подумайте, что кто-то автоматизирует загрузку изображений с помощью какого-либо веб-бота, и все изображения пользователи считают плохими - вы хотите вознаградить за это? Таким образом, вы можете вознаградить несколько загрузок, но к более качественным загрузкам относятся более благосклонно. Может быть, это не то, что вы ищете, но, возможно, стоит подумать - только вы можете решить....

 3
Author: mathematician1975, 2012-07-01 20:22:49