1. Введение

Система рекомендаций (RecSys/RS) — это метод фильтрации информации, который предоставляет пользователям информацию, которая может их заинтересовать. Основная цель системы рекомендаций — предлагать пользователям элементы на основе их прошлого опыта или выбора. Мир RecSys (система рекомендаций) развивался экспоненциально с момента наступления эпохи искусственного интеллекта и доступности памяти и источников вычислений. Компании, которые используют RecSys и используют ее преимущества, — это YouTube, Facebook, Coursera, потоковые сервисы OTT (Over the top), такие как Netflix и Prime Video, а также гиганты электронной коммерции Flipkart и Amazon. Эти компании используют RecSys различными способами, например, предлагая видео для просмотра (Netflix), продукты для покупки (Amazon) или курсы для прохождения (Coursera) на основе ваших предыдущих действий или исторических данных.

2. Типы систем рекомендаций

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

RS на основе контента — Фильтрация на основе контента (CBF), также известная как когнитивная фильтрация, использует в качестве информации информацию о предыдущем выборе фильмов покупателем и находит элементы, похожие на те, к которым пользователь проявил интерес, чтобы генерировать рекомендации в будущее. Элементы сгруппированы вместе на основе концепции дескрипторов. CBF использует различные модели, чтобы вызвать сходство между элементами, чтобы генерировать достаточные рекомендации. Мы можем использовать модель векторного пространства, такую ​​​​как TFIDF (частота терминов, обратная частоте документа), и вероятностные модели, такие как нейронные сети или классификаторы Наивного Байеса.

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

Hybrid RS. Метод гибридной фильтрации объединяет выходные данные других методов и объединяет их друг с другом для получения более обобщенных результатов. Объединение различных моделей, таких как CF или Content, можно рассматривать как гибридный механизм рекомендаций.

3 подхода для генерации рекомендаций:

  1. На основе графика

База данных графа моделирует и хранит данные в виде узлов и ребер структуры графа. Графовые базы данных позволяют методично и быстро извлекать информацию о тесно связанных и сложных иерархических структурах, которые было бы крайне неэффективно моделировать с использованием традиционных реляционных систем. Все традиционные алгоритмы совместной фильтрации, подхода популярности или фильтрации на основе контента могут быть применены к базам данных на основе графов. Neo4j — популярная база данных на основе графов, предлагающая множество функций для создания графических моделей в реальном времени. Он оснащен обработкой основных транзакций ACID и базовым хранением данных, организацией и предварительной обработкой. Язык, который используется для запросов к графовым базам данных в Neo-4j, называется языком шифрованных запросов. Neo-4j использует модель графа свойств, в которой мы можем назначать веса и метки узлам и их отношениям. На рис. 1 описана типичная база данных графа с узлами, выступающими в качестве точек данных, и ребрами, изображающими взаимосвязь между связанными узлами. Метки используются для идентификации узлов, и в нашей базе данных может быть несколько помеченных узлов с указанием их типа. Два узла связаны своими отношениями. Сопоставление пар ключ-значение может быть сохранено на узлах и ребрах.

2. Нейронная сеть

Pytorch — это фреймворк, который позволяет нам строить различные вычислительные графы и запускать их на GPU (графическом процессоре) для повышения производительности и сокращения времени выполнения. Некоторые важные гиперпараметры, которые мы должны настроить перед получением результатов, — это размер партии, метод регуляризации (наиболее подходящим будет отсев), нет. слоев в нашей глубокой нейронной сети оптимизаторы, такие как SGD (стохастический градиентный спуск) плюс импульс или Адам (адаптивные моменты), нет. слоев и нейронов на слой и определение того, насколько глубокой будет наша модель, т.е. скрытых слоев.

3 . Apache Spark (стандартное машинное обучение)

Apache Spark — это среда кластерных вычислений с открытым исходным кодом общего назначения, предоставляющая интерфейс для создания и управления большими данными. Spark легко получить и использовать, предлагая API на 4 языках программирования: Python, Java, Scala и R. С тех пор библиотека машинного обучения Sparks (MLLib) добилась широкого успеха благодаря своей способности обрабатывать распределенные вычисления и большие данные в форме его базовых абстракций RDD (устойчивых распределенных наборов данных). Следовательно, мы реализуем рекомендательную систему на MLlib. Принимая ALS (альтернативный метод наименьших квадратов), мы подгоняем нашу модель, сохраняя один фактор фиксированным и корректируя другой фактор. Этот процесс продолжается до сходимости.

Заключение

Рис. 2 иллюстрирует производительность всех трех подходов на основе RMSE. Подход с нейронным встраиванием дал нам RMSE 0,515234, наименьший по сравнению с двумя другими. Его производительность повышается за счет точной настройки параметров модели и минимизации нашей целевой метрики. Мы можем добиться еще лучших результатов за счет лучших ресурсов и вычислительных экземпляров. RMSE из подхода PySpark оказался равным 0,62341 после запуска алгоритма через 10 эпох. Мы можем улучшить результаты, выполнив больше итераций и выбрав гиперпараметры вручную, вместо того, чтобы использовать стандартные параметры. Среднеквадратическое отклонение для графического подхода составило 0,551298. Таким образом, мы можем сказать, что использование конкретного алгоритма будет сильно зависеть от нашего варианта использования. Обычно, если мы хотим сделать наши результаты более интерпретируемыми, мы можем использовать Neo-4j и его графические возможности, тогда как, если мы хотим сосредоточиться на построении всего конвейера механизмов рекомендаций, мы можем использовать PySpark, поскольку он предоставляет нам сквозное машинное обучение. решения. Подход Neural Embedding все еще находится в зачаточном состоянии, но возможности безграничны, учитывая скорость инноваций в алгоритмах глубокого обучения и искусственного интеллекта.