只是想知道是否有人能在协作过滤方面提出一个很好的算法,我可以用它来根据十大列表来建议音乐选择。
这是一个个人项目,我是一个私人音乐博客的成员,其中大多数用户最近提交了“2011年最佳”名单。名单的大小范围(例如10-50张专辑),没有排名。大约有100张单子。
基本上,希望给每个用户一些建议,根据他们的列表与其他人的相关。
发布于 2012-01-03 12:22:20
很简单,真的-
首先用uid表示每个用户,列表中的每个曲目表示为歌曲id。现在您将获得用户/项矩阵表示。
对于数据集中的每个用户,运行贾卡德相似性。它非常简单,它只是查看用户之间的歌曲交汇处。
然后以X最相似的用户为例,它可以形成用户最近的邻域。在此之后,您只需对存在的每首歌进行加权计数。每个计数的加权是基于相似性评分的。得分最高的歌曲是你应该推荐的。
这种方法不需要排名或与每首歌相关的分数。
发布于 2011-12-29 21:27:30
有许多协作过滤方法您可以研究。作为另一种选择,我将建议一些非常简单的东西,这应该很容易编码,并且应该给出合理的结果。警告:这只是我的头顶,可能是非常低劣的一些更成熟的方法,但这似乎是一个有趣的话题,所以我要尝试一下。
由于列表没有排序,所以可以比较每个列表和另一个列表。普通相册的数量应该很容易确定(假设相册名称没有拼错)。在其他人的名单上,用它作为彼此相册的权重。因此,在与您至少共享一张相册的人的列表中,您没有的每一张相册都将出现在推荐列表中,并按您与该用户的相册进行加权。然后,您将汇总所有其他用户的每一张专辑的分数。
所以,如果你和用户B有5张专辑,你会给用户列表上的每个专辑分配一个5的权重,而这个列表不在你的名单上。移动到用户C时,您也会这样做。如果用户C和你有3张普通相册,那么用户B和用户C的列表中没有的任何相册现在都有8的重量。
你可能想增加列表的重量,在那里你分享了很多专辑,所以这些建议甚至更有价值。换句话说,一个包含10个普通相册的列表的权重可能大于10,因此,在您共享一张专辑的情况下,它将包含超过10个列表。这应该很容易调整和测试。
一旦您遍历了所有其他列表,您就可以将推荐列表截断到前10位或合理的位置。
https://softwareengineering.stackexchange.com/questions/127795
复制相似问题