Определившись с темой нашего проекта, я начал искать хороший ресурс, который поможет нам в течение всего семестра. Книгу под названием Программирование Коллективного разума: Создание умных приложений Web 2.0 рекомендуют почти все программисты рекомендательных движков, все они использовали ее в качестве руководства при создании своих приложений. Взял книгу на Амазоне и начал читать. Пролистав книгу некоторое время, я вижу, что в этой книге содержатся не только программные, но и теоретические концепции рекомендательных систем. Я прочитал главу 1 и главу 2, как только получил книгу, и быстро просмотрел другие главы, не вдаваясь в детали этапов реализации. Поскольку глава 1 содержит информацию о концепциях машинного обучения, я пропускаю эту часть. Это краткое изложение в основном охватывает главу 2, в которой кратко описаны основные концепции механизмов рекомендаций.

Фильтрация на основе пользователей и совместная фильтрация на основе элементов

Насколько я вижу (если я что-то не упустил), системы коллаборативной фильтрации рекомендательных движков бывают двух типов: на основе пользователей и на основе элементов. В пользовательских фильтрах система рекомендует вам все на основе ваших данных. Обычно он сравнивает пользователя с любым другим пользователем и находит сходства или различия в зависимости от системы рекомендаций вашего движка. Функция Facebook «похожие на вас» делает то же самое: она использует данные вашего профиля и находит пользователей, которые могут быть похожи на вас, сравнивая вас с пользователями рядом с вами, друзьями ваших друзей и т. д. Механизм рекомендаций Facebook действительно более сложный, но его можно привести как пример. Альтернатива этим фильтрам известна как совместная фильтрация на основе элементов. Общий метод заключается в предварительном вычислении наиболее похожих элементов для каждого элемента. На сайтах интернет-магазинов, если вы хотите дать рекомендацию пользователю, вы просматриваете его товары с самым высоким рейтингом и создаете взвешенный список товаров, наиболее похожих на них. Совместные фильтры на основе элементов могут давать лучшие результаты в случаях с большими наборами данных, даже если это не кажется таковым, потому что сравнения между элементами не будут меняться так часто, как сравнения между пользователями. Это означает, что вам не нужно постоянно вычислять наиболее похожие элементы каждого элемента, вы можете делать это на компьютере, отдельном от вашего основного приложения.
Фильтрация на основе элементов кажется значительно быстрее, чем фильтрация на основе пользователей, при получении списка рекомендаций из большого набора данных. Однако накладные расходы здесь связаны с поддержкой таблицы сходства элементов. Например, в Criticker, поскольку у каждого фильма есть несколько критиков, набор данных плотный. С другой стороны, в del.icio.us вряд ли можно найти двух человек с одинаковым набором закладок, что приведет к разреженному набору данных. Фильтрация на основе элементов обычно превосходит фильтрацию на основе пользователей в разреженных наборах данных, и они оба работают одинаково в плотных наборах данных.

Показатели сходства рекомендаций

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

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

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