Машинное обучение. Джейд Картер
Чтение книги онлайн.

Читать онлайн книгу Машинное обучение - Джейд Картер страница 12

Название: Машинное обучение

Автор: Джейд Картер

Издательство: Автор

Жанр:

Серия:

isbn:

isbn:

СКАЧАТЬ прошлом, то они будут иметь схожие предпочтения и в будущем. Коллаборативная фильтрация использует матрицу оценок пользователей (например, оценки фильмов или товаров) для нахождения схожих пользователей или схожих товаров и рекомендует пользователю те элементы, которые оценили похожие пользователи.

      Пример программы, реализующей коллаборативную фильтрацию для рекомендаций фильмов:

      ```python

      import numpy as np

      # Пример матрицы оценок пользователей

      ratings = np.array([

      [5, 4, 0, 0, 0, 0],

      [0, 0, 4, 0, 5, 0],

      [0, 0, 0, 2, 4, 5],

      [4, 0, 0, 0, 0, 4]

      ])

      # Вычисление схожести пользователей на основе корреляции Пирсона

      def compute_similarity(user1, user2):

      mask = np.logical_and(user1 != 0, user2 != 0)

      if np.sum(mask) == 0:

      return 0

      return np.corrcoef(user1[mask], user2[mask])[0, 1]

      # Функция рекомендации фильмов для пользователя

      def recommend_movies(user_id, ratings, num_recommendations=5):

      num_users, num_movies = ratings.shape

      # Вычисление схожести пользователя с остальными пользователями

      similarities = []

      for i in range(num_users):

      if i != user_id:

      similarity = compute_similarity(ratings[user_id], ratings[i])

      similarities.append((i, similarity))

      similarities.sort(key=lambda x: x[1], reverse=True)

      # Выбор топ-N наиболее похожих пользователей

      top_similar_users = [similarity[0] for similarity in similarities[:num_recommendations]]

      # Получение рекомендаций на основе оценок похожих пользователей

      recommendations = np.zeros(num_movies)

      for user in top_similar_users:

      recommendations += ratings[user]

      recommendations = np.where(ratings[user_id] == 0, recommendations, 0)

      top_movies = np.argsort(recommendations)[::-1][:num_recommendations]

      return top_movies

      # Пример использования

      user_id = 0

      recommended_movies = recommend_movies(user_id, ratings)

      print(f"Рекомендованные фильмы для пользователя {user_id}:")

      for movie_id in recommended_movies:

      print(f"Фильм {movie_id}")

      ```

      В данном примере используется матрица оценок пользователей `ratings`, где каждая строка соответствует пользователю, а каждый столбец соответствует фильму. Оценки фильмов могут принимать значения от 0 до 5, где 0 обозначает отсутствие оценки.

      Функция `compute_similarity` вычисляет схожесть пользователей на основе корреляции Пирсона. Она сравнивает оценки двух пользователей, игнорируя нулевые значения, и вычисляет коэффициент корреляции.

      Функция `recommend_movies` принимает идентификатор пользователя и матрицу оценок в качестве входных данных. Она вычисляет схожесть пользователя с остальными пользователями, выбирает топ-N наиболее похожих пользователей и выдает рекомендации на основе их оценок.

      Пример использования демонстрирует, как получить рекомендации фильмов для определенного пользователя. Результатом программы является список идентификаторов фильмов, которые рекомендуется пользователю с указанным идентификатором.

      Заметьте, что в данном примере использована СКАЧАТЬ