浅谈影响推荐系统效果的一些因素

大数据
在一个网站或者app中,推荐系统通常会和整个大系统的多个方面有交互,推荐系统本身也有很多的组成部分,再加上整个系统所处的大环境,综合起来会有很多因素影响着一个推荐系统最终效果的好坏。

在一个网站或者app中,推荐系统通常会和整个大系统的多个方面有交互,推荐系统本身也有很多的组成部分,再加上整个系统所处的大环境,综合起来会有很多因素影响着一个推荐系统最终效果的好坏,这里的效果指的是包括准确率、召回率、多样性等等指标在内的一个整体整体效果,不做具体区分。在这里我们试对其中一些主要的因素做一讨论。需要指出的是,这些因素里面并不是所有的我们都可以左右,但是了解它们究竟是什么对我们开发和优化系统还是非常有用的。

[[207325]]

用户因素

与广告系统需要同时面对用户和广告主不同,推荐系统的服务对象只有一个,那就是用户,所以用户的因素很大程度会影响系统的效果。具体来讲,系统中新用户和老用户的比例可以说是对效果影响***的因素之一。大家知道推荐系统是高度依赖用户行为的,而对于无任何行为或者行为非常少的新用户,效果肯定是不会太好的,所以整个系统中新用户的比例越高,系统的整体表现就会越差。

这就是一个典型的推荐系统本身无法左右的因素,而是需要整个系统共同努力来解决。对于这个问题,有两种解决思路:一种是努力优化推荐系统的冷启动算法,这种方法肯定会有效,但是其天花板也是非常低的;而另一种方法,是努力将平台上的新用户转化为老用户,也就是说努力让他们与平台多交互,产生行为,从而脱离冷启动的阶段。这两种方法相比,可能第二种的效果要更好,这主要是因为冷启动算法的优化空间实在有限,而将其转为“热”用户之后,各种优化策略就都可以派上用场了。这也是一种可以在多种场景下借鉴的思路:将未知问题转化为已知问题,而不是创造新问题。

产品设计因素

所谓产品设计因素,指的是推荐出的物品在什么位置、以何种形式展示给用户。如果说推荐算法是一个人的内在,那么产品设计就是一个人的脸。在现在这个看脸的时代,长得好不好看会很大程度上影响算法能量的释放程度。最常见的影响效果的外在因素包括但不限于:

图片的质量。互联网早已进入读图时代,无论任何物品的推荐,例如商品、资讯等,有图片的吸引力一定是大于无图片的。而对于都有图片的情况,图片的大小和清晰度则会对用户是否感兴趣产生很大影响。除了大小和清晰度这种基础的质量以外,图片本身传达出来的信息的质量也很关键,例如对于商品的图片,如果不能在图片中展示出该商品的主要信息和用户关心的内容,那么用户点击的概率就会大大降低,毕竟大家都很忙,点一下也是有代价的。所以对于C2C市场这样以用户自己拍摄的照片为主的场景,引导用户拍出高质量的商品图片就显得尤为重要,这个问题上Airbnb自费给房东拍照片的故事已经足够证明其重要性和意义了。

主题的吸引程度。除了图片以外,以文字形式描述的主题也是非常重要的,毕竟文字还是人们获取信息的一个主要途径。在转转平台上,会有一些偷懒的用户在文字描述中只写类似“如图,私聊”这样的信息,可想而知这样的描述竞争力是比较弱的,同时也会让人觉得卖家对这个商品并不是很上心,所以除非你的商品在其他方面***竞争力,否则是很难得到转化的。

主题吸引人固然重要,但是过于“头重脚轻”,只关注主题质量,而忽略物品本身质量的话,反而会起到反作用,引起用户的反感。这里面最典型的例子就是现在充斥屏幕的各种标题党文章了,为了吸引用户的点击而在起标题上面大做文章,但用户点进去之后发现要么文章质量低下,要么文不对题,长期以往下去,会对平台的信誉度产生很大的负面影响,是一种杀鸡取卵的做法。

所以说,在文字内容描述方面,要尽量信息周全,但也不能背离事实,单纯为了一时的点击率,而牺牲了平台的长远发展。

关键信息是否露出。所谓关键信息,指的是能够左右或影响用户产生点击、转化的信息,除了上面提到的图片和文字描述以外,各个业务场景下都有一些有特点的关键信息 ,例如销量、评论数等等。一部分是因为这些信息本身就会对用户的转化产生影响,另一方面,推荐算法在召回或排序时可能用到了这些信息,那么将这些信息展现出来,一定程度上充当了推荐解释的功能。

是否有干扰信息。这个指的是模块周围是否有影响用户注意力的其他内容,能否让用户比较专心地浏览推荐模块。典型的如一些亮闪闪的广告或者促销/活动banner之类的,放在推荐位的旁边会对用户的注意力产生不同程度的影响,进而影响转化。如果推荐系统在你的业务中是重要的一部分,那么就应该给予它足够专注(dedicated)的空间和位置,而尽量不要将其与其他内容混在一起。在这个纷繁复杂的世界里,很多时候,少就是多(less is more)。

数据因素

推荐系统是典型算法驱动的系统,而如果说算法是系统的骨架,那么数据就是系统的血液。如果数据质量和数量不够,那么任何算法的效果都会打折扣。数据的数量不足是很容易理解的,而且数据量是否充足很多时候和整个网站或APP的发展状况有关,不是我们所能左右的,但数据质量则不同,是可以通过人为的努力而不断加强的。所以这里就简单说一下数据质量方面常见的可能存在的问题。

关键信息缺失。信息缺失是数据质量方面***的问题之一,尤其是影响到算法策略或排序模型的关键信息。例如曝光数据中没有具体曝光位置信息,展现日志中没有用户停留时长的信息等等,这些信息的确实会直接导致算法效果的下降,进而影响最终效果。类似这些问题的出现,很多时候是因为在最初的数据系统建设时,没有算法相关的人员参与,导致没有把这些相关信息设计进去。不过这类问题也相对好解决,只要在发现有缺失之后尽快补充进去就好了。

数据设计欠佳,使用复杂。还有一种情况,就是关键信息都有,没有严重缺失,但是数据结构或表结构设计不够合理,导致获取一个信息要join多张表,或经过复杂的运算逻辑。这种情况下,虽然关键信息都可以获取到,但是由于获取成本高,很有可能在工程实现中被不同程度地做折中,导致数据质量打折扣,影响最终效果。这类问题的解决方法,从大的思路上来讲是要做好算法相关的数据仓库/数据集市建设,使得数据的获取、变动和维护都尽量简单化,减少数据建设的成本,从而提高数据的使用效率。

推荐系统使用到的数据通常是整个网站的数据系统中的一个子集,所以这部分数据质量的把控需要推荐系统的开发人员和数据系统的开发人员共同的努力,才能保证数据的可用性和易用性。

算法策略因素

上面说了这么多,终于说到了推荐系统最核心的算法策略部分。算法策略对效果的影响是毋庸置疑的,但是其影响也是多方面的,具体来讲,算法可能会从以下几个方面影响效果。

算法复杂度影响准确性。复杂度越高的算法整体上准确性较高,无论使用什么具体算法,这个大趋势整体来说是正确的。例如简单的排序模型可能干不过非线性模型,连续值特征有可能干不过离散化后的非线性特征,时序问题上vanilla rnn干不过LSTM等等。在保证数据质量的前提下,用复杂度高的模型是一种能够确保收益的效果提升方式,当然前提是算法要与业务相契合,不能为了复杂而复杂。

算法的稳定性影响效果的稳定性。我们知道在机器学习模型中有一类模型具有低偏差但同时也具有高方差,这里的高方差,指的是在训练出来的模型,在不同的数据集上表现差异会比较大,这种现象还有另外一个名字就是过拟合。如果数据量足够大的话,再加上合理的正则化手段,过拟合是比较容易避免的。所以问题更容易出现在数据量不足的情况下,在这种情况下,应该选择例如线性模型这样简单模型来保证结果的稳定性,甚至可以考虑使用基于规则的算法来保证稳定性。

为什么要关注结果的稳定性呢?这里的原因和我们在学习算法设计分析时要关注算法的平均复杂度是类似的。我们虽然希望得到一个非常准确的模型,但是更希望这个模型在线上运行时稳定的,是可预期的,不会今天效果好,明天效果差。在实际使用中,无论准确率如何,都希望稳定性是有保证的。

工程架构因素

***,我们再来简单说一下工程架构方面的因素。无论什么样的数据,什么样的算法,最终呈献给用户之前都需要具体的工程落地,那么这个落地过程中选择的具体工程架构也会对效果产生影响。

效应耗时的影响。接口的响应速度无疑是工程架构对用户的最直接体现,响应速度慢肯定会导致用户的不耐烦,可能就直接流失掉了。要提高速度,通常会有几类方法,一类是对算法进行优化,减少不必要的计算;二是选择简单算法;三是使用缓存的思路,只在在线部分进行尽量少的计算,其余的计算都放到离线或近线层去做,减少实时计算的负担。

架构设计对问题排查监控的影响。老司机们都知道,只能跑不能修的车是肯定不能上路的。同理,推荐系统的整体架构设计要对问题的排查比较友好,能够在出现问题或者需要验证猜想的时候能够快速在系统中进行定位,而不是现加debug信息现上线,导致问题排查过程被拖长。优秀的工程师会在系统设计的时候就给自己留好后路,而不是在出了问题时才临时抱佛脚。

架构设计对迭代速度的影响。除了响应速度这种较为表面的影响以外,整个架构的设计能否支持快速的策略迭代对效果的隐形影响也是极大的。如果整体架构比较臃肿,模块分离不清晰,基础逻辑缺乏适当抽象同一,会导致数据和策略的迭代无法快速进行,每迭代一次都要走很复杂的流程,而且还不能保证正确性。这样的问题会拖累系统的发展速度,最终影响效果。

总结

除了上面提到的因素,还有很多细节会影响推荐系统的最终效果,所以说我们在提升推荐系统效果时,眼睛不能只盯着一处,而是要具有一定的全局观,能够从全局的角度找到当前对效果影响***的是什么,进而进行针对性优化。对于那些暂时不能改变的因素,也要做到心里有数,在适当的时机进行干预。

责任编辑:赵宁宁 来源: 36大数据
相关推荐

2011-05-10 17:11:46

PR值

2011-07-01 14:25:20

网站收录

2015-08-27 10:49:43

JavaScript开发框架

2009-06-12 10:25:42

Webservices

2011-08-31 10:54:25

Java性能

2009-12-11 14:17:36

ASP.NET Coo

2009-09-23 17:29:54

三层框架

2009-06-23 14:07:14

JavaFX

2014-03-17 10:10:58

CC++编程书籍

2018-02-04 22:29:21

iOS开发

2014-05-13 09:55:13

iOS开发工具

2010-06-27 17:20:17

叶明哲

2022-12-27 09:56:34

架构系统

2009-12-01 16:54:20

ADSL路由器安装

2024-11-21 08:09:51

2018-02-05 22:09:01

云计算CIO企业上云

2018-02-07 08:13:32

机房屏蔽材料布线

2024-07-05 11:05:47

2009-07-11 14:05:21

综合布线智能发展

2019-05-07 10:28:27

点赞
收藏

51CTO技术栈公众号