0Pricing
Learn AI with Python · Урок

Коллаборативная фильтрация: на основе пользователей и объектов

Сходство пользователей, сходство объектов, методы ближайшего окружения, косинусное сходство для оценок

«Коллаборативная фильтрация: на основе пользователей и объектов» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Что такое коллаборативная фильтрация

Коллаборативная фильтрация (CF) рекомендует объекты, обучаясь на поведении множества пользователей. Основная идея такова: пользователи, чьи предпочтения совпадали в прошлом, скорее всего, будут соглашаться и в будущем. Описания объектов не нужны — достаточно истории взаимодействий.

Матрица пользователей и объектов

CF начинается с матрицы пользователей и объектов, в которой строки соответствуют пользователям, столбцы — объектам, а каждая ячейка содержит оценку или остаётся пустой, если объект не оценён. Обычно эта матрица очень разреженная, поскольку каждый пользователь оценивает лишь несколько объектов.

import pandas as pd

matrix = ratings.pivot_table(
    index="user_id", columns="item_id", values="rating"
)

Два вида CF

  • На основе пользователей: найдите пользователей, похожих на вас, и порекомендуйте то, что им понравилось.
  • На основе объектов: найдите объекты, похожие на те, которые понравились вам, и порекомендуйте их.

Оба подхода используют меру сходства между строками (пользователями) или столбцами (объектами).

Косинусное сходство

Косинусное сходство измеряет угол между двумя векторами оценок, не учитывая их величину. Значения, близкие к 1, означают очень похожие предпочтения, а значения, близкие к 0, — отсутствие связи.

from sklearn.metrics.pairwise import cosine_similarity

filled = matrix.fillna(0)
user_sim = cosine_similarity(filled)  # user x user

Предсказание на основе пользователей

Чтобы предсказать вашу оценку объекта, вычислите взвешенное среднее оценок, выставленных похожими пользователями, используя сходство в качестве веса. Оценки наиболее похожих соседей влияют сильнее.

Формула предсказания

Предсказанная оценка = сумма(сходство * оценка соседа) / сумма(сходство) по всем соседям, которые оценили объект. Вычитание среднего значения каждого пользователя (центрирование по среднему) корректирует разницу между пользователями, которые обычно ставят высокие или низкие оценки.

import numpy as np

def predict(sims, ratings_for_item):
    mask = ~np.isnan(ratings_for_item)
    if sims[mask].sum() == 0:
        return np.nan
    return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()

Выбор соседей (k)

Вместо всех пользователей оставьте только k наиболее похожих соседей. Это уменьшает шум от непохожих пользователей и ускоряет предсказание. k — настраиваемый гиперпараметр.

Сходство объектов

При CF на основе объектов сходство вычисляется между столбцами объектов, а не между строками пользователей. Рекомендуйте объекты, наиболее похожие на те, которые пользователь уже оценил положительно.

item_sim = cosine_similarity(filled.T)  # item x item

Почему подход на основе объектов стабильнее

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

Проблема холодного старта

CF плохо работает с новыми пользователями или объектами, для которых ещё нет оценок: сравнивать не с чем. Распространённые решения — попросить новых пользователей поставить несколько оценок или перейти к методам на основе содержимого, которые рассматриваются далее.

Формирование рекомендаций

Оцените каждый неоценённый объект для пользователя, отсортируйте результаты по убыванию и верните первые N объектов в качестве рекомендаций.

scores = {item: predict_for(user, item)
          for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]

Проверка знаний

Проверьте свои знания о коллаборативной фильтрации.

Итоги

Вы построили CF на основе матрицы пользователей и объектов, вычислили косинусное сходство, предсказывали оценки как взвешенное среднее оценок соседей с учётом сходства и увидели, почему CF на основе объектов стабильнее подхода на основе пользователей. Далее: факторизация матриц с помощью SVD.

Часто задаваемые вопросы

Урок «Коллаборативная фильтрация: на основе пользователей и объектов» бесплатный?

Да — полный текст урока «Коллаборативная фильтрация: на основе пользователей и объектов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Коллаборативная фильтрация: на основе пользователей и объектов»?

Сходство пользователей, сходство объектов, методы ближайшего окружения, косинусное сходство для оценок Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Коллаборативная фильтрация: на основе пользователей и объектов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Коллаборативная фильтрация: на основе пользователей и объектов
  2. Матричная факторизация с SVD
  3. Фильтрация на основе содержания
  4. Гибридные системы и метрики оценки
← Назад к Learn AI with Python