首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据朋友的前十名名单推荐相册

根据朋友的前十名名单推荐相册
EN

Software Engineering用户
提问于 2011-12-29 21:13:44
回答 2查看 165关注 0票数 2

只是想知道是否有人能在协作过滤方面提出一个很好的算法,我可以用它来根据十大列表来建议音乐选择。

这是一个个人项目,我是一个私人音乐博客的成员,其中大多数用户最近提交了“2011年最佳”名单。名单的大小范围(例如10-50张专辑),没有排名。大约有100张单子。

基本上,希望给每个用户一些建议,根据他们的列表与其他人的相关。

EN

回答 2

Software Engineering用户

发布于 2012-01-03 12:22:20

很简单,真的-

首先用uid表示每个用户,列表中的每个曲目表示为歌曲id。现在您将获得用户/项矩阵表示。

对于数据集中的每个用户,运行贾卡德相似性。它非常简单,它只是查看用户之间的歌曲交汇处。

然后以X最相似的用户为例,它可以形成用户最近的邻域。在此之后,您只需对存在的每首歌进行加权计数。每个计数的加权是基于相似性评分的。得分最高的歌曲是你应该推荐的。

这种方法不需要排名或与每首歌相关的分数。

票数 2
EN

Software Engineering用户

发布于 2011-12-29 21:27:30

有许多协作过滤方法您可以研究。作为另一种选择,我将建议一些非常简单的东西,这应该很容易编码,并且应该给出合理的结果。警告:这只是我的头顶,可能是非常低劣的一些更成熟的方法,但这似乎是一个有趣的话题,所以我要尝试一下。

由于列表没有排序,所以可以比较每个列表和另一个列表。普通相册的数量应该很容易确定(假设相册名称没有拼错)。在其他人的名单上,用它作为彼此相册的权重。因此,在与您至少共享一张相册的人的列表中,您没有的每一张相册都将出现在推荐列表中,并按您与该用户的相册进行加权。然后,您将汇总所有其他用户的每一张专辑的分数。

所以,如果你和用户B有5张专辑,你会给用户列表上的每个专辑分配一个5的权重,而这个列表不在你的名单上。移动到用户C时,您也会这样做。如果用户C和你有3张普通相册,那么用户B和用户C的列表中没有的任何相册现在都有8的重量。

你可能想增加列表的重量,在那里你分享了很多专辑,所以这些建议甚至更有价值。换句话说,一个包含10个普通相册的列表的权重可能大于10,因此,在您共享一张专辑的情况下,它将包含超过10个列表。这应该很容易调整和测试。

一旦您遍历了所有其他列表,您就可以将推荐列表截断到前10位或合理的位置。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/127795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档