Создаем рекомендательную систему с помощью языка Python
Коллаборативная фильтрация – это самый простой способ для построения рекомендаций или прогнозов в рекомендательных системах. Основное предположение заключается в том, что люди, дающие одинаковые оценки предметам или выбирающие одинаковые вещи, в будущем также будут вести себя похоже. С помощью коллаборативной фильтрации можно рекомендовать книги, на основе уже прочитанных, похожими людьми или продвигать услуги. Попробуем сравнить несколько объектов, используя язык Python.
В настоящее время крупные компании, в том числе Банки хотят привлечь максимальное количество клиентов к себе, но анализировать вручную каждого клиента, чтобы предложить ему что-то – долго и нудно, поэтому эту задачу выполняют компьютеры.
Существует несколько схем коллаборативной фильтрации:
- Вычисляют тех, кто разделяет оценочные суждения выбранного человека. Используют оценки максимально похоже мыслящих людей, найденных на первом шаге (для построения прогноза).
- Сначала строят матрицу, определяющую отношения между парами предметов, для нахождения похожих. Используя построенную матрицу и информацию о человеке – строят прогноз.
(К сведению, второй способ был изобретен Amazon)
Также существует 3 основных типа коллаборативной фильтрации:
- Основанный на соседстве (подбор группы похожих людей)
- Основанный на модели (использует методы машинного обучения)
- Гибридный (объединяет первый и второй тип)
А теперь попробуем практически реализовать 1 тип на языке Python.
Для начала построения прогнозов нам необходим DataSet, где есть пользователи (объекты) и их параметры (возраст, пол и другие параметры), пример изображен на рисунке 1.
Первым шагом нам необходимо подключить библиотеку pandas, именно с помощью неё и будет реализован весь метод.
Вторым шагом мы загружаем в DataFrame наш DataSet (у меня он с именем test), также мы устанавливаем в качестве индекса нашу колонку с именем «Объект» и создаем новый DataFrame для рекомендаций.
Третьим шагом мы перебираем все строки нашего DataFrame и для каждой находим один (можно и больше, если изменить переменную «k») максимально похожий объект (также удаляем этот объект, чтобы исключить случай, что максимально похожий — будет он сам) и записываем его в рекомендации.
В выходном файле, для примера, я вывел 3 колонки (рисунок 2):
- Выбранный объект
- Похожий объект
- Коэффициент схожести
В итоге, мы нашли похожие объекты. Далее полученную информацию можно использовать уже по своему усмотрению. Например, искать пересечения обучающих курсов, книг, оценок, фильмов, музыки и рекомендовать только то, что нет у выбранного объекта, чтобы не советовать, что он уже прослушал или посмотрел и т.д.
а где датасет то взять?