Як слід поводитися з неявними даними в рекомендації


10

Система рекомендацій веде журнал того, які рекомендації були зроблені конкретному користувачеві та чи приймає він рекомендацію. Це як

user_id item_id result
1       4       1
1       7       -1
5       19      1
5       80      1

де 1 означає, що користувач прийняв рекомендацію, а -1 означає, що користувач не відповів на рекомендацію.

Питання: Якщо я збираюсь робити рекомендації для групи користувачів на основі типу журналу, описаного вище, і хочу досягти максимальної оцінки MAP @ 3, то як мені поводитися з неявними даними (1 або -1)?

Моя ідея - розглянути 1 і -1 як рейтинги та передбачити рейтинг за допомогою алгоритмів типу машин факторизації. Але це не здається правильним, враховуючи асиметрію неявних даних (-1 не означає, що користувач не любить рекомендації).

Редагувати 1 Поміркуймо в контексті матричної факторизації. Якщо ми ставимося до -1 і 1 як до рейтингів, то буде певна проблема. Наприклад, користувачеві 1 подобається фільм А, який набирає високий бал за один фактор (наприклад, славна фонова музика) у прихованому просторі фактора. Система рекомендує фільм B, який також набирає високу оцінку "славної фонової музики", але з певних причин користувач 1 занадто зайнятий, щоб розглянути рекомендації, і у нас є фільм-рейтинг -1. Якщо ми просто ставимось до 1 або -1 однаково , то система може не рекомендувати рекомендувати фільм зі славним BGM користувачеві 1, тоді як користувач 1 все ще любить фільм із славним BGM. Я думаю, що цієї ситуації слід уникати.


Немає проблеми, що -1 не означає неприязнь. Це просто спосіб розрізнити те, що хтось бачив предмет. У цьому сенсі він містить більше інформації, ніж відсутнє значення. Це може фактично підвищити точність вашої рекомендації. Залежно від показника відстані в рекомендаціях, ви можете розглянути можливість зміни його з -1 на незначне значення метрики, щоб воно не впливало на відстань настільки сильно.
cwharland

1
Канонічний документ для неявних зворотних зв’язків - Ху, Корен та Волинський . Там багато хороших рекомендацій, включаючи оцінку вашої впевненості, в якій -1 вказує на неприязнь або просто на "не бачив".
Трей

Відповіді:


6

Ваша система не просто навчається предметам, які рекомендовано? якщо так, у вас тут є великий цикл зворотного зв'язку. Сподіваюся, ви хочете вчитися на всіх кліках / переглядах.

Ви припускаєте, що не дивлячись на предмет - це негативний сигнал. Я настійно пропоную вам не ставитися до цього так. Не взаємодіяти з чимось майже завжди найкраще трактується як відсутність інформації. Якщо у вас є явний сигнал, який вказує на неприязнь, як, наприклад, голосування вниз (або, можливо, переглянув 10 секунд відео і зупинився), можливо, це дійсно.

Я б не розглядав цей вклад як рейтингові дані. (Хоча у вашому випадку ви можете відмовитися від цього.) Натомість вважайте їх вагами, що саме стосується роботи у статті Ху Хурена Волинського на ALS, яку @Trey згадує у коментарі. Це дозволяє записувати відносну силу позитивних / негативних взаємодій.

Насамкінець я зазначу, що цей документ, хоча це, ймовірно, те, що ви шукаєте, не передбачає негативних ваг. Розширити таким способом просто. Якщо ви досягнете цього далеко, я можу вказати на просте розширення, яке існує вже у двох реалізаціях, про які я знаю, в Spark та Oryx .


2
Я думаю, що введення незначних негативних значень для предметів, які були помічені багато разів, але ніколи не обрані, є розумним. ОП не вказує, що вони мають доступ до даних, які кваліфікують ці негативні імпутації, але я не виключав би тактику цілком. Оптимальну величину від’ємного значення можна визначити з даних. У мене були невеликі вигоди від цього в сценаріях recsys. У будь-якому випадку ... ви б запропонували інші способи розмежування між пунктом, який бачили один раз, і не був обраний проти побаченого N разів і ніколи не обраний, окрім негативного введення?
cwharland
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.