Универсальный рейтинг или нам важен каждый голос

    Недавно передо мною встала задача сортировки фильмов по рейтингу. Каждый фильм имеет 2 значения — это средняя оценка и количество прогосовавших (точно так же, как на Кинопоиске и IMDB).

    Первая мысль, естественно, была о Топ-250 Кинопоиска с их формулой. Но уже при первом взгляде она показалась мне неидеальной — непонятный выбор порога входа и общая средняя оценка вводят в ступор, ведь уже при чуть-чуть измененных условиях (меньшем количестве оценок или голосов) она работает крайне плохо.

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

    Суть проблемы


    В теории — чем выше оценка, тем фильм интереснее и тем выше он должен выходить, но…
    Лучше всего ситуацию опишут примеры.

    Пример №1

    Фильм №1
    Количество проголосовавших — 2
    Средняя оценка — 10

    Фильм №2
    Количество проголосовавших — 100
    Средняя оценка — 7

    Да, фильм №1 клевый, но вряд ли кто-то захочет ориентироваться на мнение двух человек. Из этого следует, что вести расчет, исходя только из средней оценки — глупо, и в топе у нас всегда будут «фильмы на любителя».



    Малобюджетных фильмов огромное количество, и несложно догадаться, что у большинства из них оценки будут достаточно высокими (смотреть их будут уже заинтересованные зрители, готовые к низкому качеству и ищущие плюсы, а не минусы).

    Кинопоиск решил эту проблему введя порог голосов (M=500) и дав шансы малорекламируемым фильмам, приблизив их к средней оценке всех фильмов — чем ниже просмотров у фильма, тем на больший коэффициент поднимется его рейтинг.



    Где:

    V – количество голосов за фильм
    M – порог голосов, необходимый для участия в рейтинге Топ-250 (сейчас: 500)
    R – среднее арифметическое всех голосов за фильм
    С – среднее значение рейтинга всех фильмов (сейчас: 7.3837)

    Пример №2

    Теперь рассмотрим следующие 2 фильма и посчитаем их рейтинг по формуле Кинопоиска:

    Фильм №1

    V = 500 (количество голосов за фильм)
    M = 500 (порог голосов)
    R = 2 (средняя оценка фильма)
    C = 7.3837 (средняя оценка всех фильмов)

    Raiting = 500/(500+500) * 2 + 500/(500+500) * 7,3837 = 4,69185 (кстати формулу можно сразу вставить в калькулятор :-)

    Фильм №2

    V = 1000
    M = 500
    R = 3
    C = 7.3837

    Raiting = 1000/(1000+500) * 3 + 500/(1000+500) * 7,3837 = 4,4612

    Фильм с вдвое меньшим количеством голосов и меньшей оценкой получил бОльший рейтинг! Скорее всего, Кинопоиску выгоден такой подход — он стимулирует голосовать и, как следствие, в бесконечном будущем дает большую объективность.

    Но у меня не стояло задачи призывать пользователей к голосованию, и такой подход не подходил — ведь в каждой весовой категории в дискретный момент времени будет нечестная сортировка. Да и выбор порога неочевиден и субъективен.

    Итак, задача:
    Составить честный топ фильмов с учетом количества голосов и средней оценки за фильм не используя константных значений.

    Решение


    Ладно, давай рассказывай
    Долго подставляя цифры туда и обратно, мы (я и жена Катя) искали идеальную формулу, но везде натыкались на человеческий фактор. И правда, что считать важнее — количество голосов или рейтинг и как их коррелировать?

    В итоге, мы решили подойти к вопросу не с математической точки зрения, а с философской:
    1. Итак, люди больше голосуют за прорекламированный фильм, обычно это фильм с бОльшим бюджетом. Чем выше бюджет, тем выше техническое качество фильма.
    2. Да, в целом, оценка фильма понятие субъективное, но нас интересует Топ для всех и, следовательно, стоит ориентироваться на популярность (popular — общераспространенный, общепонятный).
    3. Чем больше голосов за фильм — тем объективнее мы считаем оценку.


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

    Для уравнивания этих двух значений — необходимо привести их к одной шкале. Максимальное количество голосов всегда разное, а вот рейтинг (о да!) от 1 до N. Для упрощения возьмем N=10. Следовательно, задача свелась к приведению количества голосов фильма к проценту от максимально возможного среди всех фильмов.

    Дальше я расскажу о реализации подхода на Mysql — так как математики задачу уже решили, а остальным, надеюсь, интересно пощупать готовенькое.

    Итак, создаем таблицу
    CREATE TABLE IF NOT EXISTS `films` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NOT NULL,
      `raiting` float NOT NULL,
      `count_votes` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    


    Добавляем 4 записи из примеров



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

    Если нет, то все очень просто. Если мы уже приняли равнозначность количества голосов и оценку и решили привести шкалу голосов к шкале от 1 до 10, то достаточно воспользоваться логарифмическим масштабом
    ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1

    Итак:

    select @a:=POW(max(count_votes), 1/10) from films;
    
    select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from films order by actual_raiting desc ;
    


    Мы получаем корень 10-й степени от максимального количества голосов для последующего подсчета логарифма. Так мы получаем долю количества голосов конкретного фильма от максимального, приведенного к 10. Складываем со средней оценкой и делим на 2 — так мы их коррелируем.

    Добро пожаловать к результатам:



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

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

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

    Комплимент от шеф-повара: рейтинг актеров

    Пришла пора объясниться за главную картинку статьи. Это рейтинг актеров.

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

    Итак, мы взяли максимальное количество фильмов у отдельного актера, подсчитали количество фильмов и их среднюю оценку для каждого актера и применили ту же формулу.

    Вот так стал выглядеть Топ актеров



    Для тех, кому интересно посмотреть на результат: http://vk.com/droptv

    Only registered users can participate in poll. Log in, please.

    Как вам картинка?

    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 85

      0
      Интересно было бы узнать реальные мотивы Кинопоиска в связи с их формулой.
        +3
        Хочу заметить, что у imdb очень сложная система вычисления рейтинга фильмов, и «36 users» на картинке выше вовсе не означает, что за фильм проголосовало всего 36 человек. Точно о их системе вряд ли кто-то скажет — конкретный метод подсчета они не раскрывают во избежание преднамеренных накруток числа голосов. А для того чтобы в топ не попадали «фильмы на любителя», для определения положения фильма в топ-250 учитываются голоса только «регулярных пользователей» («regular IMDb voters»). Критерии же, по которым пользователи попадают в категорию «регулярных», тоже не раскрываются по указанной выше причине.
          0
          Откуда информация, что 36 не означает 36, если не сложно — дайте ссылочку :-)
            0
            О количестве проголосовавших, которое указано на странице фильма, прямо ничего не говорится. Но по субъективным наблюдениям, это количество именно тех «regular IMDB voters». Почему я так думаю: а) когда я голосую за какой-то фильм, количество голосов не меняется, хотя я являюсь зарегистрированным пользователем, и б) количество голосов у некоторых довольно популярных фильмов до смешного мало, например у фильма "Слушатель" всего 133 голоса, а "Граница. Таежный роман" набрала 215 голосов.
              0
              Не мог у с вами полностью согласиться (хотя кто знает):

              1. вот Шоушенк www.imdb.com/title/tt0111161/?ref_=fn_al_tt_1
              2. а) Возможно просто кэш + вы говорите, что являетесь зарегистрированным пользователем, а разве это не значит, что именно ваш голос должен учитываться?
              3. б) IMDB все же мало ориентирован на русскую публику и у некоторых фильмов (и тем более сериалов) действительно низкое число голосов (это уже из собственной статистики). И если для топовых русских фильмов еще находятся голосующие на IMDB, то остальные остаются без внимания.
                +2
                Я являюсь зарегистрированным пользователем, но, скорее всего, не являюсь «regular IMDB voter». А о том, как попасть в число этих «регулярных избирателей» imdb не говорит намеренно (… we deliberately do not and will not disclose the criteria used for a person to be counted as a regular voter).
                Могу, конечно, и ошибаться. Сейчас нашел информацию, что количество проголосовавших обновляется раз в сутки. Но все равно, количество голосов у некоторых фильмов слишком мало (еще пример, "Железнодорожный романс" — 38 голосов).
                  0
                  Да, нет это не мало, сравните www.kinopoisk.ru/film/161075/. Всего 1487 — для Кинопоиска это очень мало.
          –2
          Малобюджетных фильмов огромное количество, и несложно догадаться, что у большинства из них оценки будут достаточно высокими (смотреть их будут уже заинтересованные зрители, готовые к низкому качеству и ищущие плюсы, а не минусы).

          Я не понял вашей логики. Заинтересованные зрители, готовые к низкому качеству, это вообще кто такие?
            +7
            Это люди, сознательно ищущие «неформат» или арт-хаус.

            Люди смотрят такие фильмы для поиска изюминки, авторской задумки — и естественно находят (в метафизике вообще все легко :-)
              +32
              Я думаю, заинтересованные зрители это как в анекдоте:

              Сидит дома композитор. Работы нет. Денег нет. Кризис… И тут — звонок. Звонит приятель — режиссёр:
              — Слушай, мне тут к фильму темка нужна на финальные титры. Сбацаешь что–нибудь простенькое? Премьера через 2 недели уже, погибаю, спасай!!!
              — Данивапрос! Расскажи только о чём фильм, чтобы я с музыкальной темой не промахнулся?
              — Да в нем вообще музыки нет! Тема только для титров нужна. Ну представь себе: с сухого дерева лист медленно зигзагом падает на мокрый асфальт, и как только долетает до земли — начинается твоя тема и титры.
              — Ок. Через неделю сделаю!
              И композитор начал с «голодухи» скреативил неимоверно красивую, дивную музыку — хоть сейчас на «Оскара». Ну и отправил режиссёру. Тот ответил, мол все ок, и пригласил на премьеру …
              Приходит композитор — зал пустой. Только на галёрке парочка пожилая сидит — обоим далеко за 80. Ну, думает композитор, ясное дело — драма нынче не в цене, никого кроме старичков не интересуют. Сел он, свет погас и началось…
              На фоне природы мужик самозабвенно ебёт тёлку с огромными, как баскетбольные шары, сиськами. Дальше — больше, еще парочка подошла, поменялись… Потом ещё негры, калеки, карлики — уже вся эта кодла в экран не помещается! Потом вообще собака прибежала!!! Сначала собака всех отодрала, потом все собаку трахнули…
              И тут камера берёт крупный план, наезжает на сухое дерево, на лист, лист срывается и медленно падает зигзагом на землю, звучит неземная, дивная тема и идут титры. Зажигается свет…
              Композитор сидит в шоке, красный как помидор от стыда. Думает «Ну, сука, режиссёр, ну удружил! Что обо мне люди подумают!» Встает со своего места, с этими мыслями идет к выходу и тут замечает, что пожилая парочка, в предынфарктном состоянии сидит и на него смотрит… И он ничего лучшего не находит как сказать:
              «Музыка моя!»…
              А они, продолжая смотреть стеклянными глазами на пустой экран, отвечают: "… А собачка наша…"
                +3
                А вот вам еще анекдот. Поручик Ржевский, пытаясь вклиниться в разговор:
                — Кстати, о резине. Вчера поп с колокольни грохнулся — сам всмятку, а калоши — целые!
                  +1
                  Ваш тоже ничего
              +6
              И тут Леонардо без награды…
              • UFO just landed and posted this here
                  +3
                  www.kinopoisk.ru/name/24285/
                  32 фильма и все не ниже пятерки, а в основном 7, 8

                  Леон
                  Звездные войны: Эпизод 3 – Месть Ситхов
                  Звездные войны: Эпизод 1 – Скрытая угроза
                  Чёрный лебедь
                  «V» значит Вендетта

                  Может, конечно, просто затесалась в нужные фильмы :-)
                    0
                    Ну как бы она актриса :)
                  –2
                  Наша наука пошла бы вверх, если бы человек, изобретающий велосипед, мог привести адекватное обоснование того, почему этот велосипед будет ездить.
                    +2
                    Наука пошла бы вверх, если бы человек, называющий что-то велосипедом — аргументировал свое мнение. Лично я аргументировал все это в своей статье и достаточно подробно, а вы?
                      0
                      habrahabr.ru/company/surfingbird/blog/168611/ — вот тут аргументов побольше будет…
                        0
                        Потому что, вбив в гугл слова «сортировка» и «рейтинг», мы на первой же странице видим отличное решение.
                          +1
                          Решая задачу статистики вы даже не попытались обратиться к знаниям, которые люди выделили в отдельный раздел еще в 1746 году.

                          В статье вы проверили ваше решение на 2-х вариантах, а вы попытались построить сравнительные графики того, как будут себя вести кривые рейтинга в зависимости от изменения количества и уровня оценок?

                          Как на ваши оценки будут влиять оценки «хейтеров», которые будут занижать рейтинг?
                            0
                            Решая задачу статистики вы даже не попытались обратиться к знаниям, которые люди выделили в отдельный раздел еще в 1746 году.


                            То ссылки на статьи, то ссылки на года, вы можете по русски просто разговаривать?

                            В статье вы проверили ваше решение на 2-х вариантах, а вы попытались построить сравнительные графики того, как будут себя вести кривые рейтинга в зависимости от изменения количества и уровня оценок?


                            Во-первых, естественно я проводил исследования на большом количестве вариантов.
                            Во-вторых, если бы вы поняли, как именно я подсчитываю рейтинг — вы бы поняли, что абсолютно не имеет значение количество проведенных исследований, так как решение идеально для заданных условий (а именно равнозначности параметров).
                            Как на ваши оценки будут влиять оценки «хейтеров», которые будут занижать рейтинг?

                            Никак, у меня не стояло задачи подсчитывать голоса и верифицировать их. Только по уже имеющимся данным — сделать самый верный Топ.
                        0
                        Не туда
                          +4
                          На Хабре этот вопрос обсуждался примерно 100500 раз.
                          Вот гораздо более крутая статья: habrahabr.ru/post/150683/ habrahabr.ru/company/darudar/blog/143188/
                          Вот лекция ШАД, посвященная этой проблеме: shad.yandex.ru/lectures/machine_learning_2.xml

                          Лично я пользовался гораздо более простой и эффективной формулой, когда считал свой рейтинг авторов фантастических романов:

                          R = (SUM(vote) + X)/(COUNT(vote) + Y),

                          где X, Y подбираются исходя из специфики данных (у меня X = 10, Y = 2). Фактически это эквивалентно тому, что каждому элементу «подбрасывается» Y оценок со значением X/Y — в моём случае, всем авторам подбрасывается две «пятерки» (по десятибальной шкале) — что позволяет эффективно уравнивать элементы с большим и малым числом голосов.

                          Это вариант байесовской формулы, если что. Гораздо проще для понимания, тривиально выбирается SQL-запросом.
                            +1
                            В статье я привел аргументы и даже пример против такого подхода.
                              0
                              Против какого подхода?
                              Там по ссылкам очень крутой матан.
                            +9
                            Честно говоря вся суть статьи в том, что автор придумал некую формулу ( достаточно простую ) и дальше объявляет ее «честной». Почему она «честная», по каким таким критериям — не рассказывается. Как я понял автор хотел, чтобы чем больше народу проголосовало за какой-то фильм тем больше был рейтинг, чтобы убрать всякий артхаус или нишевые фильмы. Ну, придумал автор формулу. Я могу сходу предложить еще пяток формул ( причем более гладких ) с теми же свойствами, чем именно эта замечательная? Тем, что наиболее подходит под ощущения автора? Ну, я автора поздравляю. Лично мне формула кажется взятой с потолка.

                            Пример. Максимум голосов — 1 млн.
                            Какой-нибудь «Суперраскрученный но провалившийся блокбастер» посмотрели все, поставили в среднем 6.5 из 10.
                            Ваша оценка — 10 * 6.5 = 65
                            Другой, отличный фильм посмотрело лишь 16000 народу ( не считаю, что это мало ), поставило 9 из 10.
                            Ваша оценка 7 * 9 = 63

                            Автору кажется это логичным, лично мне — нет. У кинопоиска-то хотя бы есть грань с которой фильм начинает считаться «нормальным», это 500 голосов, а у вас увеличение числа проголосовавших ведет к постоянному ( и довольно резкому ) увеличению оценки. Более того, оценки за самый популярный фильм ( любые ) мистическим образом снижают оценки всем остальным. Замучаетесь пересчитывать.

                            P.S. Ну и рейтинг пишется rating а не raiting

                              0
                              Вот насчет формулы и возникает вопрос:
                              «Вы, наверное, уже догадались, что для высчитывания процента голосов нам понадобится функция max и логарифм»
                              Не догадался :) Можете пояснить, как была выведена формула и из каких соображений нужен логарифм?
                                –1
                                Извините, это школьная программа ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1

                                Но, ок, добавлю в статью.
                                  0
                                  Не извиняйтесь, я просто не понял вашу идею, а насчет логарифмической шкалы я кое-что слышал.
                                  Вероятно, я просто не вполне корректно задал вопрос. Из каких соображений выбрана именно она? Например, по основанию логарифма, равного 1000, числа, начиная с 500, имеют логарифмы, которые отличаются не очень значительно. Этого эффекта вы и добивались?
                                    0
                                    Эмм, вы привели явно неверный пример — при основании 1000, число максимальное голосов будет равно 1000 в 10 степени.

                                    Шкала выбрана из соображений равнозначности кол-ва голосов и средней оценки, как я и писал в статье. Тогда для всех фильмов кол-во голосов равномерно распределится от 1 до 10. Где 10 — максимальное число голосов.
                                      0
                                      Я вас не понял. Берем максимальное число голосов k = 1000 (у вас) и получаем от него корень десятой степени, или же, иными словами, 10001/10. Получаем, в случае с, к примеру, 500 голосами:
                                      log10001/10500 = 10 * log1000500, что приблизительно равно 9. В случае 900 голосов разница составляла бы всего около 0,8. В чем равномерность такого распределения?
                                        0
                                        В чем равномерность такого распределения?


                                        Это идеально равномерное распределение. И на таких значениях разница в 0.85 — очень существенна. К примеру

                                        500 голосов = 8,996566681120063
                                        900 голосов = 9,847475031464418

                                        оценки

                                        допустим для 500 это 7,5*8,996566681120063 = 67,4742501084004725
                                        для 900 это 7*9,847475031464418 = 68,932325220250926

                                        Т.е. каждая новая степень количества голосов (размер аудитории) для нас равна одному баллу оценки, вот и все.

                                          0
                                          Простите, но как-то не вяжется один балл оценки с существенной разницей. Не более того.
                                            +1
                                            Простите, но как-то не вяжется один балл оценки с существенной разницей. Не более того.

                                            Почему не вяжется?
                                            Например для Шоушенка, чтобы изменить один балл оценки — нужны тысячи проголосовавших вниз или вверх. Вот вам и существенная разница.
                                              +1
                                              О, теперь, наконец, понял вашу идею. Спасибо.
                                0
                                Честно говоря вся суть статьи в том, что автор придумал некую формулу ( достаточно простую ) и дальше объявляет ее «честной». Почему она «честная», по каким таким критериям — не рассказывается. Как я понял автор хотел, чтобы чем больше народу проголосовало за какой-то фильм тем больше был рейтинг, чтобы убрать всякий артхаус или нишевые фильмы. Ну, придумал автор формулу. Я могу сходу предложить еще пяток формул ( причем более гладких ) с теми же свойствами, чем именно эта замечательная? Тем, что наиболее подходит под ощущения автора? Ну, я автора поздравляю. Лично мне формула кажется взятой с потолка.


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

                                Пример. Максимум голосов — 1 млн.
                                Какой-нибудь «Суперраскрученный но провалившийся блокбастер» посмотрели все, поставили в среднем 6.5 из 10.
                                Ваша оценка — 10 * 6.5 = 65
                                Другой, отличный фильм посмотрело лишь 16000 народу ( не считаю, что это мало ), поставило 9 из 10.
                                Ваша оценка 7 * 9 = 63


                                Цель Топа — вывести популярные фильмы отсортированные по рейтингу. Я специально привел значение слова популярность в статье. То, что понравилось 1 млн и то, что понравилось 16000 нельзя сравнивать. И естественно для большинства — объективнее оценка будет у первого.

                                Автору кажется это логичным, лично мне — нет. У кинопоиска-то хотя бы есть грань с которой фильм начинает считаться «нормальным», это 500 голосов, а у вас увеличение числа проголосовавших ведет к постоянному ( и довольно резкому ) увеличению оценки. Более того, оценки за самый популярный фильм ( любые ) мистическим образом снижают оценки всем остальным. Замучаетесь пересчитывать.

                                Наоборот не резкому, а наиболее плавному и распределенному от 1 до 10, а у Кинопоиска все вертится вокруг его средней оценки. Т.е. гораздо меньший радиус.
                                Как раз таки у Кинопоиска зависимость от средней оценки, а не у меня.
                                  +8
                                  Нет, вы не описали почему эту формулу считаете лучшей. Все что вы написали выглядит как «мне вот эта формула нравится ля-ля-ля, я знаю логарифм ля-ля-ля». Вы просто-напросто не имеете понятия, что такое рейтинг. Я ничуть не сомневаюсь что для вашего небольшого сайта эта формула пойдет, просто не нужно пытаться пиарить это на весь рунет, как «гениальное» «универсальное» решение.
                                  Впрочем, я поверю в качество этого рейтинга если вы сможете нормально ответить на эти вопросы:
                                  1. Почему именно логарифм? Только не говорите, как вы написали уже кому-то что «логарифм идеально равномерная функция», не позорьтесь. Есть куча других функций, которые могут «равномерно» покрыть интервал большого размера. Просто честно признайтесь, что это единственное, что вам в голову пришло.
                                  2. Почему произведение двух величин? Почему не сумма, синус-произведение квадратов, почему они взяты именно с коэффициентами 1 или еще тысяча способов которые можно придумать? Скажете что произведение — это «идеальная функция»?
                                  3. Что характеризует ваш рейтинг? Например, на Кинопоиске рейтинг показывает среднюю оценку пользователей голосовавших за фильм, шахматный рейтинг ЭЛО для двух игроков — характеризует вероятность победы каждого из этих игроков, рейтинг игроков в го характеризует сколько нужно камней форы дать одному из них для наиболее упороной борьбы и т.д. Что означает, если величина рейтинга у одного фильма равна 65, а у другого фильма, скажем, 13?
                                  4. У только что вышедшего фильма величина рейтинга будет расти одновременно с количеством просмотревших его. Фильм что, начинает становиться лучше? В какой момент можно будет прекратить смотреть за ростом рейтинга и считать что его рейтинг уже хоть сколько-то близок к реальному ( что бы это ни значило)? Когда его просмотрят все, кто хотел? И кому нужна уже тогда эта оценка?
                                  Т.е. я правильно понимаю, что для подбора «что бы посмотреть» этот рейтинг не подходит категорически?
                                  Я правильно понимаю, что не так давно вышедшие фильмы не смогут попасть в ваш топ, пока их не просмотрят буквально все? Вы считаете это справедливо?
                                  5. По моему примеру вы пишете «То, что понравилось 1 млн и то, что понравилось 16000 нельзя сравнивать. »
                                  Вы невнимательно смотрели мой пример. 1 млну фильм не понравился. 1 млн считает, что фильм весьма средний, 6.5 — это очень низкая средняя оценка, это совершенно проходные фильмы.
                                  Т.е. в вашем рейтинге 1 млн считающих что фильм средний, поставят этот фильм выше чем тот, который 16 тысяч видевших считают шедевром. Также, 1 миллион, считающий что фильм — говно, все равно поставят его выше, чем фильм, которые видели 500 человек, и все остались совершенно восхищены и неравнодушны. В вашем рейтинге миллион оценок «говно» ставят фильм выше, чем 500 оценок «шедевр» и вы все равно считаете что ваш рейтинг хорош? Ну тогда, очевидно, переубеждать вас не имеет никакого смысла.

                                    –6
                                    1. Это необходимое и достаточное решение, больше мне в голову ничего не пришло, да и не нужно было.
                                    2. Произведение было ошибкой — это уже я написал ниже и исправил пост.
                                    3. Рейтинг характеризует оценку большинства людей вообще смотрящих любые фильмы. Так как мы не имеем классификации людей по группам, то считаем голоса всех людей равноценными. Если же человек не смотрел фильм — значит он ему не интересен и мы это учитываем.
                                    4. Я уже писал, что у меня не стоит задача проталкивать вверх малобюджетные фильмы. А для нашей системы фильм да, начинает становиться лучше — а что вы видите в этом такого? Мы можем считать его рейтинг наиболее объективным если его посмотрит максимальное количество людей вообще смотрящих фильмы.
                                    5. То, что вы считаете, что 6,5 это «говно» и начинаете плясать в рассуждениях с этой позиции — вы не правы. Вы просто в голове уменьшаете шкалу 1-10 до шкалы 5-10. В действительности же, 2 — это говно, а 6.5 — ничего нормальный. И с учетом того, что ваш шедевр не захотели смотреть 990к человек, а этот фильм посмотрели — он и должен быть выше.

                                    И это очень просто объясняется — просто поделите 1млн на 2, получается 500к человек поставили оценку 9, а 500к — 1.
                                    Фильм, понравившийся 500к человек и фильм понравившийся 16000 человек?

                                    В вашем рейтинге миллион оценок «говно» ставят фильм выше, чем 500 оценок «шедевр» и вы все равно считаете что ваш рейтинг хорош? Ну тогда, очевидно, переубеждать вас не имеет никакого смысла.

                                    Уберите слово «говно» и все встанет на свои места.
                                      0
                                      Все ясно. Желаю вам перечитать ваши комментарии через несколько лет.
                                        –3
                                        Почему как только заканчиваются аргументы — люди начинают притыкать года, метафизичные рассуждения (которых я типа не способен понять). Какова ценность ваших мыслей в вашей голове — если их способны понять только вы?
                                          +1
                                          Ну, я попытался вам объяснить. Написал достаточно много текста для этого. Вы вообще ничего не поняли. Чтобы до вас дошло пришлось бы разжевывать совсем тривиальные вещи, начиная с того, что такое вообще рейтинг. Я понял что не желаю тратить СЛИШКОМ много времени на то, чтобы объяснять незнакомцу тривиальные вещи. Потратил немного, задавая наводящие вопросы — вы не поняли. Ну и ладно, бог с вами. Вам тут куча других людей попытались объяснить — у них ничего тоже не вышло. Я не утверждаю, что вы безнадежны, просто в данный момент ваша, как вам кажется, гениальная идея, заслонила вам все и ничего остального вы не воспринимаете. Поэтому я предложил вам прочесть этот пост с этими же комментариями через два-три года.Вот и все.
                                            –1
                                            Эмм, как бы я ответил на весь ваш большой текст и все ваши аргументы, привел свои — этот формат называется дискуссией. Дискуссии бывают разные — с одинаковым уровнем знаний у людей и с разным.

                                            Даже если в теории предположить, что я чего то не знаю — то основной целью дискуссии все же является обмен знаниями и опытом с желанием придти к единственному верному выводу.
                                            И получается, что либо вы затеваете дискуссию, чтобы просто поспорить (без желания приходить к чему-то), либо ждете идеального собеседника (странно, учитывая выбор места).

                                            Вы вообще ничего не поняли.


                                            Что именно я не понял? Я ответил на все ваши пункты и объяснил все. То, что вы считаете 6,5 говном, а я (и математика) нет — никак не влияет на оценку моих знаний и способностей понимать.

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


                                            В комментариях всего один человек написал по существу вопроса — это lany (но и то он написал про математическую ошибку, а не логическую). Все остальные тупо кидали ссылки или заводили бессмысленную перепалку не приводя ни единого аргумента (просто пытаясь поставить меня в позицию защиты, а зачем она мне?).

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


                                            Вам кажется. Если я и погорячился в некоторых комментариях, то только из-за того, что приходилось отвечать на откровенный троллинг (яркий пример snikolenko). А так могу сказать что я нахожусь «в трезвом уме и твердой памяти» и абсолютно адекватно и объективно осознаю свои достижения и аргументы к ним.
                                –1
                                Уважаемые комментаторы, которые просто скидывают ссылки или пишут формулы без аргументирования.
                                До того, как изобрести свой подход — я прочитал все эти статьи и понял, что они не подходят мне по тем или иным причинам, которые подробно описал в статье. Поэтому прошу аргументировать плюсы и минусы ваших и моего подходов.
                                  +1
                                    +1
                                    Тут всё можно гораздо проще сделать, и вполне математически обоснованно: логично принимать за рейтинг нижнюю границу доверительного интервала этого рейтинга. Т.е. у вас «истинный рейтинг» неизвестен, а рейтинги пользователей – его оценки, реализации. Вы считаете доверительный интервал для среднего и ранжируете пессимистично. Если оценок много, дисперсия будет маленькой, и доверительный интервал будет узким; если мало – широким.
                                      0
                                      Тут всё можно гораздо проще сделать, и вполне математически обоснованно: логично принимать за рейтинг нижнюю границу доверительного интервала этого рейтинга. Т.е. у вас «истинный рейтинг» неизвестен, а рейтинги пользователей – его оценки, реализации. Вы считаете доверительный интервал для среднего и ранжируете пессимистично. Если оценок много, дисперсия будет маленькой, и доверительный интервал будет узким; если мало – широким.


                                      Вы считаете у меня математически не обоснованно, а у вас проще?
                                        0
                                        Про обоснованность – отсылка к этой фразе:
                                        мы решили подойти к вопросу не с математической точки зрения, а с философской
                                        Про простоту – да, проще, потому что сразу интуитивно ясно, что эта модель значит и какие крутить параметры, если вдруг понадобится.
                                          –1
                                          Еще раз призываю вас аргументировать свое мнение и, желательно, с примерами, как я.

                                          Про обоснованность – отсылка к этой фразе:


                                          Поверьте, другого подхода, кроме общечеловеческого в теории субъективных оценок быть не может. Это категории из серии — что считать красивым.
                                            +2
                                            Что значит «аргументировать»? Это просто понятная вероятностная модель, её не «аргументируют», а сравнивают результаты по заданному критерию (который, наверное, вы должны сформулировать – что вы хотите получить?). Если нужно более подробное объяснение, про доверительные интервалы написано, например, здесь:
                                            www.evanmiller.org/how-not-to-sort-by-average-rating.html
                                            Можно ещё проще, просто сгладить по-байесовски — это первый ответ тут:
                                            stats.stackexchange.com/questions/15979/how-to-find-confidence-intervals-for-ratings
                                              –3
                                              Нет, я прошу привести аргументы — в чем проще ваш вариант и примеры (на оценках и голосах), где он будет работать лучше, а не кидаться ссылками. К примеру, в моем варианте ничего подкручивать никогда не надо — он полностью и всегда решает поставленную задачу (при условии, что мы не меняем принципиальное мнение относительно равнозначности). И даже если мы хотим изменить соотношение, достаточно заменить шкалу от 1 до 10 (для кол-ва голосов) на любую другую. Но для такого изменения должны быть не математические обоснования.
                                                +2
                                                Ну так вы сначала определите, что значит «лучше», а потом просите примеры.
                                                полностью и всегда решает поставленную задачу

                                                Отсюда я делаю вывод, что задача вами всё-таки была поставлена. Третий раз спрашиваю, как – т.е. какую функцию от получающегося списка вы оптимизируете? Без этого единственный «аргумент» у меня в том, что моё предложение интуитивно гораздо понятнее и привычнее; с этого я и начал.
                                                  –3
                                                  Ну так вы сначала определите, что значит «лучше», а потом просите примеры.


                                                  Вот именно, что я определил, что значит лучше (с субъективной точки зрения) и дал идеальное математическое решение к этому лучше. Первая часть и явилась задачей для второй.

                                                  Отсюда я делаю вывод, что задача вами всё-таки была поставлена. Третий раз спрашиваю, как – т.е. какую функцию от получающегося списка вы оптимизируете. Без этого единственный «аргумент» у меня в том, что моё предложение интуитивно гораздо понятнее и привычнее.

                                                  Т.е. аргумент, на мой вопрос «Почему ваше предложение проще» — это «Мое предложение интуитивно гораздо понятнее и привычнее»?
                                                    +2
                                                    определил, что значит лучше (с субъективной точки зрения) и дал идеальное математическое решение к этому лучше
                                                    Этот текст внутренне противоречив.
                                                    «Почему ваше предложение проще» — это «Мое предложение интуитивно гораздо понятнее и привычнее»?
                                                    Ну да, а что ещё может значить «проще»? «Проще» может быть или для понимания/модификаций, или для реализации, но реализация в этой задаче у любого подхода будет совершенно тривиальной.
                                                      –4
                                                      Этот текст внутренне противоречив.


                                                      Не знаю, где вы видите противоречия. Есть условия задачи (посчитать рейтинг при условии равнозначности параметров) и есть математическое решение — логарифмическая шкала, в чем у вас проблемы?

                                                      Ну да, а что ещё может значить «проще»? «Проще» может быть или для понимания/модификаций, или для реализации, но реализация в этой задаче у любого подхода будет совершенно тривиальной.


                                                      Ну тогда я открою вам секрет — понятнее и привычнее исключительно субъективные категории. Мне вот не понятнее и не привычнее.
                                                        +1
                                                        Есть условия задачи (посчитать рейтинг при условии равнозначности параметров) и есть математическое решение — логарифмическая шкала, в чем у вас проблемы?
                                                        Во-первых, прекращайте хамить. Во-вторых, чтобы могло существовать «идеальное математическое решение», необходима формальная постановка задачи, а это противоречит словам «с субъективной точки зрения»; собственно, задачу вы во всей этой ветке так и не сформулировали.
                                                        Ну тогда я открою вам секрет — понятнее и привычнее исключительно субъективные категории.
                                                        Опять хамите – зачем? Да, «проще» – это субъективная категория.
                                                          –3
                                                          Во-первых, прекращайте хамить. Во-вторых, чтобы могло существовать «идеальное математическое решение», необходима формальная постановка задачи, а это противоречит словам «с субъективной точки зрения»; собственно, задачу вы во всей этой ветке так и не сформулировали.


                                                          Я 7 раз сформулировал задачу и так и не понял в чем у вас проблемы с ее пониманием о чем и спросил.

                                                          Опять хамите – зачем? Да, «проще» – это субъективная категория.


                                                          Тогда не выставляйте ее, как правильную или лучшую.
                                                            +1
                                                            Вы её ни разу не сформулировали. В вашей задаче на входе множество рейтингов, на выходе ранжированный список. Как вы сравниваете два таких списка, порождённых разными моделями?

                                                            Я её с самого начала выставлял как более простую. Как «правильную» я что-то начну выставлять не раньше, чем появится формулировка задачи.
                                                              –3
                                                              Вы её ни разу не сформулировали. В вашей задаче на входе множество рейтингов, на выходе ранжированный список. Как вы сравниваете два таких списка, порождённых разными моделями?


                                                              8 раз открываю для вас понятие логарифмическая шкала — которое создано именно для сравнения значений с разными диапазонами.
                                                                +3
                                                                У меня постепенно создаётся ощущение, что этот разговор бесполезен. Надеюсь, что он будет полезен для сторонних читателей.

                                                                На всякий случай попробую последний раз: «логарифмическая шкала» – это один из возможных методов решения. Я же пока пытаюсь выпытать у вас формулировку самой задачи. Если совсем грубо: есть модель А и модель B, обе породили какие-то ранжированные списки. Каков критерий того, какой из них лучше? В этом и будет математическая постановка задачи.
                                                                  –3
                                                                  У меня постепенно создаётся ощущение, что этот разговор бесполезен. Надеюсь, что он будет полезен для сторонних читателей.


                                                                  Да, ведь вы затеяли его для троллинга, чего и добиваетесь усердно) Так что думаю прощайте)
                                                                    +4
                                                                    Крутой вывод. :) Советую вернуться к этому диалогу сильно позже (через месяцы), если не потеряется.
                                        0
                                        Это уже запатентовано: en.wikipedia.org/wiki/TrueSkill
                                      0
                                      не туда
                                        +5
                                        select @a:=POW(max(count_votes), 1/10) from films;

                                        select id,name,raiting, count_votes, (LOG(@a,count_votes))*raiting as actual_raiting from films order by actual_raiting desc ;
                                        Не оспаривая качество формулы в целом, хотелось бы посмотреть на вашу формулу с математической точки зрения. Вы вычисляете «реальный рейтинг» так:
                                        ,
                                        где R — рейтинг,
                                        R* — реальный рейтинг,
                                        N — максимальная оценка,
                                        v — количество голосов,
                                        vmax — максимальное количество голосов.
                                        Как видите, простыми преобразованиями из школьной программы можно избавиться от корня. Кроме того, раз N — величина постоянная, её можно вообще убрать из результата. Все «реальные рейтинги» просто станут в N раз меньше, на сортировку ответов это не повлияет. Так что по сути ваша формула такая:

                                        При всём уважении не могу поверить, что нормировка рейтинга на логарифм числа голосов — это нечто абсолютно новое.
                                          –7
                                          Как видите, простыми преобразованиями из школьной программы можно избавиться от корня. Кроме того, раз N — величина постоянная, её можно вообще убрать из результата. Все «реальные рейтинги» просто станут в N раз меньше, на сортировку ответов это не повлияет. Так что по сути ваша формула такая:


                                          Что-то не понимаю чем ваша конечная формула проще моей. Избавиться от единожды вычисляемого корня в пользу 2 логарифмов для каждой записи?

                                          Нет, убирать N нельзя — это бред. Вся идея приравнять значимость начального рейтинга к кол-ву голосов, а не просто отсортировать по кол-ву голосов.

                                          При всём уважении не могу поверить, что нормировка рейтинга на логарифм числа голосов — это нечто абсолютно новое.


                                          Вопросы веры думаю лучше обсуждать в церкви или мечети.
                                            +3
                                            Что-то не понимаю чем ваша конечная формула проще моей. Избавиться от единожды вычисляемого корня в пользу 2 логарифмов для каждой записи?
                                            Проще тем, что показывает, что вы реально делаете, если не заниматься обфускацией. А два логарифма вам никто не мешает вычислять, но логарифм в знаменателе будет всегда одинаковым, поэтому я бы его вычислять для каждой записи не стал. А если вы озадачены производительностью, вот вам бонус из документации к MySQL:
                                            LOG(B,X) is equivalent to LOG(X) / LOG(B).

                                            Так что как раз в вашей формуле два логарифма, только вы их не заметили :-)

                                            Нет, убирать N нельзя — это бред. Вся идея приравнять значимость начального рейтинга к кол-ву голосов, а не просто отсортировать по кол-ву голосов.
                                            Либо вы не дочитали моё сообщение, либо я вас не понимаю. На всякий случай повторю, N — это максимальная оценка, в ваших примерах просто 10.
                                              –8
                                              Проще тем, что показывает, что вы реально делаете, если не заниматься обфускацией.


                                              Кому показывает? В 6 классе люди проходят логарифмическую линейку — я думаю, если человек не может справиться с нею, то ваши 2 деленных друг на друга логарифма просто введут его в ступор.

                                              Так что как раз в вашей формуле два логарифма, только вы их не заметили :-)


                                              Так в чем цель-то вашего поста, кроме троллинга?

                                              Либо вы не дочитали моё сообщение, либо я вас не понимаю. На всякий случай повторю, N — это максимальная оценка, в ваших примерах просто 10.

                                              Либо вы не дочитали мое сообщение, либо вы его не читали вовсе. На всякий случай повторю N взято не с потолка, а именно потому что начальный рейтинг расположен на шкале от 1 до 10
                                                +1
                                                Да, извините, вы правы, так как я написал и правда N не имеет значения. Я просто неправильно приводил их друг к другу — нужно сложить и поделить на 2, тогда N будет иметь значение (а это должно быть так).
                                            0
                                            не туда
                                              +1
                                              По мне так условия задачи стоят не корректно: «Составить честный топ фильмов с учетом количества голосов и средней оценки за фильм не используя константных значений.» Что значит «честно» с математической точки зрения? Да и вообще что это значит?
                                              Если мы говорим про топ фильмов для «среднего» зрителя, то надо определить что такое «средний» зритель, в этом случае самым «честным» будет являться подход IMDB, когда из голосовавших строится «средняя» выборка и только она участвует в формировании рейтинга. То что автор произвел какие то манипуляции с цифрами и что-то получил, еще не говорит о верности результата.
                                                –3
                                                По мне так условия задачи стоят не корректно: «Составить честный топ фильмов с учетом количества голосов и средней оценки за фильм не используя константных значений.» Что значит «честно» с математической точки зрения? Да и вообще что это значит?
                                                Если мы говорим про топ фильмов для «среднего» зрителя, то надо определить что такое «средний» зритель, в этом случае самым «честным» будет являться подход IMDB, когда из голосовавших строится «средняя» выборка и только она участвует в формировании рейтинга. То что автор произвел какие то манипуляции с цифрами и что-то получил, еще не говорит о верности результата.


                                                Я объяснил, что считаю честным. И говорил не про среднего зрителя, а про популярность.
                                                  0
                                                  Я объяснил, что считаю честным. И говорил не про среднего зрителя, а про популярность.
                                                  Опять же, популярность среди кого? Думаю те два любителя артхауса, что проголосовали за один фильм не согласятся с результатами топа, т.е. они не являются целевой аудиторий топа и их голоса не могут считаться репрезентативными, однако они учитываются.
                                                    0
                                                    Да, но популярность определяется как раз таки большинством членов общества — само понятие об это и говорит. Популярное — то, что нравится большинству.
                                                      0
                                                      «популярность определяется как раз таки большинством членов общества» — у вас популярность фильма определяют два человека которые не относятся к большинству, не находите противоречий?
                                                        0
                                                        «популярность определяется как раз таки большинством членов общества» — у вас популярность фильма определяют два человека которые не относятся к большинству, не находите противоречий?


                                                        Поэтому относительно популярных фильмов — этот будет выходить гораздо ниже (хоть и с высокой оценкой). Где вы видите противоречие?
                                                +1
                                                Исправил статью, теперь формула верная, спасибо lany.
                                                  0
                                                  Цитата с www.imdb.com/chart/top

                                                  The formula for calculating the Top Rated 250 Titles gives a true Bayesian estimate:

                                                  weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C
                                                  where:
                                                  R = average for the movie (mean) = (Rating)
                                                  v = number of votes for the movie = (votes)
                                                  m = minimum votes required to be listed in the Top 250 (currently 25000)
                                                  C = the mean vote across the whole report (currently 7.1)

                                                  for the Top 250, only votes from regular voters are considered.

                                                  ad feedback
                                                    0
                                                    Это-то понятно
                                                    0
                                                    Может быть, как программист я могу с вами быть отчасти солидарным, но как киноман — вас следует высечь розгами. Скажите, где этот рейтинг будет использоваться, чтоб я сберег свои нервы не заходя туда.
                                                      0
                                                      Может быть, как программист я могу с вами быть отчасти солидарным, но как киноман — вас следует высечь розгами. Скажите, где этот рейтинг будет использоваться, чтоб я сберег свои нервы не заходя туда.

                                                      Сильные у вас аргументы)
                                                        0
                                                        Скажите, какое место в вашем рейтинге занимают, например, трансформеры?
                                                        +3
                                                        А причем здесь спортивное программирование?

                                                        Only users with full accounts can post comments. Log in, please.