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

Итак, сначала давайте разберемся, что такое рекомендация. Это в основном рекомендация элемента пользователю на основе его прошлого поиска / активности.

На рисунке 1 представлены рекомендации Amazon на основе истории просмотров и поисковых запросов. Итак, мы можем сказать, что рекомендация в основном предсказывает будущее поведение на основе прошлого поведения. В системе рекомендаций используются два типа подходов.

1- Контентная фильтрация

2- Совместная фильтрация

Фильтрация на основе содержания -

Он основан на идее рекомендовать элемент пользователю K, который похож на предыдущий элемент, получивший высокую оценку К. Базовая концепция фильтрации на основе контента - TF-IDF (частота термина - обратная частота документа), которая используется для определения важности. документа / слова / фильма и т. д. Фильтрация на основе содержимого показывает прозрачность рекомендаций, но в отличие от совместной фильтрации не может эффективно работать с большими данными

Совместная фильтрация

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

Факторизация матрицы

Факторизация матрицы оказалась в центре внимания после конкурса Netflix (2006 г.), когда Netflix объявил призовой фонд в размере 1 миллиона долларов тем, кто улучшит среднеквадратичную производительность на 10%. Netflix предоставил набор обучающих данных из 100 480 507 оценок, которые 480 189 пользователей дали 17 770 фильмам.

Факторизация матрицы - это метод совместной фильтрации, при котором матрица m * n раскладывается на m * k и k * n. Он в основном используется для расчета сложной матричной операции. Разделение матрицы таково, что если мы умножим факторизованную матрицу, мы получим исходную матрицу, как показано на рисунке 2. Он используется для обнаружения скрытых функций между двумя объектами (может использоваться для более чем двух объектов, но это будет происходить при тензорной факторизации)

Разложение матрицы можно разделить на три типа:

1- LU-разложение - разложение матрицы на L- и U-матрицу, где L - нижняя треугольная матрица, а U - верхняя треугольная матрица, обычно используется для определения коэффициента линейной регрессии. Это разложение не удалось, если матрица не могла быть легко разложена.

2- Разложение матрицы QR - Разложение матрицы на Q и R, где Q - квадратная матрица, а R - верхняя треугольная матрица (не обязательно квадрат). Используется для анализа собственных систем

3- Разложение Холецкого - это наиболее часто используемое разложение в машинном обучении. Используется для расчета линейного метода наименьших квадратов для линейной регрессии

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

Описание проблемы

В таблице 1 у нас есть 5 пользователей и 6 фильмов, где каждый пользователь может оценить любой фильм. Как мы видим, Генри не оценил Тора и Рокки, точно так же Джерри не оценил Аватар. В реальном сценарии эти типы матриц могут быть очень разреженными матрицами.

Наша постановка задачи заключается в том, что мы должны узнать рейтинги фильмов без рейтинга, как показано в таблице 1.

Наша цель - найти рейтинг пользователя по матричной факторизации, но перед этим мы должны пройти через разложение по сингулярным значениям (SVD), потому что матричная факторизация и SVD связаны друг с другом.

SVD и матричная факторизация

Прежде чем углубляться в SVD, давайте сначала поймем, что такое K, и транспонируем (K). Если мы выполним PCA для матрицы K (Таблица 1), мы получим весь пользовательский вектор. Позже мы можем поместить эти векторы в столбец матрицы U, и если мы выполним PCA при транспонировании (K), мы получим весь вектор фильма, который станет столбцом для матрицы M.

Таким образом, вместо выполнения PCA для K и транспонирования (K) отдельно, мы можем использовать SVD, который может выполнять PCA для K и транспонировать (K) за один снимок. SVD - это в основном факторизованная матрица K на матрицу U, матрицу M и диагональную матрицу:

где K - исходная матрица, U - пользовательская матрица, M - матрица фильма, а средняя - диагональная матрица.

Для простоты мы можем на время удалить диагональную матрицу, чтобы новое уравнение стало:

Пусть r - рейтинг, определенный для пользователя u и элемента i, p - строка M для пользователя, а q - столбец транспонирования (U) для конкретного элемента i. Таким образом уравнение станет:

Примечание.Если K - значение плотной матрицы, то M будет собственным вектором K * транспонирования (K), аналогично значение U будет собственным вектором транспонирования (K) * K, но наша матрица является разреженной матрицей, мы не можем вычислить U и M с помощью этого подхода.

Итак, здесь наша задача - найти матрицы M и U. Один из способов - инициализировать случайное значение для M и U и сравнить его с исходной Матрицей K, если значение близко к K, чем остановить процедуру, в противном случае минимизировать значение U и M, пока они не станут близки к K. Процесс такой оптимизации называется градиентным спуском.

Итак, наша основная задача - минимизировать функцию среднеквадратичной ошибки, которую можно представить как:

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

Следовательно, обновленное значение для p и u теперь будет следующим:

Если альфа - это скорость обучения, обычно ее значение очень мало, так как более высокая альфа может превышать минимальное значение.

Регуляризация в рекомендации

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

На рисунке 2 на первом графике модель аппроксимируется линейно, а на втором графике - с полиномиальной степенью. На первый взгляд кажется, что второй график намного лучше, чем первый график, поскольку он дает 99% -ную точность обучающих данных, но что, если мы введем тестовые данные, и они дадут 50% -ную точность тестовых данных. Этот тип проблем называется переобучением, и для решения этой проблемы мы вводим понятие, называемое регуляризацией.

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

1- L1 регуляризация

2- L2 регуляризация

Регуляризация L1 добавляет линейную величину коэффициента в качестве штрафного члена, в то время как в L2 она добавляет квадратную величину коэффициента к функции потерь / функции ошибок (как обсуждалось выше). L1 возвращает разреженные матрицы, а L2 - нет. Регуляризация L1 хорошо работает при выборе признаков в разреженной матрице.

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

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

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

Ссылка:

1- Введение в совместную фильтрацию

2- Введение в фильтрацию контента

3- Википедия

4- Понимание матричной факторизации для рекомендаций

5- Матричная факторизация: простое руководство и реализация на Python

6- Мягкое введение в матричную факторизацию для машинного обучения