推荐系统实践和系统接触了一些,偶然读到百分点推荐系统设计一文,有些感想总结如下:
1.推荐的行业差异性
a)行业共有的:实时性,高可用性等主要体现在架构上
b)差异性主要体现在推荐的内容上:有的购买重复性高,具有周期性,有的产品就不能重复购买,例如相同款式的包包等,这里需要对行业进行细分,这个差异主要区别在特征上,时间特性,内容特性等。例如在不同的时间如节假日相关的物品,话题。
2.推荐的领域
a)基于全网的,主要在搜索,侧重内容,难点在理解用户的准确需求
b)垂直类的,相对来说特定某一个领域或者行业,对用户的兴趣和物品的特征需要有较清晰的把握。
c)现在垂直类的不限于利用用户在本站产生的行为,需要全网或者其它站点提供用户的信息,比如用户的搜索,看的内容,广告等,大部分利用cookie的传递,这需要不同站点协作。基于全网的分析可以给推荐系统对全局热点话题,兴趣的把握。
d)全网合作性的加强,未来互联网是一个云,每一个网站都是云的一种服务,它们协作起来为用户提供更好的服务。可以联系到现在的商品内容的关联分析,特别是垂直类的发展,未来一项服务可能需要多个网站共同完成,现在的ad exchange;很多类似的服务有往这发展的趋势,网站服务之间的耦合是个问题,但从个人观点看,应该很容易解决。
3.架构的设计方面
1)数据采集和分析
数据我觉得可以分为全网和垂直类的,不管是哪一种,数据量都是非常大,需要采用高效的分布式存储架构,按照内容的不同采用不同的存储架构。在这个阶段数据采集之后需要对之进行分析包括建立索引,抽取特征,找出热点等信息。按照user,item进行特征的挖掘和提取。实时性在这部分主要是新数据的采集,用户行行为的产生等能够及时的反馈到推荐引擎
2)各种推荐引擎
a)这部分主要利用1的数据进行各种推荐算法,需要输入,输出足够抽象,方便扩展。
b)这部分训练的模型和权重要满足高性能的查询和更新。方便实时的更新预测模型,可以使用各种实时计算各种来实时的更新。
3)推荐服务器
这部分主要满足推荐服务请求和重排序等功能。
4)测试和迭代
主要是方便测试和加速迭代
系统架构我觉得主要要满足健壮性,服务要能承受很高的并发,出错少,方便测试和回归。其次,可扩展性,数据量大,无论是数据还是模型的存储,更新,查询都需要实现快速的部署和恢复。
以上的架构需要更多思考,因为知识所限,偏颇之处在以后会做更新!