Python 如何对LightFM电影推荐系统的用户项目交互矩阵进行交叉验证?

Python 如何对LightFM电影推荐系统的用户项目交互矩阵进行交叉验证?,python,machine-learning,cross-validation,recommender-systems,lightfm,Python,Machine Learning,Cross Validation,Recommender Systems,Lightfm,我有一个来自movielens数据集的交互矩阵(scipy.sparse.csr_矩阵),其中包含用户对电影的评价,我正在构建一个带有item_特性的LightFM模型。现在我将矩阵分为训练和测试,但如何对其进行交叉验证?我如何衡量效率 !pip install lightfm from lightfm import LightFM, cross_validation from lightfm.evaluation import precision_at_k, auc_score train,

我有一个来自movielens数据集的交互矩阵(scipy.sparse.csr_矩阵),其中包含用户对电影的评价,我正在构建一个带有item_特性的LightFM模型。现在我将矩阵分为训练和测试,但如何对其进行交叉验证?我如何衡量效率

!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))

lightFM可用的评估指标为auc_分数和precision@k. 您正在计算度量、精度和auc_分数。 您的模型的效率可以通过查看

  • 测试的auc_分数-告诉您,考虑到预测的所有电影,您的模型在预测用户的正确推荐方面有多好。不考虑预测的电影顺序/等级

  • 用于测试的精度-告诉您在生成前k个(在您的情况下为10个)预测时模型的精度。如果您想在生成前n名推荐时判断您的模型,则此选项将有所帮助