我在Maksims N.Volkovs和Guang Wei Yu的论文《推荐系统中二元反馈的有效潜在模型》中发表。
它是使用基于模型的方法产生推荐,SVD是使用来自协作过滤方法的邻居相似性信息。
因此,基本上,作者不是像在SVD中那样分解用户评分矩阵R(M users * N songs)
进行推荐,而是说分解用户歌曲预测矩阵S(M users * N songs)
或稀疏矩阵S(M users * top-k predicted songs)
。
因此,我们得到
Ur,$r,Vr = sklearn.utils.extmath.randomized_svd(', n_components = 1000)
其中r = SVD rank = n_components.
我们使用Ur
和Vr
:生成预测
S(u, v) = Ur(u, :) * Vr(v, :).T
其中u = user, v = item v , T = transpose
我使用协作过滤方法生成了S(M*top-k)
矩阵,并将其提供给randomized_svd
但上述方法产生的预测并没有产生准确度(truncated mAP@500
,我使用的性能指标,mAP=0.01),而作者对相同的kaggle百万歌曲挑战数据产生了0.14的良好mAP。
阅读论文并说出问题所在是一件很难的事情,但如果有人事先知道并能帮助我,那就太好了。
如果不回顾整个项目,这将是一个艰难的过程。以下是你可以做的几件事…1)检查你是否正在以论文中描述的方式预处理数据集并将其拆分为训练集和测试集。数据预处理和分割的差异可能对模型的性能产生重大影响2)模型的性能可能对超参数的选择敏感。您可以尝试使用不同的n_components值进行实验,看看这是否能提高性能。
我一直讨厌看那些报纸:-)尝试联系作者(LinkedIn或其他来源)。他们大部分时间都会做出回应——至少对我来说是这样。