Сокращение количества обучающих примеров для систем рекомендаций по совместной фильтрации в Python - PullRequest
1 голос
/ 03 июля 2019

У меня следующая проблема: я провожу некоторые исследования по точности рекомендательных алгоритмов, которые в основном используются в настоящее время.

Итак, один из способов измерить их производительность - проверить, насколько хорошо они предсказывают определенное значение при различных размерах данного набора данных, то есть разреженности в матрице рейтингов.

Мне нужно найти способ вычислить среднеквадратичную ошибку (или mae), некоторую метрику, по сравнению с разреженностью в наборе данных.В качестве примера, давайте посмотрим на картинку ниже:

enter image description here

Вы можете видеть, что это говорит:

«RMSE как функция разреженности.5000 оценок были удалены из обучающего набора (первоначально содержащего 80000 оценок) в каждой итерации.«

Я использую Python и набор данных Movielens.Знаете ли вы, как я могу добиться этого на упомянутом языке?Есть ли инструмент для этого?

Небольшой пример использования пакета Surprise:

from surprise import SVD
from surprise import Dataset
from surprise import accuracy
from surprise.model_selection import train_test_split

# Load the movielens-100k dataset (download it if needed),
data = Dataset.load_builtin('ml-100k')

# sample random trainset and testset
# test set is made of 25% of the ratings.
trainset, testset = train_test_split(data, test_size=.25)

# We'll use the famous SVD algorithm.
algo = SVD()

# Train the algorithm on the trainset, and predict ratings for the testset
algo.fit(trainset)
predictions = algo.test(testset)

# Then compute RMSE
accuracy.rmse(predictions)

Source to Surprise

...