Совместная фильтрация через матричную факторизацию с функцией логистических потерь


9

Рассмотрим проблему совместной фильтрации. У нас есть матрица размера #users * #items. если пользователь i любит элемент j, если пользователь i не любит элемент j иесли нет данных о (i, j) паре. Мы хотим предсказать для будущего пользователя, пары предметов.MMя,Jзнак равно1Mя,Jзнак равно0Mя,Jзнак равно?Mя,J

Стандартный подход совместной фильтрации заключается в представлении M как произведения двух матриц , так что минимально (например, минимизируется среднеквадратичная ошибка для известных элементов ).U×В||M-U×В||2M

Для меня функция логистической потери кажется более подходящей, почему все алгоритмы используют MSE?


1
В этом случае это имеет смысл, но большую часть времени M_i, j может быть рейтингом, и в этом случае MSE является более полезным. Я бы сказал, что MSE является более общим.
2013 г.,

Ответы:


9

Мы используем логистическую потерю для неявной матричной факторизации в Spotify в контексте музыкальных рекомендаций (с использованием количества игр). Мы только что опубликовали статью о нашем методе на предстоящем семинаре NIPS 2014. Документ называется «Факторизация логистической матрицы для данных неявной обратной связи» и может быть найден здесь http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf.

Код для статьи можно найти на моем Github https://github.com/MrChrisJohnson/logistic-mf


1
L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 - α.r_ui) A посмотрел ваш код, и вы используете 1 + α.r_ui l64: A = (self.counts + self.ones) * a github.com/MrChrisJohnson/logistic-mf/blob/master/ ... Поэтому я что-то упустил? С уважением
fstrub

Я посмотрел на статью, которую вы опубликовали. Это очень интересно, так как матричная факторизация с логистической регрессией не была активно изучена. В любом случае, я немного запутался с вашей функцией потери (2) L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui) | xu, yi, βu, βi)) Что касается (3), я думаю, что существует опечатка L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α .r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 + α.r_ui ) Но, на самом деле, я все еще немного сбит с толку. Действительно, я бы ожидал подобный Бернуилли закон as
fstrub

Может быть, я опаздываю на эту тему ... у кого-то была возможность попробовать этот алгоритм вне контекста музыкальной рекомендации и вместо классического контекста рекомендаций по продукту? Спасибо.
Марко Фумагалли

3

Большинство статей, которые вы найдете по этому вопросу, будут касаться матриц, где рейтинги находятся по шкале [0,5]. Например, в контексте премии Netflix, матрицы имеют дискретные оценки от 1 до 5 (+ отсутствующие значения). Вот почему квадратичная ошибка является наиболее распространенной функцией стоимости. Могут быть замечены некоторые другие измерения ошибок, такие как расхождение Кульбака-Лейблера.

Другая проблема, которая может возникнуть при стандартной матричной факторизации, состоит в том, что некоторые элементы матриц U и V могут быть отрицательными (особенно на первых этапах). Это причина, почему вы не использовали бы здесь потерю журнала в качестве функции стоимости.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.