程序员人生 网站导航

揭开推荐系统的神秘面纱

栏目:互联网时间:2014-10-16 18:48:08


开篇


先推荐几篇关于推荐的文章,个人感觉对于入门很有实际意义,是IBM的工程师写的,如下:

探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探

探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤

探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类


推荐系统是什么


推荐,就是把你可能喜欢的商品,推到你的面前。构建一个推荐系统,就是构建如何把商品推到你面前的过程。

经常听到人说,推荐就是算法,在接触推荐系统之前,我也以为推荐就是算法,一说到算法,可能就以为很高深了,也很唬人,立马产生一种膜拜之感,也就变得神秘起来了。

当我真正完完整整的接触到推荐系统,达到一个入门级水平,可以独立构建一个千万级PV电子商务网站的推荐系统之后,以前的认知也改变了,我现在的观点是:

推荐是一个整体的计算过程,在编码中,关于算法的部分所占的工作量可能1%都不到;

构建一个千万PV级别的推荐系统相对容易,一天的日志不过几百M,计算过程中的数据,单台机器的内存可以存下,当PV达到几亿几十亿时,就需要进行稍微复杂一点的分布式计算了;

推荐的计算方法很多,如何选择,效果难以预料,只有通过横向和纵向多做效果分析,才有意义。


推荐的计算过程


计算的数据来源


Web访问日志、购买、收藏,这些实际是用户的行为数据;

用户,这是分析的基础数据;

商品,这是分析的基础数据;


计划日志的存储格式


如何标记同一个未登陆用户;如何找出未登陆用户和登陆用户是用一个人。

这是很重要的,这是以后日志分析计算的基础。


计算过程第一步


根据用户行为数据,分析出用户和商品的关系;用户<-->浏览、用户<-->购买、用户<-->收藏等。


计算过程的第二步


根据第一步计算的数据,分析中常用的推荐结果,比如根据浏览数据,计算出“看了又看”,根据购买数据,计算出“买了又买”等。


计算过程的算法(或者叫规则)


算法,是广义的,数学公式;规则,是小众的,公司自己定义的,复杂自己场景的业务规则,在计算过程的第二步,计算最终的推荐结果时,大部分使用的都是自行定义的业务规则。

以推荐“看了又看”为例,根据一个商品,如何推荐出其他商品呢:

可以就根据这个推荐类型的基本含义,一个商品  --->  看了这个商品的很多人,又看了  --->  很多的商品,这就是推荐结果了,但是这个推荐结果有非常非常多,如何推荐呢?

可以推荐购买次数最终的,推荐最新的,推荐两个商品的View人群最相似的......


推荐结果的接口提供


这就没有什么了,都是通用的。


推荐系统的核心


基于业务的,推荐效果的评价体系;

基于技术的,大数据量时的分布式计算


代码说明


前置项目:这个相关项目就比较多了,网站、商品、订单,都有相关性。

最新源码:git clone git@github.com:pumadong/cl-recommend.git 。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐