Корректировка голосов на основе разного количества избирателей

У меня есть система голосования от 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 ответа

Решение

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

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

 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

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

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

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

Учитывая равномерное (четное) распределение голосов по {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*, это не делает его хорошим фильмом, не так ли?

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

Другие вопросы по тегам