Вероятностная матричная факторизация и совместная фильтрация

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

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

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

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

Объяснение вероятностной матричной факторизации

Предположим, у нас есть группа пользователей u 1, u 2, u 3… u N, которые оценивают набор элементов v 1, v 2, v 3… v M. Затем мы можем структурировать рейтинги в виде матрицы R из N строк и M столбцов, где N - количество пользователей, а M - количество оцениваемых элементов.

Одной из важных особенностей матрицы R является то, что она разреженная. То есть только некоторые из его ячеек будут иметь непустое значение рейтинга, а другие - нет. Для данного пользователя A система должна иметь возможность предлагать рекомендации по элементам на основе его / ее предпочтений, а также выбора, сделанного аналогичными пользователями. Однако пользователю A необязательно давать явную оценку тому или иному элементу, чтобы он был рекомендован. Другие пользователи с аналогичными предпочтениями восполнят недостающие данные о пользователе A. Вот почему вероятностная матричная факторизация попадает в категорию рекомендательных систем совместной фильтрации.

Давайте задумаемся о системе рекомендаций для фильмов. Представьте себе, как бы все было, если бы от нас требовали смотреть и оценивать каждый фильм, показываемый в течение определенного сезона. Это было бы довольно непрактично, не так ли? У нас просто нет на это времени.

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

Матрицу R можно оценить с помощью двух матриц низкого ранга U и V , как показано ниже:

Здесь U T - матрица N x D, где N - число зарегистрированных пользователей, а D - рейтинг. V - матрица D x M, где M - количество элементов. оценивать. Таким образом, матрица оценок N x M R может быть аппроксимирована с помощью:

Теперь наша задача - найти U T и V, которые, в свою очередь, станут параметрами нашего модель. Поскольку U и V являются матрицами низкого ранга, PMF также известен как низкоранговый проблема матричной факторизации. Кроме того, именно эта особенность матриц U и V делает PMF масштабируемым даже для наборов данных, содержащих миллионы записей.

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

Здесь X - наш набор данных, θ - параметр или набор параметров распределения. α - гиперпараметр распределения. p (θ | X, α) - это апостериорное распределение, также известное как апостериорное. p (X | θ, α) - это вероятность, а p (θ | α) - априорная. Вся идея процесса обучения состоит в том, что по мере того, как мы получаем больше информации о распределении данных, мы будем корректировать параметр модели θ, чтобы он соответствовал данным. С технической точки зрения, параметры апостериорного распределения будут включены в предыдущее распределение для следующей итерации процесса обучения. То есть апостериорное распределение данного обучающего шага в конечном итоге станет предшествующим для следующего шага. Эта процедура будет повторяться до тех пор, пока не будет небольшого изменения апостериорного распределения p (θ | X, α) между шагами.

А теперь вернемся к нашим представлениям о PMF. Как мы заявляли ранее, параметры нашей модели будут U и V,, тогда как R будет нашим набором данных. После обучения мы получим измененную матрицу R *, которая также будет содержать оценки для ячеек пользовательских элементов, которые изначально были пустыми в R . Мы будем использовать эту пересмотренную матрицу рейтингов, чтобы делать прогнозы. С учетом этих соображений у нас будет:

Где σ - стандартное отклонение сферического гауссова распределения с нулевым средним. Тогда, заменив эти выражения в уравнении 2, мы получим:

Поскольку матрицы U и V не зависят друг от друга (пользователи и элементы встречаются независимо), то это выражение также можно записать так:

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

Здесь I {ij} - это индикатор, который будет принимать значение 1, когда рейтинг в строке i и столбце j существует, в противном случае - ноль. Как видим, это распределение является сферическим гауссовым со следующими параметрами:

В свою очередь, предыдущие распределения для U и V определяются:

Это два сферических гауссиана с нулевым средним. Затем, заменив 4, 5 и 6 на 3, мы получим:

Чтобы обучить нашу модель, мы будем стремиться максимизировать эту функцию по параметрам U и V. приравняв их производные нулю. Однако сделать это будет очень сложно из-за функций exp в гауссианах. Чтобы решить эту проблему, мы должны вместо этого применить логарифмы к обеим сторонам предыдущих уравнений, а затем применить требуемые производные. Следовательно, применив логарифмы к обеим частям предыдущего уравнения, мы получим:

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

Следовательно, наше выражение для логарифмической апостериорной функции будет выглядеть следующим образом (Примечание: для простоты мы избавились от констант):

Здесь суффикс Fro обозначает норму Фробениуса, которая определяется как:

Наконец, введя некоторые дополнительные обозначения для определения гиперпараметров модели, мы получим:

Где:

Тогда, продифференцируя уравнение 7 по параметрам и приравняв производные нулю, получим:

Отсюда мы можем получить выражения для обновления U i и V j:

При условии, что λU и λV оба ненулевые, задействованные обратные матрицы гарантированно существуют. В процессе обучения мы будем итеративно обновлять как U i, так и V j. Как только мы найдем для них оптимальные значения, мы сможем получить значение для log-MAP (Максимум апостериорного) с помощью уравнения 7. Как мы увидим в реализации Python, мы можем использовать это значение для отслеживания сходимости обучения. .

Реализация на Python

Примечание. Полный исходный код реализации доступен по адресу https://bit.ly/35Cr5kl

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

Инициализация: чтобы инициализировать V, мы извлекаем случайные числа из гауссиана с нулевым средним и стандартным отклонением 1 / λV. Кроме того, для ранга D установлено относительно небольшое значение 10.

Обновление параметров: для обновления U и V мы используем уравнения 8 и 9. :

И соответствующий код Python следующий:

Вычисление апостериорного логарифма. Апостериорное логарифм определяется уравнением 7:

Со следующим кодом Python:

Цикл обучения. Для обучения модели мы вызываем предыдущие функции и отслеживаем логарифмический апостериорный анализ, а также RMSE (среднеквадратическую ошибку), оцениваемую на наборах для обучения и тестирования:

Мы запускаем цикл обучения на 150 итераций со следующими результатами:

Слева мы можем увидеть, как логарифмически-апостериорные данные развиваются по мере обучения модели. Справа мы можем видеть значения RMSE, оцененные как для обучающей, так и для тестовой выборки. Учитывая, что прогнозы R могут выходить за пределы диапазона оценок от 0 до 5, мы используем линейную интерполяцию, чтобы гарантировать, что R значения ограничены этим интервалом. В исходной статье [1] предлагаются другие подходы, такие как использование логистической функции и линейной интерполяции. Для обучения также предлагается градиентный спуск с импульсом для работы с более крупными наборами данных.

Наконец, вот несколько рекомендаций по фильму для пользователя с идентификатором 45 в базе данных:

Заключение

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

Надеюсь, вам понравилась эта статья! Не стесняйтесь обращаться ко мне, если у вас возникнут какие-либо вопросы. Скоро я продолжу писать больше подобных материалов. Будьте на связи.

использованная литература

[1] Салахутдинов, Руслан и Мних, Андрей. Вероятностная матричная факторизация. В НИПС’07: Материалы 20-й Международной конференции по системам обработки нейронной информации, страницы 1257–1264, 2007.

[2] Брукс-Бартлетт Джонни. Объяснение концепций вероятности: байесовский вывод для оценки параметров. Доступно на: https://bit.ly/3bajPNC