cru*_*fux 8 python matlab sparse-matrix pandas scikit-learn
我正在撰写文章:Maksims N. Volkovs和Guang Wei Yu 论文链接中有关推荐系统中二进制反馈的有效潜在模型.
它是通过使用来自协同过滤方法的邻居相似性信息,使用基于模型的方法,SVD来产生推荐.
所以基本上作者不是R(M users * N songs)像在SVD中那样分解用户评级矩阵进行推荐,而是分解用户歌曲预测矩阵S(M users * N songs)或稀疏矩阵S(M users * top-k predicted songs).
我们得到了,
Ur,$r,Vr = sklearn.utils.extmath.randomized_svd(', n_components = 1000)
Run Code Online (Sandbox Code Playgroud)
哪里 r = SVD rank = n_components.
我们确实使用Ur和 生成预测Vr:
S(u, v) = Ur(u, :) * Vr(v, :).T
Run Code Online (Sandbox Code Playgroud)
哪里 u = user, v = item v , T = transpose
我S(M*top-k)使用协同过滤方法生成矩阵并馈送到randomized_svd
但是通过上述方法产生的预测不会产生准确性(truncated mAP@500我正在使用的性能测量,mAP = 0.01),而作者已经为相同的kaggle百万歌曲挑战数据挑战链接产生了0.14的良好mAP .
要求阅读论文并说出错误是很多,但如果有人事先知道并且可以帮助我,那将是很好的.
如果这是一个错误的论坛,问这样的Q请告诉我另一个.
小智 1
如果不审查整个项目,这是一项艰巨的任务。您可以执行以下操作... 1) 检查您是否正在预处理数据集并将其拆分为训练集和测试集,方法与本文所述相同。数据预处理和分割的差异会对模型的性能产生重大影响2)模型的性能可能对超参数的选择敏感。您可以尝试使用不同的 n_components 值进行试验,看看是否可以提高性能。
我一直讨厌阅读这些论文:-) 尝试联系作者(LinkedIn 或其他来源)。他们大多数时候都会做出回应——至少对我来说是这样。