Как проверить алгоритм выбора пользователя - PullRequest
3 голосов
/ 25 июня 2011

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

Теперь я пытаюсьпридумайте способ статистической проверки этого с группой людей.
Теперь я проверяю это следующим образом:

  1. Алгоритм получает наилучшие результаты для каждого пользователя.
  2. перемешайте лучшие 5 результатов с самыми низкими 5 результатами.
  3. заставьте человека перечислить результаты, которые ему понравились, по порядку (0 = понравилось лучше, 9 = не понравилось)
  4. сравнить результаты пользователя с результатами алгоритма.

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

Итак, я спрашиваю:

Является ли перетасовка топ-результатов с низкими результатами хорошей идеей?

А если нет, у вас есть идея, как получить хорошую статистику о том, насколько хороший алгоритм соответствует предпочтениям пользователя (у нас есть пользователи, которые могут выбирать вещи)?

Ответы [ 3 ]

4 голосов
/ 26 июня 2011

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

При смешивании высоких и низких результатов:
Основным недостатком создания наборов элементов путем смешивания догадок алгоритма сверху и снизу является то, что это может дополнительно усложнить выбор функции ошибки / расстояния, используемой для измерения того, насколько хорошо работает алгоритм. Если два подмножества элементов (самый верхний выбор, самый нижний выбор) не хранятся раздельно с целью вычисления отдельных измерений, типичные статистические показатели ошибки (скажем, RMSE) не будут хорошим измерением эффективного Качество алгоритма.
Например, алгоритм, который часто предлагает элементы с низкой степенью угадывания, которые в итоге выбираются пользователем как наиболее предпочтительные, может иметь такую ​​же усредненную частоту ошибок, что и алгоритм, который никогда не путает максимумы с минимумами, но там, где пользователь стремится изменить порядок элементов больше в их подмножестве.

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

4 голосов
/ 26 июня 2011

Сначала спросите себя:

Что я пытаюсь измерить?

Не тряпкой по другим материалам здесь, но пока mjvи ответы Шёрда предлагают некоторые правдоподобные эвристические причины того, почему то, что вы пытаетесь сделать, может работать не так, как вы ожидаете;они не являются конструктивными в том смысле, что они не объясняют, почему ваш эксперимент имеет недостатки, и что вы можете сделать, чтобы улучшить его.Прежде чем решить любую из этих проблем, вам нужно определить, что вы хотите измерить, и только тогда вы должны попытаться разработать эксперимент.

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

http://en.wikipedia.org/wiki/Precision_and_recall

Это стандартная методика оценки эффективности алгоритмов ранжирования и классификации в машинном обучении и информации.поиск (т.е. поиск в сети).Если у вас есть инженерное образование, было бы полезно понять, что точность / отзыв обобщает понятие точности / точности:

http://en.wikipedia.org/wiki/Accuracy_and_precision

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

Тогда точность результатов вашего алгоритма по первым n - это количество элементов, из которых пользователь действительно понравился изВаши первые наверх n рекомендаций:

    precision = #(items user actually liked out of top n) / n

И отзыв - это количество предметов, которое вы фактически получили из общего числа предметов:

    recall = #(items correctly marked as liked) / #(items user actually likes)

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

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

Изображение взято из следующего урока (который стоит прочитать): http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-ranked-retrieval-results-1.html

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

4 голосов
/ 25 июня 2011

Ваш метод предвзят.Если вы используете верхние 5 и нижние 5 результатов, весьма вероятно, что пользователь упорядочит их в соответствии с вашим алгоритмом.Допустим, у нас есть алгоритм, который оценивает музыку, и я представляю пользователю верхнюю 1 и нижнюю 1:

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

...