Сначала спросите себя:
Что я пытаюсь измерить?
Не тряпкой по другим материалам здесь, но пока 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)
В идеале, одинхочу максимизировать обе эти величины, но они в определенном смысле являются конкурирующими целями.Чтобы проиллюстрировать это, рассмотрим несколько экстремальных ситуаций: например, вы могли бы иметь рекомендатель, который возвращает все, что будет иметь идеальный отзыв, но с очень низкой точностью.Вторая возможность состоит в том, чтобы иметь рекомендатель, который ничего не возвращает или только один верный удар, который имел бы (в ограничительном смысле) идеальную точность, но почти не вызывал.
В результате, чтобы понять производительностьалгоритма ранжирования люди обычно смотрят на его график точности и отзыва.Это всего лишь графики точности и отзыва, так как количество возвращаемых предметов варьируется:
![](https://i.stack.imgur.com/lWZv5.png)
Изображение взято из следующего урока (который стоит прочитать): http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-ranked-retrieval-results-1.html
Теперь, чтобы приблизить точность к отзыву для вашего алгоритма, вот что вы можете сделать.Сначала верните большой набор, скажем, n результатов, ранжированных по вашему алгоритму.Затем попросите пользователя отметить, какие элементы ему действительно понравились из этих n результатов.Это тривиально дает нам достаточно информации для вычисления точности при каждом частичном наборе документов