一、HULU的推荐系统
总结:葫芦的推荐系统,至少在他blog中写的比较简单。更多的是对推荐系统在线部分的一种描述,离线部分我猜想也是通过分布式计算或者不同的计算方式将算法产生的数据存储进入一种介质中,供推荐系统在线部分调用。系统的整个流程是这样的,首先获取用户的行为,包括(watch、subscribe、vote),这样行为会到后台获取show-show对应的推荐数据。同时这些行为也会产生对应的topic,系统也会根据topic到后台获取topic-show对应的推荐数据。两种数据进行混合,然后经过fliter、explanation、ranking这一系列过程,最后生成用户看到的推荐数据。
二、淘宝的推荐系统
总结:淘宝的推荐系统,描述了推荐引擎搭建的整体架构,包括离线的分布式计算和存储、监控、数据统计和分析、实验平台等。给我们搭建推荐引擎提供了很好的建议。整体流程大致这样。通过后台的分布式计算,将算法产生的算法结果数据存储进入一种介质中,首推hbase。然后,通过一种叫做云梯的机制将算法结果推入中间层介质中,供推荐系统在线部分调用。在线部分提供引擎和实验分流,用户的行为将存储进入hadoop中,数据统计分析平台由hive来搭建,主要用来分析和统计hadoop中的用户行为log。
三、google的实验平台
总结:google提供了一种分层实验模型的架构,通过不同层之间的随机分流来保证不同实验层之间的正交,从而保证不同实验层之间不会发生相互影响的情况。google主要把这套分层实验平台用于广告推荐当中,我们的推荐引擎可以借鉴这种模式。整体流程大致为,把用户的请求分配到不同的domain当中,如果是在线的domain则用通用的流程,可以不进行实验;如果用户该次请求进入的是实验的domain,则通过在随机的在不同实验层之间选择实验,为该次请求打上实验tag,然后后面的部分则根据不同的实验tag进行实验。
四、我们的推荐系统
综上所述,我们的推荐系统可以以taobao的那个推荐引擎为基础,搭建整体一个推荐生态系统,包括推荐引擎、实验平台、分布式计算和存储、日志分析等。在线部分,可以采用google的分层实验平台来完成我们对不同算法效果的AB-test。而在线的流程可以借鉴hulu的处理流程。