推荐系统基础
个性化推荐概述
1.1 推荐系统概述
首先,需要申明一点的就是推荐系统!=推荐算法。推荐系统是一套完善的推荐机制,包括前期数据的准备、具体推荐的过程(这个过程可能是一套复杂的算法模型,也可能是一个简单的规则,也可能是多种模型的混合结果等等)、后期数据的预测、AB测试效果评估等等。
1.2 推荐算法模型概述
根据数据源的不同推荐引擎可以分为三类
1、基于人口的统计学推荐(Demographic-based Recommendation)
2、基于内容的推荐(Content-based Recommendation)
3、基于协同过滤的推荐(Collaborative Filtering-based Recommendation)
基于内容的推荐:
根据物品或内容的元数据,发现物品或内容的相关性,然后基于用户以前的喜好记录推荐给用户相似的物品,如图所示:
上图给出了基于内容推荐的一个典型的例子,电影推荐系统,首先我们需要对电影的元数据有一个建模,这里只简单的描述了一下电影的类型;然后通过电影的元数据发现电影间的相似度,因为类型都是“爱情,浪漫”电影 A 和 C 被认为是相似的电影(当然,只根据类型是不够的,要得到更好的推荐,我们还可以考虑电影的导演,演员等等);最后实现推荐,对于用户 A,他喜欢看电影 A,那么系统就可以给他推荐类似的电影 C。
而基于协同过滤推荐又分为以下三类:
(1)基于用户的协同过滤推荐(User-based Collaborative Filtering Recommendation)
基于用户的协同过滤推荐算法先使用统计技术寻找与目标用户有相同喜好的邻居,然后根据目标用户的邻居的喜好产生向目标用户的推荐。基本原理就是利用用户访问行为的相似性来互相推荐用户可能感兴趣的资源,如图所示:
上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户A喜欢物品A、物品C,用户B喜欢物品B,用户C喜欢物品A、物品C和物品D;从这些用户的历史喜好信息中,我们可以发现用户A和用户C的口味和偏好是比较类似的,同时用户C还喜欢物品D,那么我们可以推断用户A可能也喜欢物品D,因此可以将物品D推荐给用户A。
User-based算法存在两个重大问题:
数据稀疏性。一个大型的电子商务推荐系统一般有非常多的物品,用户可能买的其中不到1%的物品,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。
算法扩展性。最近邻居算法的计算量随着用户和物品数量的增加而增加,不适合数据量大的情况使用。
(2)基于物品的协同过滤推荐(Item-based Collaborative Filtering Recommendation)
根据所有用户对物品或者信息的评价,发现物品和物品之间的相似度,然后根据用户的历史偏好信息将类似的物品推荐给该用户,如图所示:
上图表明基于项目的协同过滤推荐的基本原理,用户A喜欢物品A和物品C,用户B喜欢物品A、物品B和物品C,用户C喜欢物品A,从这些用户的历史喜好中可以认为物品A与物品C比较类似,喜欢物品A的都喜欢物品C,基于这个判断用户C可能也喜欢物品C,所以推荐系统将物品C推荐给用户C。
(3)基于模型的协同过滤推荐 (Model-based Collaborative Filtering Recommendation)
基模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测推荐。
1.3 其他相关知识
1.3.1 冷启动
所谓冷启动,即在推荐系统初期时,没有任何用户与物品的交集信息,即无用户的行为轨迹,无法通过类似协同的方式进行过滤推荐,这种时候,我们就称推荐系统处于冷启动状态。
这种情况,我们需要尽快的累积起第一批用户行为轨迹。我们可以通过基于内容的推荐,或者做一些其他类似的操作,快速有效的进行物品推荐。
一段时间后,累积到一定的用户行为时,整个系统就能够正常使用协同过滤等方式进行推荐了。
但是,针对于新加入的用户,或者新加入的物品,同样也是出于冷启动状态的,这个时候,我们通过需要对这种物品或者用户做特殊的处理。
1.3.2 长尾效应/马太效应
所谓长尾效应,在推荐系统中的体现即,部分优质物品,购买的人数较多,即与其相关的的用户行为轨迹会较多。
这样,在协同过滤推荐中,由于我们主要的依据就是我们的历史行为行为数据,所以这种物品得到推荐的机会就越多。
这样,不断循环迭代,得到推荐的物品都集中在少数的一些物品中,而大部分物品是没有被推荐的机会的。
这就造成了造成长尾现象。
而马太效应的意思是,通俗点说就是,强者愈强,弱者愈弱。而长尾的直接体现就是马太效应。
通常来讲(当然也有特殊情况),一个推荐系统,如果长时间处于长尾之中,就会造成推荐疲劳,推荐的效果就会下降。
所以,很多时候,挖掘长尾是推荐系统不可缺少的部分。即,我们需要把尾巴部分 并且是有价值的部分给适当的展示出来。
挖掘长尾的方法很多,其中一种常见的方式就是给热点物品适当的降权。比如物品,我们为热点物品进行权重下降,这样在最终推荐的结果中,非热点物品得到推荐的机会就增大,从而适当的挖掘了长尾。
1.4 AB分流测试
对于推荐系统来说,离线的评测其实并不能很准确的判断一个推荐算法的好坏。最准确的判断应该是线上实际效果观察。
而AB测试是推荐系统评测的标准做法,即我们在线上同时运行两种算法模型,让流量分别走不通的算法,最终通过收集结果数据进行比较算法的优劣。
通过AB测试必须满足以下几个条件:流量必须能够控制,这是为了保证线上效果的稳定性;必须保证流量的随机性,这样的结果才具有说服力。