#machine-learning #recommender-systems
#машинное обучение #рекомендательные системы
Вопрос:
В настоящее время я оцениваю систему рекомендаций, основанную на неявной обратной связи. Я был немного сбит с толку в отношении показателей оценки для ранжирования задач. В частности, я ищу оценку как по точности, так и по отзыву.
Точность @k имеет то преимущество, что не требует какой-либо оценки размера набора соответствующих документов, но недостатки заключаются в том, что она является наименее стабильной из обычно используемых мер оценки и что она плохо усредняется, поскольку общее количество соответствующих документов для запроса оказывает сильное влияние на точность приk
Я сам заметил, что он имеет тенденцию быть довольно изменчивым, и поэтому я хотел бы усреднить результаты из нескольких журналов оценки.
Мне было интересно; скажем, если я запускаю функцию вычисления, которая возвращает следующий массив:
Массив Numpy, содержащий оценки точности @ k для каждого пользователя.
И теперь у меня есть массив для всех значений точности @ 3 в моем наборе данных.
Если я возьму среднее значение этого массива и усредню, скажем, 20 разных баллов: эквивалентно ли это средней точности @ K или MAP @ K или я понимаю это слишком буквально?
Я пишу диссертацию с разделом оценки, поэтому точность определений для меня очень важна.
Комментарии:
1. Посмотрим, поможет ли это — kaggle.com/nandeshwar /…
Ответ №1:
Задействованы два средних значения, которые делают концепции как-то неясными, но они довольно просты — по крайней мере, в контексте recsys — позвольте мне прояснить их:
P @ K
Сколько релевантных элементов присутствует в рекомендациях top-k вашей системы
Например, чтобы вычислить P @ 3: возьмите 3 лучших рекомендации для данного пользователя и проверьте, сколько из них являются хорошими. Это число, разделенное на 3, дает вам P @ 3
AP @ K
Среднее значение P @i для i = 1, …, K.
Например, чтобы вычислить AP @ 3: суммируйте P @ 1, P @ 2 и P @ 3 и разделите это значение на 3
AP @K обычно вычисляется для одного пользователя.
MAP @K
Среднее значение точки доступа @ K для всех пользователей.
Например, чтобы вычислить MAP @ 3: просуммируйте AP @ 3 для всех пользователей и разделите это значение на количество пользователей
Если вы программист, вы можете проверить этот код, который является реализацией функций apk
и mapk
ml_metrics
библиотеки, поддерживаемой техническим директором Kaggle.
Надеюсь, это помогло!
Комментарии:
1. Стоит отметить, что обычно при вычислении AP @ K усредняется только по значениям k, при которых делается соответствующая рекомендация. Это то, что делается в связанном коде, это также разъясняется здесь .
2. «Например, чтобы вычислить P @ 3: возьмите 3 лучших рекомендации для данного пользователя и проверьте, сколько из них являются хорошими». — Неоднозначный ответ. Как вы определяете, что такое «хорошие»?
3. @Alex Насколько я знал, мы найдем наилучшее значение K, используя любые / многие методы настройки гиперпараметров. Например: ALS, SGD, SVD и т.д. Пожалуйста, исправьте, если я ошибаюсь.
4. @alex «хорошие» — это те, которые имеют отношение к делу. Есть несколько способов решить, является ли элемент релевантным или нет. Например, если шкала оценок равна 1-5, возможно, соответствующий порог может быть установлен как <3, поэтому любые элементы, набравшие <3, считаются «неактуальными», поскольку они, вероятно, будут элементами, которые пользователю «не нравятся» . Однако такой постоянный порог является предвзятым, поскольку некоторые пользователи могут быть более склонны постоянно давать более высокие или более низкие оценки. Поэтому альтернативой является получение среднего значения для каждого пользователя и использование его в качестве порогового значения. Элементы, которые>= этому среднему порогу, являются «релевантными».
5. Утверждение, что AP @ K = среднее (P @ 1 P @ 2 … P @K) равно false. Вот контрпример .