Алгоритмы, помогающие людям выбирать (например, война котенка)
Хорошо, я сталкиваюсь с неизбежным дополнением к своей семье и работаю с выбором имен.
Я подумал о написании программного обеспечения, чтобы отображать имена и заставлял меня выбирать, что мне больше нравится, подобно войне котенка.
Как только у меня есть огромный график, я не знаю, как его обрабатывать, особенно если есть циклы. например, мне нравится Майк лучше, чем сам, сам лучше, чем джаред, лучше, чем майк, - нет смысла просто назначать голоса и считать их (это то, что я думаю о войне котенка). Кроме того, я могу однажды получить майка против Джареда и проголосовать в одну сторону, но голосую иначе, если я получу его в другой день.
Итак:
- Как только у вас есть данные, как обрабатывать граф и ранжировать имена?
В качестве альтернативы:
- Какие еще полезные алгоритмы могут использоваться для выбора (например, стиль автомобиля, если вы ищете новый автомобиль)?
-Adam
Ответы
Ответ 1
Возможно, вам захочется проверить ответы на вопрос, который я задал некоторое время назад: Как ранжировать миллион изображений с краудсорсинговой сортировкой - были хорошие предложения о том, как обрабатывать результаты множества операций сравнения, чтобы достичь ранжирования.
Ответ 2
например, мне нравится майк лучше, чем сам, сам лучше, чем джаред, лучше, чем майк
Если вы обнаружите, что это так, вы можете сделать вывод, что вы не подходите для выбора имен и должны отнестись к значительному другому для выбора.
Ответ 3
Я думал, что мы прошли через это, и ответ по-прежнему есть Джон Скит:) Все остальные данные не имеют значения.
EDIT: Поздравляем BTW:)
Ответ 4
Это неправильная реализация: Вы делаете это неправильно. Это точно правильное приложение для алгоритма Она всегда будет выигрывать.
Ответ 5
Я не знаю, насколько масштабируемый этот алгоритм, но я успешно реализовал его на нескольких сайтах, которые я разработал с ранжированием (адаптировано из IMDB рейтинг):
взвешенный рейтинг (WR) = (v / (v+m)) * R + (m / (v+m)) * C
Где:
- R = среднее значение для котенка (среднее) = (голосов/количество проголосовавших)
- v = количество голосов за котенок = (голосов)
- m = минимальные голоса, которые должны быть указаны в Топ-100 (около 25 - безопасный номер)
- C = среднее голосование по всем котятам = (сумма голосов)/(сумма всех, кто проголосовал)
Алгоритм выше работает для сайта стиля войны котенка, но его не адекватный алгоритм для "экспертной системы" или механизма рекомендации.
Один подход - и я не могу гарантировать хороший - для механизма рекомендаций будет представлять различные варианты в матрице. Допустим, вы хотели выбрать юбку, вы можете представить различные свойства юбки следующим образом:
Fashionable Affordable Colorful Practical
Miniskirt 10 5 7 5
Cheer skirt 3 1 10 1
Grass skirt 2 7 2 1
Jean skirt 9 5 3 10
Теперь вы спрашиваете у пользователя, какую одежду они хотят носить:
- [X] Что-то модное?
- [] Что-то доступное?
- [] Что-то красочное?
- [X] Что-то практическое?
Ввод выше показывает, что пользователь ищет что-то модное и практичное, не заботясь о других свойствах, поэтому его достаточно просто, чтобы хруст данных выше:
Fashionable Practical Total
Jean skirt 9 10 19
Miniskirt 10 5 15
Cheer skirt 3 1 4
Grass skirt 2 1 3
Этот очень простой, но эффективный подход работает до тех пор, пока вы знаете свойства каждого объекта, который вы сравниваете.
Ответ 6
Взгляните на статьи машинного обучения "Ранжирование из сравнения/предпочтения пар".
Вот вам одна статья, чтобы вы начали: Обучение и ранжирование приуроченных предпочтений
Ответ 7
Какие другие полезные алгоритмы могут быть используется для выбора [...]?
Это сработало хорошо для меня, дважды. И нам даже не нужно было использовать одиннадцатый час простой орфографический вариант!
Ответ 8
Это алгоритм, который мы использовали:
- Выделите один пол для каждого родителя. Назначьте этому родителю указатель основной для этого пола.
- Первичное разрешено, но поощряется, создавать список возможных названий потомков в соответствии с какими-либо прихотью или прихотью поражает их воображение в любой конкретный момент времени.
- Назначьте другому родительскому элементу альтернативный. У альтернатива есть только одна возможность для пола, для которого они не являются первичными, и это вето. Альтернативный вариант может выражать предпочтение одному конкретному варианту над другим, но на самом деле просто шутит. >
- Вето побеждает. Это не требует оправдания или объяснения (хотя некоторые рекомендуются в тех случаях, когда родители намерены поддерживать свое состояние брачного счастья...).
- В случаях, когда потенциальный ребенок является итерацией n >= 2, вы можете проконсультироваться с итерацией n = 1 для дополнительных предложений по ранжированию. Для большинства ситуаций эта эвристика должна считаться решающим голосом.
В нашем случае я был главным в обоих случаях (два мальчика), а NumberOneSon был нашим решающим голосом, когда пришло время выбрать обозначение для SecondSon. И вам лучше поверить, что WifeUnit был A-OK, размахивая своим вето вокруг.
Короче, поздравляю. Воспитание - это крик.
Ответ 9
Если вы будете отслеживать выигрыши/потери, вы можете предпочесть показывать вам имена с высоким коэффициентом выигрыша и потери. В конце концов, имена, которые вам нравятся, будут пузыряться до вершины и, скорее всего, будут сравниваться друг с другом. Вероятно, вы также захотите добавить вес к именам, которые еще не были сопоставлены, или имели очень мало сравнений.
Отбирать имена после определенного количества потерь, не допускать одновременного сравнения одинаковых имен друг с другом, так как все ваше мнение в любом случае.
Как только у вас есть "сливки урожая", отфильтрованные из мусора, вы будете сравнивать лучшие из них напрямую, стиль соревнований, пока не выберете победителя. (Или просто взгляните на них вручную в этот момент)
Ответ 10
Я вполне уверен, что Майк - правильный выбор.