Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

4    1    #1
04.02.2019 15:07

qwerty
Участник (+243, -117)
Зарегистрирован: 21.12.2005
Сообщений: 206
Вебсайт

Новые методы голосования на КРИЛ

Надеюсь, в будущих КРИЛах применяться будет метод Шульце, то есть, голосующие будут присылать список игр от наиболее понравившейся к наименее понравившейся. Сейчас, если игрок ставит одной игре 10, а четырём другим 1, то он поднимает одну игру над всеми играми вообще и опускает 4 другие ниже всех игр вообще. Если же игрок оценит 5 игр согласно методу Шульце, то он просто даст знать, какую из оцененных игр он ценит выше других оцененных им игр. И это уравнивает голоса игроков с разной шкалой: допустим, один оценил игры КРИЛа в диапазоне 1..6, другой - в 3...8, третий - в 5..10. Выяснять "абсолютную оценку" в такой ситуации бессмысленно- разные люди ставят X баллов за совершенно разное. Но метод Шульце выявляет главное: какая игра оказалась предпочтительнее других.

Неактивен

1    0    #2
08.02.2019 12:06

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

qwerty написал:

Надеюсь, в будущих КРИЛах применяться будет метод Шульце, то есть, голосующие будут присылать список игр от наиболее понравившейся к наименее понравившейся. Сейчас, если игрок ставит одной игре 10, а четырём другим 1, то он поднимает одну игру над всеми играми вообще и опускает 4 другие ниже всех игр вообще. Если же игрок оценит 5 игр согласно методу Шульце, то он просто даст знать, какую из оцененных игр он ценит выше других оцененных им игр. И это уравнивает голоса игроков с разной шкалой: допустим, один оценил игры КРИЛа в диапазоне 1..6, другой - в 3...8, третий - в 5..10. Выяснять "абсолютную оценку" в такой ситуации бессмысленно- разные люди ставят X баллов за совершенно разное. Но метод Шульце выявляет главное: какая игра оказалась предпочтительнее других.

В общем, я немного заморочился и подключил метод Шульце к текущим оценкам, чтобы перед началом нового КРИЛ мы смогли проанализировать его применимость к нашему конкурсу и претендентам. Посмотреть можно тут: https://forum.ifiction.ru/kril2018schulze.php

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

Обратите внимание на выдержку из статьи из Википедии о методе Шульце:

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

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

А как ты ничьи разрешаешь, можешь показать исходник?

У меня всё то же самое (вроде бы), но когда ничьи, то от твоего порядок отличается:
https://docs.google.com/spreadsheets/d/ … 1184762425
(табы "остальные хуже" и "остальные не знаю")

Мой исходник можно открыть в меню Tools -> Script Editor.

Неактивен

1    1    #3
08.02.2019 12:22

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

crem написал:

У меня всё то же самое (вроде бы), но когда ничьи, то от твоего порядок отличается:

Нет не всё то же самое. Например, у меня фуга выше чашки супа, а у тебя нет (если "остальные хуже").
Короче, давай исходник.

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

Неактивен

3    4    #4
08.02.2019 20:02

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Ajenta написал:

Ну, предпочтение у нас одно - чтобы с накрутками и без, получался сходный вариант же, нет?

Предпочтение у нас в том, чтобы в момент голосования игроки знали, что их голос учтётся (кроме случаев, когда они в момент голосования знают, что они накрутчики и нарушители. В этом случае надо, чтобы они заранее знали, что их голос не учтётся).

Короче, надо чтобы было доверие к голосованию, как с точки зрения процедуры, так и с точки зрения результата.

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

Не стоит наверное публиковать данные, нарушающие privacy (email пользователя, ip адрес, даты из логов когда зарегался/скачал игру/проголосовал), но даже тут о большей части моего списка можно поспорить.

Игроки тоже хотят понимать, что происходит, а ещё лучше -- принимать участие в обсуждении, что с этим делать, и видеть конкретные данные. Иначе доверия нет, пусть даже на самом деле оно там внутри супермегасправедливое.


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


По такому принципу работают многие проекты, и очень успешно.
Например, на шахматном сайте lichess желающих почитерить очень много. Это даже целый бизнес, продаются специальные программы чтобы читерить на lichess!
И тем не менее, весь код по выявлению читеров открыт на github'е, и все могут посмотреть как это делается и придумать контрмеру. И пытаются! Но сообщество придумывает контр-контрмеру.
И это всё очень хорошо работает, читеров на lichess на порядки меньше, чем на каком-нибудь chess.com с их секретным методом.

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



И ещё (непопулярное мнение!):
НЕ важно, попадут ли в общий пул голосов или нет игроки, являющиеся накрутчиками ОБЪЕКТИВНО (например, с точки зрения очень объективного организатора).
Важнее, попадут ли в общий пул голосов или нет игроки, являющиеся накрутчиками С ТОЧКИ ЗРЕНИЯ ДРУГИХ ИГРОКОВ.
Тогда будет доверие к конкурсу, тогда люди будут приходить и участвовать.
Так что может организатор и знает лучше, кто накрутчик, но это не важно. Важно, чтобы остальные были согласны.

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

Мы вообще должны оптимизировать КРИЛ так чтобы участникам (в том числе и голосующим) нравилось, а не в сторону объективной справедливости присуждения первого места.

Отредактировано crem (08.02.2019 20:44)

Неактивен

0    0    #5
09.02.2019 01:58

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

4. Для построения финального рейтинга я сравниваю силу пути игр попарно и записываю +1 в победы той, у кого сила больше. По количеству побед и сортирую.

А что если в обе стороны равный вес дуг? Я в этом случае записываю +0.5.
(точнее, я записываю 1 если больше, -1 если меньше, и 0 если равное значение, но это то же самое что если записывать 1 если больше, и 0.5 если ничья).

Неактивен

0    0    #6
09.02.2019 13:31

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

crem написал:

Olegus t.Gl. написал:

4. Для построения финального рейтинга я сравниваю силу пути игр попарно и записываю +1 в победы той, у кого сила больше. По количеству побед и сортирую.

А что если в обе стороны равный вес дуг? Я в этом случае записываю +0.5.
(точнее, я записываю 1 если больше, -1 если меньше, и 0 если равное значение, но это то же самое что если записывать 1 если больше, и 0.5 если ничья).

Для построения финального рейтинга обрабатывается таблица сил сильнейших путей. Там нет значений дуг, там значения сил сильнейших путей.
Веса дуг используются на предыдущем шаге, хранятся в таблице "Число голосующих, предпочитающих одну игру другой" и означают, соответственно, "количество голосующих, отдавших предпочтение той или иной игре".
Так вот, если значения сил путей двух игр равны, то это ничья. "Ничья — результат в матче или партии, при котором победитель игры или состязания не выявлен", поэтому записывать обеим играм победы в данном случае сложно для восприятия со стороны и объяснения. Это вмешательство в логику метода, а это на данном этапе неправильно (так мы к единым результатам не придём никогда).

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

Например, сейчас в рейтинге по методу Шульце у игр "Паладин" и "Star Wars: Турнир Юнлингов" ничья.

1. Сравниваем их друг с другом. Тут всё, в принципе, просто: "П" оценили выше "SW" 16 против 15. В этой ситуации данных достаточно, чтобы построить локальный рейтинг внутри этой группы ничьих.

Смотрим вторую группу: "Золотарский хомяк" и "КрШа: Новая история со старыми персонажами".

1. Вариант сравнения друг с другом не годится — у них равное число голосующих, 11.

2. Смотрим на игру "Павший во мраке - Иные", стоящую выше по рейтингу. Сравним, "Х" и "К" с "Павшим".

"К" проигрывает "Павшему" 6 против 17 голосующих, а "Х" проигрывает "Павшему" — 7 против 22.

И вот тут вступаем в область "высшей математики". Что лучше +6/-17 или +7/-22? От этого зависит, как строить рейтинг в этой группе ничьих. И вот тут уже можно рассмотреть вариант, с исключением нулевых оценок, чтобы оценивать по реальным голосам и смотреть уже на эти результаты.

Как-то так.

P.S. Кстати, у "SW" и "Супа" ещё и ничья по голосам, то есть как раз по весам дуг, а это влияет на переходы. Но это отдельная тема.

Не понимаю, объясни например почему у тебя сильнейший путь из Фуги в Чашку супа 14?
У меня 17:
Фуга. Чёрный странник. -> (20) -> Ты всё равно победишь! -> (17) -> Star Wars: Турнир Юнлингов -> (18) -> Ради чашки супа

(по поводу ничьих в пол-очка это у меня воспоминания из предыдущего метода, сейчас действительно никакой ничьи в пол-очка нету)

Отредактировано crem (09.02.2019 13:33)

Неактивен

2    0    #7
09.02.2019 14:37

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

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

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

Но как определять, какое из звеньев сильнее, методом Шульце не задано, заданы только алгебраические свойства этого сравнения.
4 примера метода сравнения перечилены на стр. 12 этой статьи Шульце от 15 декабря 2018:
https://arxiv.org/pdf/1804.02973.pdf

Методы такие:
1. По разнице прямых и обратных голосов.
2. По отношению прямых и обратных голосов.
3. По превосходству выигрыша:
Если A>B и C>D, то AB сравнивается с CD по весу выигрывающей дуги.
Если A>B и C<D (и наоборот), то значения дуг не смотрятся, выигрывающая дуга сильнее.
Если A<B и C<D, то сравниваются значения выигрывающих (обратных) дуг.
4. По превосходству проигрыша.
То же самое, но сравниваются значения проигрывающих дуг.

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

С первого взгляда метод, описанный в википедии, и который вроде бы ты реализовал, -- это очень хорошее приближение метода 3 из списка:
Если веса дуг (a; b) и a > b, то о значении обратной дуги b почти всегда можно забыть, но не всегда.
Когда надо не забывать:
Когда сравниваем (a;b) и (c;d), a>b, c>d и a=c, тогда сравниваются b и d.
Дуга (a; b) где a==b -- это лучше чем (c;d) где c<d, но хуже чем c>d, независимо от значений c и d (но вроде бы тут не всё так просто)..


У меня не так, я просто сравниваю значения прямых дуг (не важно, выигранные они или проигранные).
У меня получается, что (10;18) (10 за, 18 против) сильнее чем (9; 3) (9 за, 3 против).
Да, у меня неправильно. Перепишу метод с 4 предложенными способами оценок из статьи.


Возвращаясь к списку методов, мне кажется, что первые два -- самые логичные.
В методе 3 получается что 100 голосов за то что А лучше Б и 99 против -- это то же самое что 100 за и 0 против.
Что лучше, метод 1 или 2 -- это вопрос.
В первом 100 за, 90 против -- это лучше, чем 20 за, 15 против,
а во втором -- наоборот.

Тут анализ отличий метода 1 и метода 3: https://rangevoting.org/WinningVotes.html

Отредактировано crem (09.02.2019 16:17)

Неактивен

0    0    #8
09.02.2019 15:55

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

crem написал:

В процессе поиска сильнейшего пути надо найти самое слабое звено.

Уточню, чтобы не было недопонимания этого пункта. Нужно найти не самое слабое звено всех возможных путей, а самое слабое звено у сильнейшего пути. И поскольку сила пути определяется его слабейшим звеном, то из всех возможных путей нужно выбрать тот, у кого слабейшее звено БОЛЬШЕ, чем у остальных.

А можно поинтересоваться, для кого это уточнение? smile
Если это объяснение метода для остальных посетителей форума, ок.
Но мне просто оно прозвучало так, будто бы оно мне и Блинову. Но по-моему должно быть очевидно, что если мы уже написали свои реализации алгоритма, то основы нам понятны.

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


Другое дело, что для оценки превосходства звена иногда можно на самом деле хранить одно число. В примерах это делается так:
Пример 1. Хранить разность (в противоположном направлении будет противоположное число)
Пример 2. Хранить отношение (в противоположном направлении будет обратное число).
Пример 3. Хранить только дугу с бОльшей силой. (то, что ты сейчас делаешь)
  Значение обратной дуги нужно только для разрешения ситуаций когда прямая==обратной или прямая одного звена равно прямой другого звена, а их надо сравнить.
  Обычно этот случай можно проигнорировать, так как если голосов гораздо больше, чем кандидатов, то такие ситуации маловероятны.
  Но в нашем примере такое проходит на каждом шагу!

Неактивен

0    0    #9
09.02.2019 16:03

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Раз уж мы заговорили о широком спектре голосований методом Шульце, добавлю ещё несколько переменных.

Между "остальные хуже" (добавляется 1 к дуге) и "остальные не знаю" (добавляется 0), возможен широкий спектр вариантов (от 0 до 1).
То есть можно сделать, чтоб "остальные хуже" учитывалось, но было меньший вес, чем активные голоса. (например, вес 0.3)

Так же, не обязательно делать "остальные хуже" (то есть как будто остальным поставили 0).
Вместо этого, можно сделать например "остальным 2.5".
Чтобы можно было поиграть в игру и поставить оценку "это настолько плохая игра, что я думаю, что она хуже тех игр, которые я не открывал".

Неактивен

1    0    #10
09.02.2019 16:40

crem
Участник (+231, -82)
Зарегистрирован: 22.08.2016
Сообщений: 90

Re: Новые методы голосования на КРИЛ

Olegus t.Gl. написал:

Погоди, метод Шульце рассматривает не баллы, а места. Поэтому "остальные хуже" — это как раз нулевые баллы, чтобы гарантировано не смешивать их с теми, кому проставили 1 балл. В зачёт же идут не разницы между баллами, а больше они или меньше друг-друга. Наличие нуля в оценках указывает алгоритму, что эту пару можно сравнить. Если нуль отсутствует, то сравнивать тут нечего, тут нельзя определить кому отдать голос и всё такое.

Я имею в виду, что можно сделать так, чтоб можно было сказать не только "все игры, которые я оценил, лучше тех, которые нет", но и "вот эта игра настолько ужасна, что она даже хуже тех, которые я не видел".
Метод Шульце рассматривает взаимное отношение игр, но из-за того, что в прошедших КРИЛах мы ставили баллы (которые мы потом преобразовываем в список отношений хуже/лучше), так проще объяснять.

Не то что бы мне очень нравится это предложение ("остальным -- как будто 2.5"), но вот, что я имел в виду:
- Игроки ставят оценки от 1 до 10
- Мы преобразовываем оценки в отношения "лучше/хуже", как мы сейчас делаем упражняясь на КРИЛ-2018
- Игры, оцененные оценками 3, 4, 5,..., 9, 10  лучше неоцененных.
- Игры, оцененные оценками 1 и 2 хуже неоцененных.


Голосовалку можно сделать и другим образом, не показывая оценки:
- Напротив каждой игры показать горизонтальный слайдер (слева метка "хуже", справа -- "лучше")
- Игра с более правым положением слайдера лучше игры с более левым положением слайдера
- По умолчанию сделать слайдер по центру (либо ближе к левому краю, но не на самом краю)
- Оценивать все игры (даже в которые не играл) обязательно
- Написать об этом инструкцию и в качестве примера сказать, что можно слайдеры игр, в которые не играл, не двигать (но если хотите, двигайте), а остальные игры располагайте относительно них.

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

Неактивен

Powered by PunBB
© copyright 2001–2022 iFiction.Ru