У меня следующая проблема: я провожу некоторые исследования по точности рекомендательных алгоритмов, которые в основном используются в настоящее время.
Итак, один из способов измерить их производительность - проверить, насколько хорошо они предсказывают определенное значение при различных размерах данного набора данных, то есть разреженности в матрице рейтингов.
Мне нужно найти способ вычислить среднеквадратичную ошибку (или mae), некоторую метрику, по сравнению с разреженностью в наборе данных.В качестве примера, давайте посмотрим на картинку ниже:
![enter image description here](https://i.stack.imgur.com/mN1mF.jpg)
Вы можете видеть, что это говорит:
«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