我正在使用SGD矩阵因式分解(python),使用recommendations数据集来提出建议。我有一个网站,让用户给出的反馈,是正面或负面的项目是否是一个好的推荐为一部特定的电影。
我想知道我是否可以在矩阵分解中使用这个反馈。我不能百分之百确定我会怎么做。
例如,我会有一个向量,比如
m1 m2 m3
m1 0 0 0
m2 5 0 -4
m3 0 0 0其中,m2-m1是5分,所以举个例子,没有人认为它是负的,5人认为它是好的。另一种为m2-m3为-4,所以推荐效果很差。
任何帮助都将不胜感激。
编辑:答案的回应
我目前正在使用稀疏矩阵的用户项目评级,并使用偏见。
我一直试图添加更多的输入源,并使用以下方法创建包含类型表示的属性矩阵:
for genre in item_genres:
genres[genre] = 1
self.attribute_item_matrix[i] = sum(list(genres.values()))
pred = self.global_mean + self.bias_user[u] + self.bias_item[i] +np.dot(self.P[u, :],(self.Q[:, i]+self.attribute_item_matrix[i]))但是,我不认为这是正确的,因为它最终失败并导致nan错误。
我一直在关注这篇论文推荐系统的矩阵分解技术
谢谢
发布于 2018-05-02 22:26:55
在我看来,最好使用user-movie矩阵,创建一个更有意义的sparse matrix。通过这样做,如果您已经知道了选择的polarity ( positive、negative或neutral ),您也可能会得到like或dislike的一些intensity分数,比如rating。现在,如果您只想将它们分类为likes、neutral和dislike,您可以分别指定1、0和-1。当你有很多电影和很多用户时,这种方法会有更多的意义。此外,这还可以帮助您建立user-user、movie-user和movie-movie关系。这些关系可能会帮助您了解和探索更多关于recommendation engines的信息。
m1 m2 m3 m4
u1 -1 0 -1 1
u2 1 1 -1 0
u3 0 0 1 0
u4 -1 1 1 0如果您想要添加rating而不是只添加polarity,只需添加数字缩放的0-1即可。我亲自编写了hybrid recommendation engines,它同时嵌入了collaborative filtering和context based filtering模型。我建议你在人际关系方面多做些工作,并尝试探索更多关于like或dislike偏见的可能性,电影信息/演员的关联--导演在电影中的影响力和相似性等等。我希望这个解释能有所帮助。
发布于 2019-01-01 10:28:24
有些分解模型是这样的,您可以搜索“基于会话”、“基于篮”、“顺序”等。但他们的表现往往不太好。您还可以使用这些数据创建一个分类或回归模型,然后将其与一些混合模型中的常规用户项分级三胞胎混合起来。
https://datascience.stackexchange.com/questions/31110
复制相似问题