JAVA开源协同过滤算法,推荐算法:协同过滤算法的介绍

一、什么是推荐算法

互联网的出现和普及给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但随着网络的迅速发展而

带来的网上信息量的大幅增长,使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息

的使用效率反而降低了,这就是所谓的信息超载(informationoverload)问题。解决信息超载问题的一个办法

是推荐系统。

推荐系统,就是通过分析用户的行为,兴趣偏好,进行个性化计算,由系统发现用户的兴趣点,最终将用户感兴

趣的信息、产品等推荐给用户的个性化信息推荐系统。

推荐系统不仅能为用户提供个性化的服务,还能和用户之间建立密切关系,让用户对推荐产生依赖。

推荐系统现已广泛应用于很多领域,其中最典型并具有良好的发展和应用前景的领域就是电子商务领域。

二、什么是协同过滤

协同过滤,CF (Collaborative Filtering)是推荐系统中的一种推荐算法。

主要有两个基本的算法:基于用户的协同过滤( user-based CF) 和 基于项目的协同过滤( item-based CF )

1)基于用户的协同过滤推荐机制

机制原理:基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。

它的基本假设是:喜欢类似物品的用户可能有相同或者相似的偏好。

JAVA开源协同过滤算法,推荐算法:协同过滤算法的介绍_第1张图片

上图示意出基于用户的协同过滤推荐机制的基本原理:

假设用户A喜欢物品A,物品 C,用户B 喜欢物品B,用户C喜欢物品A,物品C和物品 D;从这些用户的历史喜好信息中,我们可以发现用户A和用户C的偏好是比较类似的,同时用户C还喜欢物品D,那么我们可以推断用户A可能也喜欢物品D,因此可以将物品D推荐给用户A。

2)基于项目的协同过滤推荐机制

机制原理:根据所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。

JAVA开源协同过滤算法,推荐算法:协同过滤算法的介绍_第2张图片

上图示意出基于项目的协同过滤推荐机制的基本原理:

对于物品A,根据所有用户的历史偏好,喜欢物品A 的用户都喜欢物品C,得出物品A 和物品C 比较相似,而用户C 喜欢物品A,那么可以推断出用户C 可能也喜欢物品C。

基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。

3)两种算法的总结

最初的时候基于项目的协同过滤推荐机制是在基于用户的机制上改良的一种策略。

对于电商类站点中,项目的个数是远远小于用户的数量的,而且项目的个数和相似度相对比较稳定,这样基于项目的机制会比基于用户的实时性更好一些。

但是对于新闻,社交,博客类网站,情况是相反的,这类网站项目数量是海量的,并且更新十分频繁的,这时候选用基于用户的机制会更稳定一些。

所以选择哪种推荐策略要看具体的应用场景。

你可能感兴趣的:(JAVA开源协同过滤算法)