在cmfrec项目中利用侧信息评估推荐模型性能的方法

在cmfrec项目中利用侧信息评估推荐模型性能的方法

cmfrec (Python, R, C) Collective (multi-view/multi-way) matrix factorization, including cold-start functionality (recommender systems, imputation, dimensionality reduction) cmfrec 项目地址: https://gitcode.com/gh_mirrors/cm/cmfrec

概述

在推荐系统领域,cmfrec是一个强大的协同矩阵分解工具,特别适用于处理带有侧信息(side information)的推荐场景。本文主要探讨如何在使用侧信息的情况下,正确评估推荐模型的排序性能指标,如nDCG、召回率和精确率等。

数据准备与模型训练

在使用cmfrec进行推荐模型训练时,通常会同时利用用户评分数据和侧信息。以MovieLens数据集为例,我们可以这样构建训练数据:

# 分割评分数据
ratings_train, ratings_test = train_test_split(ratings, test_size=0.2, random_state=123)

# 分割用户侧信息
user_attr_train, user_attr_test = train_test_split(user_side_info, test_size=0.2, random_state=123)

# 分割物品侧信息
item_attr_train, item_attr_test = train_test_split(item_sideinfo_pca, test_size=0.2, random_state=123)

训练带有侧信息的模型时,代码如下:

model_cg = CMF_implicit(
    k=50, lambda_=5, niter=15, use_float=False,
    use_cg=True, finalize_chol=False,
    precompute_for_predictions=False,
    verbose=False
).fit(X=ratings_train,
      U=user_attr_train,
      I=item_attr_train)

评估指标计算的关键问题

在计算推荐指标时,常见的错误是直接使用原始ID而不进行编码转换。MovieLens数据集使用的是非零基ID,而scipy的稀疏矩阵需要零基索引。这会导致维度不匹配的错误:

ValueError: Number of users in 'A' and 'X_test' does not match.

解决方案

正确的做法是对所有ID进行编码转换,确保它们在稀疏矩阵中的位置正确对应。具体步骤如下:

  1. 创建用户ID和物品ID到矩阵行/列的映射
  2. 使用这些映射将原始ID转换为零基索引
  3. 确保训练集和测试集使用相同的映射关系

经过正确的ID编码后,就可以使用推荐系统评估工具计算各种排序指标:

metrics_cg = calc_reco_metrics(
    X_train.tocsr()[:X_test.shape[0],:X_test.shape[1]],
    X_test.tocsr(),
    model_cg.A_[:X_test.shape[0],:],
    model_cg.B_[:X_test.shape[1],:],
    k=10, all_metrics=True
)

评估指标的选择

在评估带有侧信息的推荐模型时,可以考虑以下指标:

  1. nDCG:衡量推荐列表的排序质量
  2. 召回率:评估模型发现相关物品的能力
  3. 精确率:衡量推荐列表中相关物品的比例
  4. 平均精度:考虑相关物品在列表中的位置

这些指标能够全面评估模型在利用侧信息后的推荐效果提升。

实践建议

  1. 始终检查数据ID的索引方式,确保训练和评估时的一致性
  2. 对于大型数据集,可以预先计算并存储ID映射关系
  3. 评估时考虑不同长度的推荐列表(k值)对指标的影响
  4. 对比使用侧信息前后的模型性能,验证侧信息的价值

通过以上方法,可以有效地评估cmfrec模型在利用侧信息时的推荐性能,为模型优化提供可靠依据。

cmfrec (Python, R, C) Collective (multi-view/multi-way) matrix factorization, including cold-start functionality (recommender systems, imputation, dimensionality reduction) cmfrec 项目地址: https://gitcode.com/gh_mirrors/cm/cmfrec

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毛照溪Queen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值