学习这篇总结后,你也能做出天天快报一样的推荐系统

近日,中国科学院重庆绿色智能技术研究院大数据挖掘及应用中心团队在个性化推荐技术研究,以及推荐算法的个性化和长期有效等方面取得系列进展。

近日,中国科学院重庆绿色智能技术研究院大数据挖掘及应用中心团队在建立长期有效的推荐系统研究方面取得进展,研究人员率先提出了推荐系统个性化的概念,并对推荐系统的个性化和建立长期有效的推荐系统进行了系统研究。

1.1 概述

推荐系统目前几乎无处不在,主流的app都基本应用到了推荐系统。例如,旅游出行,携程、去哪儿等都会给你推荐机票、酒店等等;点外卖,饿了么、美团等会给你推荐饭店;购物的时候,京东、淘宝、亚马逊等会给你推荐“可能喜欢”的物品;看新闻,今日头条、腾讯新闻等都会给你推送你感兴趣的新闻….几乎所有的app应用或网站都存在推荐系统。

究其根本的原因,推荐系统的流行是因为要去解决一个问题:物品越来越多,信息越来越多,而人的精力和时间是有限的,需要一个方式去更有效率地获取信息,链接人与信息。

推荐系统就是为了解决这一问题而诞生的,在海量的物品和人之间,架起来一条桥梁。它就像一个私人的专属导购,根据你的历史行为、个人信息等等,为每个人diy进行推荐,千人前面,帮助人们更好、更快地选择自己感兴趣的、自己需要的东西。今日头条系的feed流在推荐算法的加持下,短短几年的用户增长速度和使用时长数据令人咂舌,受到了市场的追捧和高估值。一夜之间,几乎所有的app都开始上feed流、上各种推荐,重要性可见一斑。

个性化推荐技术是一种帮助人们在海量信息中获取对自己有用信息的技术。大数据时代尤其需要个性化推荐技术。目前实现大数据个性化的技术包括搜索引擎和推荐系统,其中搜索引擎根据用户主动查询关键字被动地返回相匹配的信息,而推荐系统通过对用户的学习理解主动寻找用户可能感兴趣的信息。现代的搜索引擎也在不断植入推荐技术。由于推荐技术的巨大价值,人们进行了大量研究,取得了丰硕成果,是信息技术研究的前沿和热点。

由于信息技术的不断发展和互联网经济的日益繁荣,使得人们被迫生活在一个信息爆炸的大数据时代,人们每天都要被迫面对大量各种各样的信息,从而造成了严重的信息过载问题。如何从海量看似无关的数据中快速有效地筛选和找到用户感兴趣的信息,是迫切需要解决的问题。目前解决信息过载问题主要有两个技术:搜索引擎和推荐系统。搜索引擎往往被动地返回给用户与给定查询关键字相匹配的内容,而推荐系统可以主动预测用户可能感兴趣的信息。事实上,目前搜索引擎也在不断植入推荐技术,因此从长远角度来看,推荐系统将是解决信息过载问题的最有效手段。然而,现有的推荐系统往往使用单一的推荐算法,即使采用多种算法进行混合,因为各个参数在使用时对所有用户也是固定不变的,因此仍然可以视为一个单一的推荐算法。虽然单一的推荐算法可以在一定程度上提升推荐系统的性能,但是这些方法往往忽略了用户兴趣爱好随时间变化、选择行为的差异性以及使用推荐系统的长期效应(如对系统健康性的影响)等这些因素。

1.2 基本架构

我们先把推荐系统简单来看,那么它可以简化为如下的架构。

图片 1img

图1 推荐系统一般流程

不管是复杂还是简单的推荐系统,基本都包含流程:

  • 1)结果展示部分。不管是app还是网页上,会有ui界面用于展示推荐列表。
  • 2)行为日志部分。用户的各种行为会被时刻记录并被上传到后台的日志系统,例如点击行为、购买行为、地理位置等等。这些数据后续一般会被进行ETL(extract抽取、transform转换、load加载),供迭代生成新模型进行预测。
  • 3)特征工程部分。得到用户的行为数据、物品的特征、场景数据等等,需要人工或自动地去从原始数据中抽取出特征。这些特征作为输入,为后面各类推荐算法提供数据。特征选取很重要,错的特征必定带来错误的结果。
  • 4)召回部分。
    有了用户的画像,然后利用数据工程和算法的方式,从千万级的产品中锁定特定的候选集合,完成对推荐列表的初步筛选,其在一定程度上决定了排序阶段的效率和推荐结果的优劣。
  • 5)排序部分。针对上一步的候选集合,会进行更精细化地打分、排序,同时考虑新颖性、惊喜度、商业利益等的一系列指标,获得一份最终的推荐列表并进行展示。

完整的推荐系统还会包括很多辅助模块,例如线下训练模块,让算法研究人员利用真实的历史数据,测试各类不同算法,初步验证算法优劣。线下测试效果不错的算法就会被放到线上测试,即常用的A/B
test系统。它利用流量分发系统筛选特定的用户展示待测试算法生成的推荐列表,然后收集这批特定用户行为数据进行线上评测。

图片 2img

图2 蘑菇街推荐系统架构

推荐系统每个部分可大可小,从图2可知,各部分涉及的技术栈也较多。终端app每时每刻都在不断上报各类日志,点击、展示、时间、地理位置等等信息,这些海量信息需要依赖大数据相关软件栈支持,例如Kafka、spark、HDFS、Hive等,其中Kafka常被用于处理海量日志上报的消费问题。将数据进行ETL后存入Hive数据仓库,就可进行各类线上、线下测试使用。线下的算法会上线到线上环境进行ABtest,ABtest涉及完整的测试回路打通,不然拿不到结果,也无法快速开发迭代算法。线上推荐系统还要关注实时特征、离线特征,在性能和各类指标、商业目标间取均衡。

重庆研究院大数据中心在前期研究中,提出了长期有效的推荐系统,以及推荐系统从个性化算法到算法的个性化等研究课题。这些研究对于解决推荐系统经过长期运行逐渐倾向推荐流行的对象,从而导致推荐算法失效;或者因为推荐系统为了获得全局最优,实际上使得每个用户都不能获得最优推荐等问题,进行了有益探索。

针对这些新的问题,该研究团队首先提出了一种算法参数个性化的推荐算法,通过为不同的用户设置不同的参数来混合两个不同的推荐算法。相比固定参数和单一推荐算法,该方法可以获得更好的推荐效果。其次,该研究团队认为理想的推荐系统,应该是每个用户都采用最适合他们自己的推荐算法,即推荐算法的个性化,在该方面的研究中,研究团队提出了实现推荐算法个性化的两类方法:其一是把选择权交给用户,系统提供某种机制让用户实现算法的自主选择,其二是系统通过深入挖掘每个人的行为模式,自动发现用户最佳的推荐算法,并提供一种机制让用户确认。最后,为了评测使用推荐系统的长期效应,该研究团队提出了一种推荐网络演化模型,并在演化网络上,对推荐算法个性化的推荐系统的长期效应进行了分析。实验结果表明,对于采用单一推荐算法的推荐系统,采用推荐算法个性化的推荐系统在显著提高推荐精度的同时,可以在推荐精度和系统的健康性方面起到很好的均衡作用。

1.3 评测指标

一个东西做得好还是不好,能不能优化,首要前提是确定评测指标。只有确定了评测指标,才能有优化的方向。评测推荐系统的指标可以考虑以下几个方面:

1.3.1 用户满意度

用户作为推进系统的主要参与者,其满意度是评测系统的最重要指标。满意度可以通过做用户调查或线上实验获得。在在线系统中,一般通过对用户行为的统计得到,例如点击率、用户停留时间和转化率等指标度量用户的满意度。

1.3.2 预测精确度precision

预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的离线评测指标。由于离线数据可计算,绝大部分科研人员都在讨论这个指标。

评分预测问题一般使用RMSE、MAE等,TopN预测问题一般使用Recall、Precision等。

图片 3img

图3 常见的指标准确率(Precision)、召回率、误检率

其实目前国内很多地方和资料混淆了两个指标的叫法,把准确度对应英文precision指标。不过尽量还是用英文比较好。

准确度Accuracy = / (TP + FP + TN + FN)

精确度Precision=TP/

1.3.3 覆盖率coverage

覆盖率描述一个推荐系统对物品长尾的发掘能力。覆盖率有很多定义方法,最简单的计算就是推荐列表中的物品数量,除以所有的物品数量。

在信息论和经济学中有两个著名的指标用来定义覆盖率,一个是信息熵,一个是基尼系数。具体公式和介绍可以google。

ps:长尾在推荐系统中是个常见的名词。举个例子帮助大家理解,在商店里,由于货架和场地有限,摆在最显眼的地方的物品通常是出名的、热门的,从而销量也是最好的。很多不出名或者小知名度的商品由于在货架角落或者根本上不了货架,这些商品销量很差。在互联网时代,这一现象会被打破。电子商城拥有几乎无限长的“货架”,它可以为用户展现很多满足他小众需求的商品,这样总的销量加起来将远远超过之前的模式。

Google是一个最典型的“长尾”公司,其成长历程就是把广告商和出版商的“长尾”商业化的过程。数以百万计的小企业和个人,此前他们从未打过广告,或从没大规模地打过广告。他们小得让广告商不屑一顾,甚至连他们自己都不曾想过可以打广告。但Google的AdSense把广告这一门槛降下来了:广告不再高不可攀,它是自助的,价廉的,谁都可以做的;另一方面,对成千上万的Blog站点和小规模的商业网站来说,在自己的站点放上广告已成举手之劳。Google目前有一半的生意来自这些小网站而不是搜索结果中放置的广告。数以百万计的中小企业代表了一个巨大的长尾广告市场。这条长尾能有多长,恐怕谁也无法预知。无数的小数积累在一起就是一个不可估量的大数,无数的小生意集合在一起就是一个不可限量的大市场。

图片 4img

图4 长尾曲线

1.3.4多样性

用户的兴趣是多样的,推荐系统需要能覆盖用户各种方面的喜好。这里有个假设,如果推荐列表比较多样,覆盖了用户各种各样的兴趣,那么真实命中用户的兴趣概率也会越大,那么就会增加用户找到自己感兴趣的物品的概率。

1.3.5 新颖性

新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。要准确地统计新颖性需要做用户调查。

1.3.6 惊喜度

如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。

1.3.7 信任度

用户对推荐系统的信任程度。如果用户信任推荐系统,那就会增加用户和推荐系统的交互。特别是在电子商务推荐系统中,让用户对推荐结果产生信任是非常重要的。同样的推荐结果,以让用户信任的方式推荐给用户就更能让用户产生购买欲,而以类似广告形式的方法推荐给用户就可能很难让用户产生购买的意愿。提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度(transparency),而增加推荐系统透明度的主要办法是提供推荐解释。其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。

1.3.8 实时性

在很多网站中,因为物品具有很强的时效性,所以需要在物品还具有时效性时就将它们推荐给用户。因此,在这些网站中,推荐系统的实时性就显得至关重要。

推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。

1.3.9 健壮性

衡量了一个推荐系统抗击作弊的能力。算法健壮性的评测主要利用模拟攻击。首先,给定一个数据集和一个算法,可以用这个算法给这个数据集中的用户生成推荐列表。然后,用常用的攻击方法向数据集中注入噪声数据,然后利用算法在注入噪声后的数据集上再次给用户生成推荐列表。最后,通过比较攻击前后推荐列表的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算法比较健壮。

1.3.10 商业目标

很多时候,评测推荐系统更加注重商业目标是否达成,而商业目标和盈利模式是息息相关的。一般来说,最本质的商业目标就是平均一个用户给公司带来的盈利。不过这种指标不是很难计算,只是计算一次需要比较大的代价。因此,很多公司会根据自己的盈利模式设计不同的商业目标。

1.3.11 参考资料

推荐系统的评测问题有很多的相关研究和资料,预详细研究可阅读参考:

  • 《推荐系统实战》
  • 《Evaluating Recommendation Systems》
  • What metrics are used for evaluating recommender systems?

推荐算法的演化可以简单分为3个阶段,也是推荐系统由简单到复杂的迭代。

在基于推荐系统研究中广泛应用的一个基准算法(Slope-One算法)方面,研究团队提出了一种个性化算法,该算法针对用户的兴趣行为偏好,计算用户相关的算法参数值,达到推荐个性化的目的。实验结果表明,相对固定参数算法,算法个性化参数可以有效提升推荐精度;为了解决静态推荐算法在面对动态数据集时存在效率低下,甚至无法运行的问题,研究团队提出了一种增量式Slope-One推荐算法,用于降低推荐算法的计算复杂度。主要是基于Slope-One静态算法的更新规则,通过计算数据更新来计算相对应的参数更新。研究结果表明,相对于静态算法,增量式算法在保证推荐精度的同时,具有较短的运行时间;为了验证推荐算法的长期有效性,研究团队提出了一种基于推荐算法驱动的在线系统演化模型,该模型通过二部分图网络来模拟真实在线系统当中用户选择和信息推荐长期交互的复杂过程。基于该演化模型,对目前流行的多种推荐算法长期有效性进行了对比分析。研究结果表明,在推荐算法长期运行过程中,基于优化的推荐算法(如Latentfactormodel,LFM)更有利于保证系统获得较高的推荐精度,而基于实体关系的推荐算法(如Item-based
CollaborativeFilter, ICF)更倾向于保证系统的推荐多样性和新颖性。

由于推荐系统被认为是在大数据时代解决信息过载问题最有希望的技术,该研究在解决推荐系统的长期有效性问题方面取得了一定的突破,在推荐系统个性化发展方面提供了一定的理论基础和技术保障,对设计下一代高效率的推荐系统具有很好的指导作用。

2.1 推荐算法演化

2.1.1 人工运营

这个阶段是随机的,人工根据运营目的,手工给特定类别的用户推送特定的内容。

优点是:

  • 方便推广特定的内容;
  • 推荐的内容易解释;

缺点是:

  • 千人一面,推送的内容一样;
  • 人工筛选,推送,耗费人力巨大;
  • 运营根据自己的知识,主观性比较大;

2.1.2 基于统计的推荐

会基于一些简单的统计学知识做推荐,例如某个内别卖得最好的热门榜;再细致一些,将用户按个人特质划分,再求各种热度榜等。

优点是:

  • 热门就是大部分用户喜好的拟合,效果好;
  • 推荐的内容易解释;

缺点是:

  • 千人一面,推送的内容一样;
  • 马太效应,热门的会越来越热门,冷门的越来越冷门;
  • 效果很容易达到天花板;

2.1.3 个性化推荐

当前阶段的推荐,会基于协同过滤算法、基于模型的算法、基于社交关系等,机器学习、深度学习逐渐引入,提高了推荐效果。

优点是:

  • 效果要相对于之前,要好很多;
  • 千人前面,每个人都有自己独特的推荐列表;

缺点是:

  • 门槛较高,推荐系统搭建、算法设计、调优等等,都对开发者有较高的要求;
  • 成本较高,而且是个长期迭代优化的过程,人力物力投入很高;
admin

网站地图xml地图