Как я могу выполнить перекрестную проверку матрицы взаимодействия пользователя с элементом для рекомендательной системы LightFM mov ie? - PullRequest
0 голосов
/ 09 мая 2020

У меня есть матрица взаимодействий (scipy.sparse.csr_matrix) из набора данных Movielens с рейтингом mov ie от пользователей, и я создаю модель LightFM с item_features. Прямо сейчас у меня есть матрица, разделенная на обучающую и тестовую, но как мне сделать для нее перекрестную проверку? Как измерить эффективность?

!pip install lightfm
from lightfm import LightFM, cross_validation
from lightfm.evaluation import precision_at_k, auc_score

train, test = cross_validation.random_train_test_split(user_item, test_percentage=0.25)
model_lightfm = LightFM(loss='warp', learning_rate=0.01, k=10)
model_lightfm.fit(train, item_features=item_features, epochs=50)

def recommend(model, user_id):
  n_users, n_items = train.shape
  best_rated = ratings_df[(ratings_df.userId == user_id) & (ratings_df.rating >= 4.5)].movieId.values

  known_positives = metadata.loc[metadata['MOVIEID'].isin(best_rated)].title_clean.values

  scores = model.predict(user_id, np.arange(n_items), item_features=item_features) 
  top_items = metadata['title_clean'][np.argsort(-scores)]

  print("User %s likes:" % user_id)
  for k in known_positives[:10]:
    print(k)

  print("\nRecommended:")
  for x in top_items[:10]:
    print(x)

recommend(model_lightfm, 10)


train_precision = precision_at_k(model_lightfm, train, k=10, item_features=item_features).mean()
test_precision = precision_at_k(model_lightfm, test, k=10, item_features=item_features, train_interactions=train).mean()

train_auc = auc_score(model_lightfm, train, item_features=item_features).mean()
test_auc = auc_score(model_lightfm, test, item_features=item_features, train_interactions=train).mean()

print('Precision: train %.2f, test %.2f.' % (train_precision, test_precision))
print('AUC: train %.2f, test %.2f.' % (train_auc, test_auc))

1 Ответ

0 голосов
/ 02 июня 2020

Для lightFM доступны следующие оценочные метрики: auc_score и precision@k.. Вы вычисляете как метрики, Precision, так и auc_score. Об эффективности вашей модели можно судить, посмотрев на

  1. auc_score для тестирования - показывает, насколько хороша ваша модель, с точки зрения предсказания правильных рекомендаций для пользователей с учетом всех предсказанных фильмов. Не учитывает порядок / рейтинг предсказанных фильмов.

  2. precision_at_k для теста - Сообщает вам точность вашей модели при генерации лучших k (10 в вашем случае) прогнозов. Помогает, если вы хотите оценить свою модель при составлении топ-n рекомендаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...