Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 书店应用推荐系统_Java_Hibernate_Postgresql_Spring Mvc_Collaborative Filtering - Fatal编程技术网

Java 书店应用推荐系统

Java 书店应用推荐系统,java,hibernate,postgresql,spring-mvc,collaborative-filtering,Java,Hibernate,Postgresql,Spring Mvc,Collaborative Filtering,嘿,我正在尝试学习一些在亚马逊网站上使用的推荐算法。所以我有一个简单的java(SpringHibernatePostgres)书店应用程序,在书中有属性title、category、tags和author。为了简单起见,书中没有任何内容。一本书必须通过书名、类别、作者和标签来识别。对于每个登录到应用程序的用户,我应该能够推荐一些书籍。每个用户都可以查看一本书,将其添加到购物车并随时购买。所以在数据库中,我存储了每个用户看一本书的次数,他的购物车中的书以及用户购买的书。目前没有评级选项,但也可以

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

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

提前谢谢。
血清素追踪。

您可以在网站上找到所有信息和常见算法的实现(Taste框架)库


除了其他海报所建议的之外,我还可以推荐另一本书——《编程集体智慧》。它会让你尝到它的味道,还有更多。

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

为了简化事情,假设你只有十本书,你只跟踪每个用户浏览每本书的次数。然后,对于每个用户,您可能有一个数组
int timeswiew[10]
,其中
timeswiew[i]
的值是用户查看图书编号
i
的次数

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

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

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

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

通常也值得将用户已经阅读过的书籍排除在推荐之外,但在计算相似性/相关性时,保留这些书籍仍然很重要


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

您在这里有很大的自由度。建立两个用户之间的相似性度量,然后建立一个单调函数,将相似用户对书籍的评分作为输入,并返回每本书的分数。标准解决方案是使用矩阵乘法。

谢谢。让我想想你说的话,看看如何实施。如果我被困在什么地方,我会给你回电话的。再次感谢。@5-羟色胺:没问题。如果有什么东西不能完全凝胶,或者你需要让你的算法启动并运行,请告诉我…:)非常感谢。我一定去看看。老子,谢谢你的回答。这个问题已经结束了。我得到了答案。我接着用相似性、推荐和协作过滤做了一些精彩的实验:)啊,我错了。你愿意和我们分享你的劳动成果吗,还有下一个谷歌搜索这个问题的人?