Корректировка голосов на основе разного количества избирателей - PullRequest
1 голос
/ 18 октября 2011

У меня есть система голосования от 1 до 5, и я пытаюсь найти лучший способ найти наиболее популярный предмет, за который проголосовали, принимая во внимание общее возможное количество поданных голосов.Чтобы получить общее количество голосов, я считаю «1» голосов как -3, «2» голосов как -2, «3» голосов как +1, «4» голосов как +2, «5» голосов как +3,таким образом, голосование «1» отменяет голосование «5» и наоборот.

Для этого примера, скажем, у нас есть 3 фильма, которые играют в 3 кинотеатрах разных размеров.

Фильм1: 800 мест / Фильм 2: 400 мест / Фильм 3: 180 мест

В некотором смысле, мы ограничиваем общее количество голосов на основе мест, поэтому я хотел бы найти способФильм в меньшем театре, чтобы автоматически не перегружаться фильмом в большом театре.Вполне вероятно, что в большем театре будет отдано больше голосов, что приведет к увеличению общего балла.


Редактировать 10/18:

Хорошо, надеюсь, я смогу объяснить это лучше.Я работаю на кинофестивале, и мы проводим первые показы каждого фильма в фестивале.Таким образом, каждый фильм будет иметь от 0 до максимального количества голосов в зависимости от размера каждого театра.Я ищу, чтобы найти самый популярный фильм в 3 категориях: рассказ, документальный фильм, короткометражный фильм.Под популярностью я подразумеваю комбинацию самого высокого среднего голоса и количества голосов.

Кажется, что я ищу средневзвешенное значение, придавая меньший вес голосам из большого театра и больший вес голосам отменьший театр, чтобы выровнять вещи.

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

Вы работаете с средневзвешенными значениями .

Вместо сложения и деления на общее количество элементов (среднее арифметическое):

 a + b + c
 ---------
     3

Вы добавляете веса к каждому элементу, поскольку они не распределены равномерно:

 w1*a + w2*b + w3*c
 ------------------
         3

В вашем случае вес может быть таким:

# of people in current theater
--------------------------------
# of people in all the theaters

Давайте попробуем тестовый пример:

Theater 1: 100 people       (rating: 1)
Theater 2: 1,000,000 people (rating: 5)

Average = (100 / (100 + 1000000)) * 1 + (1000000/(100 + 1000000)) * 5
          -----------------------------------------------------------
                                      2
        = 2.49980002
1 голос
/ 18 октября 2011

Ну, в зависимости от ваших целей звучит так, как будто вас интересует какое-то средневзвешенное значение.

Продолжая ваш пример фильма, мне кажется, что вы пытаетесь оценить, насколько «хороши» фильмы,Чтобы сделать это, вы не хотите слишком сильно учитывать количество просмотров любого конкретного фильма в окончательном определении.Однако вы должны принять это во внимание, поскольку фильм, который был просмотрен только 5 раз и имел средний рейтинг +2,7, имеет гораздо меньший авторитет, чем фильм с 10 000 просмотров, получивший такой же рейтинг.

Вы можетепопробуйте просто не включать фильм в результаты, если только он не набрал минимальное количество голосов.

0 голосов
/ 18 октября 2011

При равномерном (четном) распределении голосов по {1,2,3,4,5} ожидаемый рейтинг вашего фильма составляет 0,2. Это потому, что голоса {1 и 5} отменяют друг друга, как и {2 и 4}. Но голосование 3 имеет ожидаемое значение 1/5 = 0,2. Поэтому, если люди с равной вероятностью дают рейтинг {1,2,3,4,5}, то можно ожидать, что фильм (независимо от того, сколько людей его увидит) имеет средний рейтинг, близкий к 0,2.

Так что я думаю, что лучшим вариантом для вас будет сложить все полученные баллы и просто поделить на количество людей, которые смотрели каждый фильм. Это должно быть хорошим предположением об отношении людей к фильму, поскольку среднее значение распределения не должно увеличиваться просто потому, что все больше людей смотрят фильм.

На вашем месте я бы также предложил добавить к вашему окончательному результату небольшой штрафной штраф, чтобы учесть тот факт, что некоторые люди даже не хотели идти смотреть фильм. Если многие люди не хотели смотреть фильм в первую очередь, но примерно 5 человек, которые его видели, дали ему оценку 5 *, что не делает его хорошим фильмом, не так ли?

Итак, окончательное решение, которое я бы порекомендовал: сложите все пункты, как вы описали, и разделите на общее количество людей, которые ходили в кино. Хотя он и не идеален (какими бы идеальными ни были средства), он должен дать вам некоторое представление о том, что людям нравится и не нравится. По сути, это означает, что люди, которые решили не смотреть фильм, добавляют ноль к общему количеству баллов, но все же влияют на среднее значение, потому что конечный результат делится на большее число.

...