分享

请教,基于用户浏览情况如何计算用户相似度


        近日有一个需求:读取HBase数据库的用户行为数据表,根据用户的浏览书籍数据,计算用户相似度,然后根据用户相似度进行每个用户的书籍推荐和好友推荐。
        目前的想法是根据用户浏览次数,进行计算评分数据的变更,将用户浏览数据变更为评分数据,使用Map<MapuserId,<bookId,Rating>>来计算pearson相关系数,作为用户相似度的根据,但是一旦用户多起来,遍历计算的时间就增加了不少。请教各位,有没有什么方式能更方便地计算一个RDD里面的用户浏览情况计算的相似度,或者有其他什么好的方式计算用户相似度呢?

已有(4)人评论

跳转到指定楼层
NEOGX 发表于 2018-6-5 21:10:02
这个问题有点复杂了。因为设计的内容比较多。
首先可以对用户定义标签,也就是根据用户浏览的书籍,对用户进行分类。比如有的用户就喜欢看小说,有的喜欢文学。这就是用户的分类。
根据用户的分类,进行相似度推荐,找到他们的最大集合。其实就是找到他们的共同点。
比如下图

1.png

2.png

至于算法,真的是太多了。
楼主可以了解下协同过滤。

推荐文章

协同过滤介绍和简单推荐系统的实现
http://www.aboutyun.com/forum.php?mod=viewthread&tid=17678

推荐系统:个性化推荐-协同过滤

http://www.aboutyun.com/forum.php?mod=viewthread&tid=19128


基于spark用户协同过滤算法的实现
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20100


如何使用Spark ALS实现协同过滤
http://www.aboutyun.com/forum.php?mod=viewthread&tid=13620


当然还有更多
https://blog.csdn.net/yixianfeng41/article/details/61917158

https://blog.csdn.net/sinat_33741547/article/details/52740010






回复

使用道具 举报

听太阳说话 发表于 2018-6-6 14:17:46
NEOGX 发表于 2018-6-5 21:10
这个问题有点复杂了。因为设计的内容比较多。
首先可以对用户定义标签,也就是根据用户浏览的书籍,对用户 ...


感谢大佬回复,因为现在做的是一个小说阅读的推荐系统,之前采用的是针对用户对书籍的评分进行评分推荐,使用了Spark的ALS来进行计算并已经完成。但是现在有一个需求,需要针对用户的浏览记录计算用户相似度,从而对根据相似用户进行书籍推荐。目前我想到一个思路:直接读取数据库中用户的浏览记录数据,对两两用户的记录利用Jaccard相似系数的原理,使用交集书籍数目/并集书籍数目,从而达到计算相似度的目的,请问是否有可行性呢?
回复

使用道具 举报

nextuser 发表于 2018-6-6 18:35:03
听太阳说话 发表于 2018-6-6 14:17
感谢大佬回复,因为现在做的是一个小说阅读的推荐系统,之前采用的是针对用户对书籍的评分进行评分推荐 ...

推荐本来就是不断演化的过程,没有最优,只有更优。楼主当前的思路也是可以的,根据用户相似度最大的,推荐他们彼此的书籍。及好友。
回复

使用道具 举报

fly2015 发表于 2018-6-7 11:40:50
听太阳说话 发表于 2018-6-6 14:17
感谢大佬回复,因为现在做的是一个小说阅读的推荐系统,之前采用的是针对用户对书籍的评分进行评分推荐 ...

楼主的思路 也是可以的,但是个人感觉这种思路最后可能会导致相似的用户很少,是不是可以考虑把书事先分好类,然后只要浏览的是同类 就分配一定的相似权重,当然如果浏览同一本书,相似权重肯定会很大。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条