首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于书店应用的推荐系统

问用于书店应用的推荐系统
EN

Stack Overflow用户
提问于 2011-02-26 10:01:25
回答 4查看 3.3K关注 0票数 3

嘿,我正在学习一些像Amazon.com这样的网站上使用的推荐算法。所以我有一个简单的java (spring hibernate postgres)书店应用程序,在book中有title、category、tag和author属性。为了简单起见,书中没有任何内容。一本书必须通过书名、类别、作者和标签来识别。对于登录到该应用程序的每个用户,我应该能够推荐一些书籍。每个用户都可以查看一本书,将它们添加到购物车中,并随时购买。因此,在数据库中,我存储了每个用户查看一本书的次数、购物车中的书以及用户购买的书。目前没有评级选项,但也可以添加。

那么,谁能告诉我,我可以用什么算法来为每个用户演示一些书籍推荐?我想让它变得非常简单。这不是一个出售的项目,但只是为了扩大我对推荐算法的知识。因此,假设总共只有30本书(5个类别,每个类别6本书)。如果有人能告诉我应该用什么属性来计算两个用户之间的相似度,以及如何使用推荐的算法,那将是非常有帮助的。

提前谢谢。SerotoninChase。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-26 10:34:17

作为一个特定的具体示例,一个选项是“最近K个邻居”算法。

为了简单起见,假设您只有10本书,并且您只跟踪每个用户查看每本书的次数。然后,对于每个用户,您可能有一个数组int timesViewed[10],其中timesViewed[i]的值是用户查看书号i的次数。

然后,您可以使用相关函数(例如Pearson correlation )将该用户与所有其他用户进行比较。计算当前用户c和另一个用户o之间的相关性,得到一个介于-1.0和1.0之间的值,其中-1.0表示“此用户c与其他用户o完全相反”,1.0表示“此用户c与其他用户o相同”。

如果计算c和每个其他用户之间的相关性,就会得到一个结果列表,显示该用户的查看模式与每个其他用户的查看模式有多相似。然后,您选择最相似的结果(例如5、10、20) (因此算法得名),即相关分数最接近1.0的K用户。

现在,您可以对这些用户的每个timesViewed数组进行加权平均。例如,我们将假设averageTimesViewed[0]是这K个用户中每个用户的timesViewed[0]的平均值,通过他们的相关性得分进行加权。然后对每个averageTimesViewed[i]执行相同的操作。

现在您有了一个数组averageTimesViewed,粗略地说,它包含与c具有最相似浏览模式的K个用户浏览每本书的平均次数。推荐averageTimesViewed得分最高的书,因为这是其他用户最感兴趣的书。

通常情况下,将用户已经看过的书排除在推荐之外也是值得的,但在计算相似度/相关性时,将这些书考虑在内仍然很重要。

还要注意,这可以简单地扩展到考虑其他数据(如购物车列表等)。此外,如果需要,您可以选择所有用户(例如,K =用户数),但这并不总是产生有意义的结果,而且通常选择一个合理的较小K就足以获得良好的结果,并且计算速度更快。

票数 1
EN

Stack Overflow用户

发布于 2011-02-26 10:05:29

你可以在here上找到所有的信息和常用算法的实现(品味框架)库。

除了其他发帖人的建议之外,我还可以推荐另一本书《Collective Intelligence in Action》

票数 2
EN

Stack Overflow用户

发布于 2011-02-26 10:09:17

阅读“集体智能编程”。它会让你尝到它的滋味,还有更多。

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

https://stackoverflow.com/questions/5124590

复制
相关文章

相似问题

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