基于物品的协同过滤算法的java代码实现_协同过滤算法


协同过滤算法是推荐算法中最经典的类型。今天我们简单说下 基于用户的协同过滤和基于ITEM的协同过滤。

基于用户的协同过滤:

逻辑:

先使用统计技术寻找与目标用户有相同喜好的邻居,然后根据目标用户的邻居的喜好产生想目标用户的推荐。基本原理就是利用用户访问行为的相似性来相互推荐用户可能感兴趣的资源。

举例说明:


基于物品的协同过滤算法的java代码实现_协同过滤_02


如上图:用户A喜欢物品A和物品C;用户B喜欢物品B;用户C喜欢物品A、物品C和物品D;从这些用户历史喜好中,我们可以发现用户A和用户C喜好还是比较类似的,同时用户C还喜欢物品D,所以可以将物品D推荐给用户A。

是不是很好理解?

基于ITEM的协同过滤:

逻辑:根据所有用户对物品或者信息的评价,发现物品与物品之间的相似度,然后根据用户的历史喜好信息将类似物品推荐给该用户。

举例说明:


基于物品的协同过滤算法的java代码实现_协同过滤算法_03


如上图:用户A喜欢物品A和物品C,用户B喜欢物品ABC,用户C喜欢物品A,从这些历史喜好中,可以认为物品A和物品C比较类似,喜欢A的都喜欢C,基于这个判断可以把物品C推荐给用户C。

使用场景:(基于用户VS基于ITEM)

新闻/博客类:

一般物品>用户,并且物品更新频繁,因此计算用户相似度计算量小,所以一般采用基于用户协同过滤;

(电商)在线网站:

一般用户数量>物品,且物品是相对稳定的,因此计算物品相似度计算量小。所以一般采用基于物品协同过滤。

我们经常可以看到网站上这样提示:购买该物品的用户也购买了XX物品,这个是基于什么呢?当然,以上只是对协同过滤简单说明,要深入,还是需要不断研究的。