1 по сравнению с 1 голосованием: вычислите оценки (Flickchart.com)

Java (завершают содержание X.java):

class X {
public static void main(String[] args) {
    main(null);
}}

Рассмотрение всего синтаксического сахара, я задаюсь вопросом, может ли немного короче быть сделан в Java. Кто-либо?

РЕДАКТИРОВАНИЕ: ой, я отсутствовал уже существует почти идентичное отправленное решение.

РЕДАКТИРОВАНИЕ 2: я сказал бы, что этот - (мудрый символ) самое короткое

class X{public static void main(String[]a){main(null);}}

РЕДАКТИРОВАНИЕ 3: Благодаря Anders для указания на пустой указатель не оптимальный аргумент, таким образом, это короче, чтобы сделать:

class X{public static void main(String[]a){main(a);}}
15
задан Glorfindel 17 May 2019 в 19:03
поделиться

9 ответов

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

Обычно все фильмы начинаются с 0 побед / поражений, и каждый раз, когда они выигрывают, они получают определенное количество очков. Обычно у вас в среднем около 20 (но подойдет любое число), и победа над фильмом с таким же рейтингом, как и у вас, даст ровно эти 20. Победа над плохим фильмом может дать около 10 очков, а победа над лучшим фильмом может дать вам 30 очков. И наоборот, проигрывая хорошему фильму, вы теряете только 10 очков, но если проигрываете плохому фильму, вы теряете 30 очков.

Особенности алгоритма находятся в ссылке в википедии.

8
ответ дан 1 December 2019 в 04:00
поделиться

Или вы можете использовать вариант PageRank, см. prof. Классное описание Уилфа .

1
ответ дан 1 December 2019 в 04:00
поделиться

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

Вам нужна взвешенная оценка, также называемая байесовской оценкой.

Я думаю, что Лучшие 250 фильмов IMDB - это лучшая отправная точка для создания рейтингового сайта. Некоторые фильмы набирают 300 000+ голосов, а другие - менее 50 000. IMDB использует байесовскую оценку для сопоставления фильмов друг с другом без несправедливого взвешивания популярных фильмов. Алгоритм приведен внизу страницы:

взвешенный рейтинг (WR) = (v ÷ (v + m)) × R + (m ÷ (v + m)) × C где:

  • R = среднее значение по фильму (среднее) = (Рейтинг)
  • v = количество голосов за movie = (голосов)
  • m = минимум голосов требуется, чтобы попасть в ТОП 250 (сейчас 3000)
  • C = средний голос по всему отчету (в настоящее время 6.9)

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

Я не знаю, как IMDB выбрал 3000 в качестве минимального количества голосов. Они могли выбрать 1000 или 10000, и список был бы более или менее таким же. Может быть, они используют «среднее количество голосов после 6 недель кассовых сборов» или, может быть, они используют метод проб и ошибок.

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

Формула работает так хорошо, потому что она «подтягивает» оценки к среднему, поэтому рейтинги выше среднее немного уменьшено, рейтинги ниже среднего немного увеличены. Однако сила притяжения обратно пропорциональна количеству голосов, которыми обладает фильм. Таким образом, фильмы с небольшим количеством голосов более агрессивно тянутся к среднему, чем фильмы с большим количеством голосов. Вот две точки данных, чтобы продемонстрировать это свойство:

Rank  Movie            Votes            Avg Rating        Weighted Rating
----  -----            -----            ----------        ---------------
219   La Strada        15,000+          8.2               8.0
221   Pirates of the   210,000+         8.0               8.0
      Caribbean 2

Рейтинги обоих фильмов понижаются, но влияние на «Ла Страда» более драматично, поскольку у него меньше голосов и, следовательно, он не столь репрезентативен, как рейтинги для PotC.


Для В вашем конкретном случае у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:

Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)

Средний рейтинг - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.

Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.

Надеюсь, это поможет! Вот две точки данных, чтобы продемонстрировать это свойство:

Rank  Movie            Votes            Avg Rating        Weighted Rating
----  -----            -----            ----------        ---------------
219   La Strada        15,000+          8.2               8.0
221   Pirates of the   210,000+         8.0               8.0
      Caribbean 2

Рейтинги обоих фильмов понижаются, но влияние на «Ла Страда» более драматично, поскольку у него меньше голосов и, следовательно, он не столь репрезентативен, как рейтинги для PotC.


Для В вашем конкретном случае у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:

Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)

Средний рейтинг - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.

Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.

Надеюсь, это поможет! Вот две точки данных, чтобы продемонстрировать это свойство:

Rank  Movie            Votes            Avg Rating        Weighted Rating
----  -----            -----            ----------        ---------------
219   La Strada        15,000+          8.2               8.0
221   Pirates of the   210,000+         8.0               8.0
      Caribbean 2

Рейтинги обоих фильмов понижаются, но влияние на «Ла Страда» более драматично, поскольку у него меньше голосов и, следовательно, он не столь репрезентативен, как рейтинги для PotC.


Для В вашем конкретном случае у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:

Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)

Средний рейтинг - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.

Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.

Надеюсь, это поможет! у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:

Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)

Средняя оценка - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.

Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.

Надеюсь, это поможет! у вас есть два предмета в «драке». Вам, вероятно, следует оформить свою таблицу следующим образом:

Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)

Средняя оценка - FightsWon / FightsEngaged. Взвешенный рейтинг рассчитывается по приведенной выше формуле.

Когда пользователь выбирает победителя в бою, увеличьте поле FightsWon победившего элемента на 1, увеличьте поле FightsEngaged обоих элементов на 1.

Надеюсь, это поможет! - Джульетта

5
ответ дан 1 December 2019 в 04:00
поделиться

Что касается flickchart, я немного поигрался с ним, и я думаю, что система рейтингов довольно проста. Я предполагаю, что в псевдокоде это выглядит примерно так:

if rank(loser) == null and rank(winner) == null
    insert loser at position estimated from global rank
    insert winner at position estimated from global rank
else if rank(winner) == null or rank(winner) < rank(loser)
    then advance winner to loser's position and demote loser and all following by 1

Почему я так думаю? Во-первых, я полностью убежден, что их байесовские априорные значения не основаны на тщательном анализе моих предыдущих выборов. Кажется, они не могут догадаться, что, поскольку мне нравится «Возвращение джедая», мне нравится «Империя наносит ответный удар». Фактически, они не могут этого понять, потому что я видел Home Alone 2, что, возможно, я видел Home Alone 1. После сотен оценок выбор не возник.

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

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

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

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

2
ответ дан 1 December 2019 в 04:00
поделиться

I believe this kind of 1 vs. 1 scenario might be a type of conjoint analysis called Discrete Choice. I see these fairly often in web surveys for market research. The customer is generally asked to choose between two+ different sets of features that they would prefer the most. Unfortunately it is fairly complicated (for a non-statistics guy like myself) so you may have difficulty understanding it.

0
ответ дан 1 December 2019 в 04:00
поделиться

Для этого есть расширение, но у меня пока нет опыта использования:

http://ipython.scipy.org/ ipython / ipython / вложение / билет / 154 / ipy_autoreload.

-1
ответ дан 1 December 2019 в 04:00
поделиться

Подумав, лучшее решение для этого рейтинга фильмов выглядит следующим образом.

Требуемые данные:

  • Количество голосов, поданных за каждую пару фильмов.
    • А также отсортированная версия этих данных, сгруппированных по принципу radix sort
  • Сколько раз голосовали за каждый фильм в каждой паре фильмов.

Дополнительные данные:

  • Сколько раз каждый фильм был задействован в голосование для каждого пользователя

Как выбрать голос для пользователя:

  • Выберите голосование из отсортированного списка в самой низкой используемой группе системы счисления (случайным образом)
  • Необязательно: используйте статистику личного голосования пользователя, чтобы отфильтровать фильмы, за которые их просили проголосовать слишком много раз, возможно, переходя к более высоким сегментам системы счисления, если нет ничего подходящего.

Как рассчитать рейтинг фильма:

  • Начните оценку с 0
  • Просматривайте друг друга фильм в системе
    • Добавить голосов выигранных / голосов против этого фильма в счет
      • Если между этими двумя фильмами не проводилось голосование, добавьте вместо него 0,5 (это, конечно, при условии, что вы хотите, чтобы новые фильмы начинали как средние в рейтинге)

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

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

=== ЭТО ОРИГИНАЛЬНЫЙ ОТВЕТ ===

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

Во-первых, каждый выбор из двух фильмов для голосования одинаково вероятен, поэтому результаты каждого голосования можно просто сложить вместе за счет (экономит умножение на 1 / nC2 на все). И очевидно, что вероятность того, что кто-то проголосует за один конкретный фильм против другого конкретного фильма, составляет всего голосов за фильм / количество голосов .

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

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

=== ЧТО ДАЛЬШЕ НЕВЕРНО НЕПРАВИЛЬНО И В основном здесь ДЛЯ ИСТОРИИ КОНТЕКСТ ===

Этот метод подсчета очков основан на цепи Маркова вашей системы голосования, предполагая, что все возможные вопросы голосования были одинаково вероятными. [Это первое предложение неверно, потому что для получения значимых результатов все вопросы голосования должны иметь одинаковую вероятность в цепи Маркова] Конечно, это не так, и на самом деле это тоже можно исправить, поскольку вы знаете, насколько вероятен был каждый вопрос голосования, это просто количество голосов, которые были сделаны по этому вопросу! [Вероятность получить конкретный вопрос голосования на самом деле не имеет значения, поэтому это не помогает] Таким образом, с использованием того же графика, но с ребрами, взвешенными по результатам голосования ...

Вероятность получения каждого фильма с учетом того, что он был включен в голосование, равна вероятности получения каждого фильма и его нахождения в голосовании, деленной на вероятность он был включен в голосование. Получается голосов сумо (количество голосов) * количество голосов) / общее количество голосов , разделенное на общее количество голосов (количество голосов) / общее количество голосов . С большим количеством отказов получается голосов, соответствующих общему количеству голосов / количеству голосов, участвующих в этом фильме . Что действительно просто!

Вероятность получения каждого фильма при условии, что он был включен в голосование, равна вероятности получения каждого фильма и его участия в голосовании, деленной на вероятность, что он был включен в голосование. Получается, что получается общих голосов сумо ((голосов за фильм / количество голосов) * количество голосов) / общее количество голосов , разделенное на общее количество голосов (количество голосов) / общее количество голосов . С большим количеством отмен это дает голосов, соответствующих фильму, всего голосов / количеству голосов, участвующих в этом фильме . Что действительно просто!

Вероятность получить каждый фильм при условии, что он был включен в голосование, равна вероятности получения каждого фильма и его участия в голосовании, деленной на вероятность, что он был включен в голосование. Получается, что получается общих голосов сумо ((голосов за фильм / количество голосов) * количество голосов) / общее количество голосов , разделенное на общее количество голосов (количество голосов) / общее количество голосов . С большим количеством отмен это дает голосов, соответствующих фильму, всего голосов / количеству голосов, участвующих в этом фильме . Что действительно просто!

С большим количеством отмен это дает голосов, соответствующих фильму, всего голосов / количеству голосов, участвующих в этом фильме . Что действительно просто!

С большим количеством отказов получается голосов, соответствующих общему количеству голосов / количеству голосов, участвующих в этом фильме . Что действительно просто!

1
ответ дан 1 December 2019 в 04:00
поделиться

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

На данный момент я просто сортирую по <выигранных боёв> / <всего боев> , сначала самые высокие. Это отлично работает, если голосует только вы один или проголосовало много людей. В противном случае он может быстро стать неточным.

Одна из проблем заключается в том, как выбрать, какие два предмета должны сражаться. Одна вещь, которая, кажется, действительно работает хорошо (субъективно), - это позволить предмету, у которого меньше всего боевых действий, сражаться со случайным предметом. Это приводит к относительно равномерному количеству схваток за пункты (-> точность) ценой, возможно, скучной для избирателя (ов). Они часто будут сравнивать новейший предмет с чем-то еще, что довольно скучно. Чтобы облегчить это, вы можете выбрать n предметов с наименьшим количеством боев и выбрать один из них случайным образом в качестве первого соперника.

Вы упомянули, что хотите, чтобы победы над сильными противниками учитывались больше, чем против слабых. Как упоминалось в других сообщениях выше, рейтинговые системы, используемые для шахмат и т.п. (Elo, Glicko), могут работать. Лично мне хотелось бы использовать TrueSkill от Microsoft, так как он кажется наиболее точным, а также дает хороший способ выбрать два предмета, чтобы противопоставить их друг другу - те, которые имеют самую высокую вероятность ничьей, рассчитанную TrueSkill. Но, увы, моего математического понимания недостаточно, чтобы по-настоящему понять и реализовать детали системы, и в любом случае за нее могут взиматься лицензионные сборы ...

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

Помимо рейтинговых систем, вы также можете попробовать различные простые лестничные системы. Один пример:

  1. Произведите случайный выбор списка элементов, чтобы они были ранжированы от 1 до n.
  2. Выберите два элемента случайным образом и позвольте им сражаться
  3. Если победитель имеет рейтинг выше проигравшего: ничего не делать
  4. Если проигравший ставится выше победителя:
    • Если проигравший находится непосредственно над победителем: Поменяйте местами их
    • Иначе: Переместите победителя вверх по лестнице x % к проигравшему.
  5. Goto 2

Это относительно нестабилен вначале, но со временем должен улучшиться. Однако он никогда не перестает колебаться.

Надеюсь, что смогу хоть немного помочь.

2
ответ дан 1 December 2019 в 04:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: