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

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

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

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

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

Жанр:

Серия:

isbn:

isbn:

СКАЧАТЬ диагональной матрицы Sigma

      Sigma = np.diag(Sigma)

      return U, Sigma, Vt

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

      def recommend_movies(user_id, ratings, U, Sigma, Vt, num_recommendations=5):

      user_ratings = ratings[user_id]

      predicted_ratings = np.dot(np.dot(U[user_id, :], Sigma), Vt)

      # Исключение уже оцененных фильмов из рекомендаций

      predicted_ratings[user_ratings != 0] = -1

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

      return top_movies

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

      user_id = 0

      k = 2 # Размерность скрытого пространства

      U, Sigma, Vt = perform_svd(ratings, k)

      recommended_movies = recommend_movies(user_id, ratings, U, Sigma, Vt)

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

      for movie_id in recommended_movies:

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

      ```

      В данном примере используется алгоритм Singular Value Decomposition (SVD) для выполнения сингулярного разложения матрицы оценок пользователей. Полученные матрицы U, Sigma и Vt представляют собой аппроксимацию исходной матрицы оценок с использованием латентного пространства низкой размерности.

      Функция `perform_svd` выполняет сингулярное разложение матрицы оценок с помощью функции `svds` из модуля `scipy.sparse.linalg`. Разложение возвращает матрицы U, Sigma и Vt.

      Функция `recommend_movies` принимает идентификатор пользователя, матрицу оценок, а также матрицы U, Sigma и Vt в качестве аргументов. Она вычисляет предсказанные оценки для пользователя и рекомендует фильмы, имеющие наивысшие предсказанные оценки, исключая уже оцененные фильмы.

      В приведенном примере выводится список рекомендованных фильмов для пользователя с идентификатором 0. Количество рекомендаций задается параметром `num_recommendations`.

      Singular Value Decomposition (SVD), или Сингулярное разложение, является мощным алгоритмом линейной алгебры, который используется в различных областях, включая рекомендательные системы, сжатие данных, обработку изображений и многие другие.

      Сингулярное разложение позволяет представить матрицу в виде произведения трех матриц: U, Sigma и Vt. Формально, для матрицы A размерности m x n SVD определяется следующим образом:

      A = U * Sigma * Vt,

      где U – матрица размерности m x m, содержащая левые сингулярные векторы,

      Sigma – диагональная матрица размерности m x n, содержащая сингулярные значения,

      Vt – транспонированная матрица размерности n x n, содержащая правые сингулярные векторы.

      Сингулярные значения в матрице Sigma являются неотрицательными числами и упорядочены по убыванию. Они представляют собой меру важности каждого сингулярного вектора и определяют вклад каждого сингулярного вектора в исходную матрицу A.

      При использовании SVD в рекомендательных системах, например, матрица A представляет собой матрицу оценок пользователей, где строки соответствуют пользователям, а столбцы – элементам (фильмам, продуктам и т.д.). SVD разделяет матрицу на скрытые факторы, представленные сингулярными векторами, и связывает их с пользователями и элементами. Это позволяет рекомендовать пользователям элементы, которые им могут понравиться, на основе сходства с другими пользователями или элементами.

      Алгоритм SVD имеет несколько вариаций, которые могут быть использованы в зависимости от контекста и требований задачи. Некоторые из них включают Truncated SVD (SVD СКАЧАТЬ