前言

这段时间一直在做个性化视频推荐系统项目,但主要精力都集中在算法实现和优化上面,对推荐系统并没有一个整体的认识,于是趁着空余时间整理了之前搜集的一些相关的资料并结合自己的理解,针对推荐系统从以下几个方面进行简单的总结阐述,里面的部分内容都是来源《推荐系统实践》这本书,若有错误,望指正。

1、什么是推荐系统?

关于这个问题,我非常认同项亮《推荐系统实践》这本书中提到的观点,即推荐系统是解决用户面临的信息过载问题,推荐系统是连接信息消费者和信息生产者的桥梁。那何为信息过载问题,即当人们面临大量的信息时,无法从大量的信息中进行快速甄别并获取自己想要的信息。人们在解决信息过载问题时大概经历了如下三个过程:
1)分类目录
在数据量不是很大的情况下,人们通过对信息进行分类整理从而解决信息过载问题,比如图书分类存放,导航网站等。

2)关键词搜索
随着数据量的增加,分类目录方式已不能有效解决人们面临的信息过载问题,因为分类目录只能对数据进行大类别的归类整理,无法满足人们更细粒度的数据获取需求,基于关键词搜索的方式有效解决了上述问题,并极大的实现了人们的信息获取需求,比如图书关键词检索,搜索引擎等。

3)个性化推荐
关键词搜索虽然能有效解决人们面临的信息过载问题,但前提是需要有关键词,即只解决了人们在有明确目的前提下的信息需求,当人们在无明确目的情况下变得不可用,于是就出现了推荐系统。推荐系统能够在用户无明确目的的前提下推荐用户可能感兴趣的信息,解决了用户无明确目的情况下的信息过载问题,比如视频推荐、广告推荐等。

2、推荐系统的基本架构

一个完整的推荐系统应该包括以下五个部分,具体如下图所示:

推荐系统及其核心内容理解

1) 数据采集系统
推荐系统需要有数据才能工作,一般的数据来源包括用户行为日志采集和爬虫抓取的网页数据,完善的数据采集系统能够有效支撑各种推荐引擎并提高推荐系统的推荐效果。

2) 数据ETL及存储系统
通过数据采集系统获取的数据需通过进一步的数据清洗、转换以及数据关联等ETL操作才能应用至推荐引擎系统,同时需要选择不同的存储系统对采集和ETL处理过的数据进行持久化存储。

3) 推荐引擎系统
不同应用场景和不同的数据源,采用的推荐算法是不一样的,完整的推荐系统应该综合考虑各种场景,能够提供多种推荐策略获取相应的推荐结果。

4) 结果召回及排序系统
在实际的推荐过程中,并不需要启用所有的推荐引擎,而是根据具体需求和推荐策略选择其中一种或者几种推荐引擎并输出推荐结果,这个过程可理解成结果召回。通过各个推荐引擎召回的结果需进行重新排序,并将重排后的结果最终展现给用户。

5) 用户交互系统
用户交互系统的作用主要有两个:一是将推荐结果展现给用户,转化成价值输出;二是提供用户对推荐结果的反馈途径,从而不断完善整个推荐系统。

3、推荐系统的测试方法

与以往的软件项目不同,推荐系统的测试方法主要有以下三种:
1) 离线实验
推荐引擎系统中各种推荐算法的评测方式往往是通过离线实验的方式实现,且主要从准确率、召回率和覆盖率这几个指标进行评估。

2) 用户调查
通过用户调查的方式对推荐系统进行抽样测试,能够从用户满意度、多样性等评测指标维度方面直观的发现系统的一些明显问题,但测试结果的说服力不强。

3)A/B测试
A/B测试相当于完全模拟系统的正式环境进行测试,测试结果具有说服力,主要关注推荐系统的用户满意度指标。

4、推荐系统的评测指标

1)用户满意度
在A/B测试中根据用户在推荐结果页面的点击率、停留时长和转化率这几个指标进行衡量。
个人觉得,推荐系统最重要的评测指标之一是用户满意度,一个让用户满意的推荐系统才是推荐系统的最终目的。

2)预测准确率
在离线实验中根据推荐系统预测结果的准确率和召回率进行衡量。
其他的评测指标还有覆盖率、多样性、新颖性、实时性等,结果召回及排序系统中大都基于这些指标进行综合排序。

相关文章: