一、推荐的相关概述
美国著名杂志主编凯文·凯利认为科技的影响力是巨大的,这样的影响不仅限于我们的思想方面,更多的在于已融入我们的生活。这一技术同样被应用到了互联网内容领域,传统的内容生产方式已经逐步被新的算法技术改变。面对内容信息,受众不再处于被动接收的地位,而是有更多主动选择信息的机会,身份也由“受众”转变为“用户”。“用户体验”、“用户需求”、“用户参与”和“用户感知”等成了APP 开发的主要关注点。
顺着着这一趋势的发展,如在新闻领域,以个性化推荐机制为主要发布方式的“今日头条”拔得头筹,通过对用户的信息、头像、搜索痕迹等数据进行分析,预测用户可能喜欢的内容,以达到准确推荐的目的。与此同时,个性化推荐致使聚合类新闻 APP 越来越多,虽然信息过量以及同质化现象越来越严重,“信息茧房”问题也随之产生,但是这并不妨碍推荐依然是主流的模式。
似乎不知不觉,推荐已经成为互联网业务的标配。
从用户侧来看,当世界上泛信息甚至垂类信息越来越庞大,当用户越来越无法积极主动的去探寻信息,当人人依然希望看到的是自己喜好的内容;
从平台侧来看,当平台希望用户在平台留存的时间越来越长,当平台想让用户第一时间想起适合自己的平台,当平台渴望用户流量足够的商业转化;
一切似乎都在暗示,推荐绝对是增加用户粘性的主流功能,也是连接用户和信息的重要手段,优秀的推荐系统可以极大的提升用户对产品的认可,从而提升产品的各项数据指标。
从文本的推荐,到电商的推荐,再到视频的推荐,一切物品都在推荐的背景下,帮助平台具备更加成熟的商业化模式。
算法推荐系统(Recommender system)是人工智能数据挖掘的分支领域,它会通过分析用户的兴趣偏好,建立个人专属的信息推荐列表。随着互联网通信技术发展,各种内容信息呈现出指数增长的趋势,人们逐渐从信息匮乏的盲区走向信息过载的矛盾中。由于人的时间精力成本是有限的,在海量信息中获取满足个人需求的信息,将会非常考验用户的信息检索能力。亚马逊、淘宝等电商平台是最早应用算法推荐系统的互联网产品之一,它们可以通过分析用户的购买路径,从海量市场中有效过滤出与用户相关的商品,从而提升用户的购买率。Web2.0 时代的特征之一便是内容生产模式的低门槛性,UGC 随之成为了主流内容生产模式,算法推荐也逐渐被运用在了内容生产平台,如短视频 App 抖音、快手等,由于 UGC 具备丰富性与海量性的特征,连同PGC等内容载体,为用户定制个性化的信息推荐流也尤为重要。然而,算法推荐技术在迭代的过程中,仍然会需要突破许多瓶颈,不符合用户需求的推荐将会影响到用户的使用体验。
目前,算法推荐在软件信息工程领域是研究热点之一,技术主要分为基于人口统计学的推荐算法(主要根据用户的定类数据推荐信息)、基于内容的推荐算法(主要根据内容与用户喜好的匹配度推荐信息)、协同过滤型算法(主要根据相近喜好的用户群体推荐信息)、加权混合推荐算法(多种算法分权重结合推荐信息)等。尽管算法推荐是解决信息过载的有效途径,但仍然有许多技术问题需要解决,譬如无法对推荐内容做更具体有效的分析;挖掘用户隐性需求的过程中,缺乏科学的数据拓展逻辑;原始数据存在稀疏性和冷启动失误等问题。
麻省理工学院的尼古拉斯·尼葛洛庞蒂教授提出的“个人日报”模式(Daily Me,信息为个人而服务的报纸),如今已经在今日头条 App 上实现。随后,凯斯·桑斯坦开始表达对算法推荐信息的担忧,提出信息茧房(Information Cocoons)理论批判人们会被自己的喜好造茧,无法获取喜好之外的其他信息,帕里策则指出互联网的信息过滤技术,容易将用户困在算法技术的气泡中,出现过滤气泡现象(The Fliter Bubble)。从技术推导的角度,研究算法推荐有其科学性和严谨性,但算法推荐应用落地对接的是用户本身。Frederik et al. 从用户角度出发探究算法推荐的影响时发现,这一过程其实并未发生“信息茧房”的现象,原因是这种新生技术并不成熟,用户不会将其作为实质的信息来源。这与本研究对算法推荐使用的观察现象不谋而合,用户在浏览 App 的过程中,依然会保留自主选择内容的意识,判断推荐流中的信息价值。
我国互联网用户市场巨大,截止2020年中国已经有9.13亿网民,现如今由于人民生活富足因此更追求心灵上的享受。用户无法从海量的物品中选择出符合自己口味的内容或商品,这就为推荐算法工作者提出了更高的要求。在这数十年间,互联网工作者提出的音乐推荐算法不断发展,力求为用户提供更为准确的音乐,使用户有更好的音乐体验,由刚开始单一的协同过滤算法到现在的混合推荐方法,因为算力的提高,由原来的机器学习模型不断转化为深度学习模型,由单机版的计算转化为分布式计算,运行效率大大提高。但是,现阶段主流的推荐算法各有利弊,当利用多种策略混合进行推荐的时候,我们希望可以找到平衡时间效率和精确程度的算法来提髙用户体验,增加用户的粘滞性,带来更多的流量,为此大部分的平台提出了基于混合策略的推荐算法。
但是同时也希望辩证来说,算法一定是中立的、公正的、普世的。所以在算法在推荐的应用过程中出现的种种问题,如大数据杀熟、如信息茧房、如恶性爬虫,这些都是在人类应用这些技术的时候的缺陷,值得去神思和改进,不能因此去批判一个科学的底层思维。在某种意义上,推荐一定是能够推动这个社会的一个生产力。
二、推荐在不同行业的应用
在 20 世纪 90 年代,第一个个性化邮件过滤推荐系统 Tapestry 诞生。至此,各个领域开始使用推荐系统,例如电子商务领域、电影和视频领域、社交网络领域、基于位置的服务领域等。
电子商务网站是推荐系统的应用领域之一。亚马逊在电子商务网站中最为著名,其被RWW(读写网)称为“推荐系统之王”。亚马逊网站内的各类产品都应用到了推荐系统。Jeff Bezos,身为亚马逊 CEO,他曾说过,与其它电子商务网站相比,个性化推荐系统是亚马逊网站的最大优势,该系统能够让每一个用户拥有属于自己的在线商店,并能在此商店中找到自身感兴趣的商品。
在电影和视频网站中,较为著名的 Netflix 网站,可谓成功使用了推荐系统,在 2006年开始举办 Netflix Prize 推荐系统比赛,该比赛推动了推荐系统的发展,且无论是在业界还是学术界,推荐系统的影响力都得到了进一步提高。
以 Facebook 为代表的社交网络应用,主要在三方面应用个性化推荐技术:用户社交网络信息的挖掘,借助得到的有用信息向用户推荐个性化物品;信息流的会话推荐;用户好友的推荐。Facebook 还推出一个推荐 API,即 Instant Personalization,它可以向用户推荐其朋友喜欢的物品。目前已有很多网站都在使用该 API。
随着移动设备的快速发展,用户位置信息的获取也变得较为容易。位置信息,一种很重要的上下文信息,利用用户的位置信息可以为用户推荐服务,该服务距离用户较近且用户感兴趣。在实际应用中,基于位置的服务往往不单独存在,常与社交网络相结合。如Foursquare 的探索功能,就是向用户推荐其好友在附近的一些行为。
利用碎片时间进行电子文章阅读,是很多用户每天都会做的事情。如今,网络上存在着很多阅读工具。Zite,可实现个性化阅读的工具,根据用户历史阅读记录,挖掘出用户的兴趣点并利用此兴趣点对用户的文章列表不断更新,向用户提供个性化服务。除 Zite 外,新闻阅读网站 Digg 也开始使用推荐系统,根据其数据统计显示,该网站使用推荐系统后,用户 digg 行为更加活跃,digg 总数明显提高。
以下是本人列出来的几个在不同领域大力应用推荐策略的产品:
序号 | 行业 | 说明 | 举例-国内 | 举例-国外 |
1 | 电商 | 商品信息推荐 | 阿里、京东 | Amazon |
2 | 新闻 | 科技新闻推荐 财经新闻推荐 | 今日头条、网易新闻 | |
3 | 社区 | 社区帖子推荐 社区专题推荐 社区小组推荐 | 豆瓣 | Quora、Reddit |
4 | O2O | 到店推荐 外卖推荐 出行推荐 | 美团 滴滴 | Foods、DoorDash Uber、Grab |
5 | 旅行 | 旅游国家推荐 旅游城市推荐 旅游景点推荐 | 携程、蚂蜂窝 | Arinab、Spottly |
6 | 音乐 | 单曲推荐 歌单推荐 | 网易云、QQ音乐 | La、Pandora |
7 | 视频 | 短视频推荐 综艺节目推荐 直播推荐 | 爱奇艺、B站 | Netflix、hulu、Youtube |
8 | 金融 | 股票产品推荐 股票信息模块推荐 基金产品推荐 保险产品推荐 | 雪球、东方财富 | Motif Investment、Better Investment |
9 | 社交 | 社交朋友推荐 征婚对象推荐 | Soul 珍爱网、世纪佳缘 | Facebook Match |
三、推荐系统或者推荐的流程
一般来说,推荐基本就是清洗 召回 排序 展示四个步骤,再简化点,其实也可以理解为就是召回和排序两个步骤,这也是一般的推荐的架构,这里之所以有清洗,是希望业务人可以多站在内容的数据和用户的数据角度去做好比较充分准备,因为这毕竟是决定推荐质量的决定性基础;而展示,是让不同的用户看到不同的内容的前端模样,直接决定了用户对平台的推荐结果和能力的体验感知。
推荐系统提供的个性化服务的方式受到诸多因素的影响,如傖息资源的类型、应用场景等,实现架构也略有不同,通常推荐系统的架构下面会提到。由前端展示页面、后端的日志系统和推荐算法三个部分构成。其中,推荐算法通常分召回和排序两个阶段。组成推荐算法的元素主要包括:用户、信息或物品以及两者之间的关系。用户在使用推荐系统时所产生的个体信息如用户行为、偏好、兴趣等被记录下来作为用户的特征,推荐系统从这些特征信息中挖掘出与用户相关的多维度信息,应用推荐相关算法,建重用户特征模型。
随手展示几张业务上关于推荐系统的架构,大致逻辑是基本一致的,表现出来的架构图可能出于不同的思维和作用,略有差异。
1、某音乐平台推荐系统架构:
2、某电影平台推荐系统架构:
3、某新闻平台推荐系统架构:
4、某食谱平台推荐系统架构:
详细来描述下这四个环节:
1、第一部分是清洗。我理解的清洗算是一种数据准备工作,包含了业务数据和用户数据。业务数据主要跟推荐物品相关,包含物品的标签、类型、关系等信息;用户数据则是跟用户相关,包含用户数据的埋点、标签、画像等信息。这两类信息互相交叉,形成有效的逻辑关联关系,保证后续推荐的物品可以跟用户关联起来,形成推荐列表。这些数据准备工作其实是非常庞大的,也是直接影响推荐质量的关键环节,比如物品的标签不够体系、维度不够充分、分类维度颗粒度不够、关系建立的没有逻辑性...都会导致推荐和排序的学习,最终影响推荐的质量;同样的对于用户数据,埋点信息不够全面、行为数据挖掘的不够充分、画像建立的不够体系也都会跟业务数据无法形成充分的联动和黏合,发挥出足够的推荐效应。
2、然后不管是召回还是排序,其实一个核心算法就是,计算某一物品的点击率,换句话说,就是通过对内容的拆解,换算成某个用户对某个物品的点击率测算,进而通过点击率的数值进行排序,展现给用户。所以说,推荐的核心工作,如果再抽象点,再量化点,再本质点,或者说模型和工程上的思路就是通过这个维度来做的。
前面概述其实已经提到了,推荐的算法是多种多样的,如:协同过滤算法、基于内容的推荐、基于模型的推荐、混合模型推荐...这里的每个算法,也都是通过基于某个维度的关联因子来设计的某种计算策略得到的候选集,其实这里本身已经有了一个打分的过程,不管是否是直接得分获取达到一定阈值的候选集,还是二分类得到想要的某个分类候选集,还是直接符合某个规则的候选集,本质都是符合一定点击概率的候选集合。这个过程中,为了保证获取内容的丰富性,一般是有多种召回算法共同使用的,上述提到的混合模型推荐就是类似的原理。多种召回算法可以为候选集带来比较宽的范围,并且假设这些内容都是用户可能会喜欢的。当然了,这就带来另外一个问题,那就是内容的重复性了:可能不同算法召回的候选集都有相同的内容,这样在召回的过程的重复内容就需要在某个环节去做去重的工作,保证用户不会在一次推荐过程中看到同样的两条内容。同时,也要保证的是,历史推荐过的内容的过滤。这两个去重的工作一般是一个额外的工作逻辑,跟召回和排序一起保证物品推荐的进程。
3、在从海量物品集中生成一小部分候选集后,候选排序部分需要使用更详细的特征为这部分候选集进行打分排序,返回前k个评分最高的物品推荐给用户。候选生成技术从海量的数据中快速筛选出一小部分用户可能感兴趣的物品,保证了选择物品的覆盖率,候选排序技术则是对这部分候选物品进行再详细的筛选,保证了最后的准确率。候选排序使用了机器学习和深度学习等技术,通过优化某些指标,如点击率、收藏率、新颖度、物品质量、用户停留时间等,得到一个评分模型,来对推荐的物品进行打分和排序。候选排序过程中使用的特征一般包含三类,用户特征,新闻特征和上下文特征。用户特征包括用户历史浏览,用户基本信息如用户年龄,性别和教育情况等,新闻特征包括新闻种类,新闻热度,新闻质量和新闻历史点击情况等,上下文特征包括时间、位置、使用设备和网络状况等。候选排序模型经过研宄发展从最初的线性模型逻辑斯特回归,到常用的GBDT,FM再到将FM和神经网络结合的NFM模型等,模型结构愈见复杂,挖掘的特征信息也越深。
4、最后是前端展示。前端展示其实更多是产品设计和体验设计了。比如对于最简单的资讯列表,无图、单图、多图的样式,专题聚合的样式...这就是样式设计的逻辑了;同时,还有的就是为了保证推荐内容的多样性,除了通过不同的算法模型给予不同维度的内容推荐,这里也会出现不同的形态的内容,比如财经领域,其实个股的基本信息、选股工具、行情模块…等都是可以作为推荐的一个物品类型去做推荐的。这些不同形态的内容如何去做融合推荐和推荐展示的样式,也是一个业务人需要去做大量工作的。
四、实践案例:财经新闻的推荐业务框架、流程、计划
图其实是一个财经内容推荐的框架结构。
我们也是从清洗、召回、推荐和展示四个维度来说明下这四个环节,因为篇幅有限,部分环节主要还是从逻辑思路和简单角度着手:
1、清洗:
财经内容的业务数据其实有挺多,比如最常用的内容标签和内容分类。内容标签是可以建立一个树状的关系型数据,也可以建立一个发散性的图谱型数据,这是一个大量的工作。据悉,就在财经的背景下,内容的原始标签数量就可以达到18Wd级别,而是相对比较中等的数据量。我们这里简单讲讲内容分类的维度好了。基于内容分类的角度,从某个财经门户的官网我们针对内容做个这样的细分:
对应标签 | 父对象标签 | ||||||||||||||||||||
政经 | 宏观经济 | 金融资本 | 央行动态 | ||||||||||||||||||
大盘 | 大盘策略 | 独家评盘 | 盘中播报 | 私募基金 | 基金持仓 | 私募持仓 | 融资融券最新报道 | 四大报要闻精华 | |||||||||||||
外围 | 三板市场报道 | H股资讯 | 港股新闻 | 美股公司新闻 | 美股要闻 | 中概股新闻 | 美股新股 | 盘面报道 | 新三板公司新闻 | 债券新闻 | 国际经济新闻 | 黄金资讯 | 基金经理访谈 | 美国经济 | 欧洲经济 | 股指期货新闻 | 期货_锰硅 | 综合理财 | 现货行情 | 国际股市动态 | 外汇汇率 |
板块 | 行业题材 | 板块异动 | |||||||||||||||||||
个股 | 异动股揭秘 | 新股申购 | 公司公告摘要 | 新股中签 | 新股动态 | 个股热评 | 个股研究报告 | 独家公告解读 | 个股聚焦 | 个股动态 | 上市公司新闻 | 业绩解读 | 公告解读 | 公司研究 | 创业板公司新闻 | ||||||
学习 | 股市学堂 | 基金学堂 | |||||||||||||||||||
财经 | 财经人物 | 非上市公司新闻 | 拟上市公司新闻 | 财经评论 | 港股名家 | 科技 | 财经要闻 | ||||||||||||||
待细分 | 独家数据解读 | 自媒体大V解读 | 焦点透视 | 机构观点 | 快讯 | 自媒体精华资讯 | 要闻精华 | 其他重要新闻 | 名家分析 | 自媒体 | 推送栏目 | 运营资讯 | 独家快评 | 历史信息地雷 | 投融资 | 投资机会 | 分时信息地雷 | 产经新闻 | 基金观点 | 基金要闻 | 证券市场新闻 |
2、推荐
财经内容的推荐算法跟普通内容推荐的算法逻辑大部分其实是一致的,唯一需要把握的三个点是时效性、投资性和丰富性,也可以用三个字来概括:快、深、多。时效性是从财经信息的及时性角度出发,只有足够快的内容才可以帮助用户做出尽快的决策,这也是非常重要一种财经内容类型;投资性则是从投资的决策角度出发,内容是否包含有效的投资标的、投资方法、投资策略,是否可以帮助用户正确做出投资决策;丰富性则是从财经信息的关联性角度出发,比如一个股票,他的母子公司、他的行业、他的产业链上下游…这些信息都应该近全面的囊括,让投资决策不至于太片面。以下是比较简单是十来个关于推荐的召回算法:
3、排序
排序是我在学习推荐业务过程中啃了最久的一部分,而作为用户,排序的结果是直接决定用户优先看到哪些内容和每次推荐的结果。排序的学习,如果仅仅是基于物品特征的维度的话,在实践过程中会发现可以发现原始特征LR直接退化成热度模型,所有人点击率排序都一样,永远都出热度最高的推送或者广告,如下图一。因此,排序的学习很有必要引入一些空间、环境和场景的特征,比如是否有自选股、持仓股这种标的的特征;看盘时间、通勤时间和休息时间等时间的特征;技术面、资金面和消息面等投资偏好的特征…,这些特征可以跟物品和用户这些基本特征形成更矩阵型的特征模式,这里可以用交叉特征来概述,如下图二。
4、前端
经过前面的清洗、召回和排序之后,对不同的用户,我们终于拿到了每次适合他的物品列表,可是,展示也是一个非常大的设计点,虽然是前端的场景,但也需要非常强的策略和体验意识。比如对于新闻的列表模板,无图/单图/多图的模板样式、推荐的理由/标签、个股/行业/板块的标签的展示都应该是模板中应该统筹考虑的;还有就是针对新闻、短评、帖子、公告和研报的样式区分和重点元素展示;以及功能模块、聚合产品和运营推广的内容推广展示区分;还有一些内容的平衡问题,比如不同作者UGC/PUGC内容的展示平衡、UGC和PGC的展示平衡、普通内容和广告的展示平衡… ...还有一些相应的功能设计,比如正负反馈的设计;滑动刷新的交互设计;点击事件之后的展开推荐等等。
五、推荐值得思考的几个问题:
实际上,推荐系统的架构实际上已经非常成熟了,开源的框架,开源的算法,开源的策略,都是很容易去借鉴、学习和模仿的。但是,更多的时候,对业务同学,应该着重考虑以下几个问题:
1、合适的场景
例如对财经内容的场景下,首页的feed流、个性化的push、搜索结果的推荐、股票的推荐… 每种场景下,用户的需求是有微妙差异的,自然推荐的方向、标的和模式也都是不一样的。不同的场景,通过不同的信息推荐,满足用户不同的消费需求,实际上就需要我们对用户的需求和场景做比较深刻的分析,以达成一定的用户价值和商业目标。
比如对于Feed流的场景,就一定是要满足用户的留存和内容的分发的价值,尤其是当把Feed流作为公司平台的战略重点,放置于首页的情况下,它所承担的重要性就非常重要。这类的产品可以去看看雪球、淘宝、同花顺、美团、小红书、百度、腾讯新闻…感兴趣的,质量高的,有价值这三种内容类型就应该成为这类推荐场景下极度重要和优先推荐的。
2、明确的目标
从平台生态的角度来说,大部分平台的目标还是从流量的角度去考虑。特别是当互联网生态经历了从流量之争到时长之争的变迁,用户愿意在一个互联网场景长期停留,至少代表三点:
1.1 该场景能满足用户某种需求;
1.2 该场景相比竞品更有吸引力;
1.3 该场景能以某种低于其他平台获客成本的方式变现并支撑平台运转。
从夺取用户到夺取用户的时间,用户时长的提升直接代表了平台商业价值的被认可,时长提升本身代表用户粘性高、忠诚度高以及可变现的机率多。
当然了,从某个模块、一个功能、一个场景来说,推荐的侧重点可能又有所不同,但总之,目标的确定很重要,推荐这样的抓手怎么帮助实现目标就更重要了。
3、信息的清洗
首先,内容的类型是多样化的,比如在财经的背景下,新闻、公告、研报、评论、自媒体、短视频、投教课程、直播内容、数据模块、投资工具…这些都是具有推荐价值的,因为在财经的场景下,这些信息都是可以辅助用户知识学习、信息获取和投资决策的。
其次,这些内容本身都具有非常不一样的特点和逻辑,给予用户的价值本身也不一样,甚至满足的也是用户在不同场景的需求,因此理清楚这些内容类型本身的特质和与用户的关系就显得非常重要。比如对于财经新闻来说,新闻的标签、新闻的分类、新闻的情感、新闻的聚合、新闻的事件、事件的观点、事件的结论...这些既是内容本身可以衍生的特性,其实背后也是隐含着一个用户可能会喜欢这篇新闻的一个关联逻辑。
因此对于如何做这些信息的结构化清洗,就显得非常重要,直接影响这内容的推荐质量。
其实,做推荐本身有很多方法,简单上的做法是可以的,但是与此代表的是可能影响推荐结果的天花板。而且,循循向上优化的方向也需要我们对这些信息有比较清晰的结构化认知、地图方向式认知或者逻辑路径式认知,否则就是陷入一种原地打转误区,可能我们永远无法一步一个脚印的向前优化。
4、合适的算法
以我的理解,我把算法简单归为三类:传统规则、业务算法、学习模型。他们分别的定义是:
传统规则:通过简单的人工分类、规则模型和简单的加权统计方法得出的内容列表,比如通过人工过滤的文本分类、通过一个词汇来匹配内容,比如通过简单的热度算法得出的热度新闻,都是这里所定义的传统规则,传统规则在很多情况下,承担了较好的作用。
业务算法:业务算法专注于业务数据的处理和清洗,自然语言处理、语音处理、视频处理、图像识别、对话理解等等,这些都是业务算法,当然,在推荐系统领域,业务算法那主要还是集中在自然语言处理的算法为主,包括文本标签、文本分类、内容相似等。
学习模型:不管是懂是否需要语料干预来区分的监督学习还是不监督学习,还是从学习模式角度来区分的机器学习、深度学习、强化学及迁移学习,学习模型是推荐系统架构中,让程序学会怎么做内容打标、用户打标和相关推荐的工作,而且是模仿人工做深度契合用户心理的程序工作。
当然这些理解并不严谨,就像机器学习是基础,也是一个很宽泛的概念。分类,预测,时间序列,segmentation等等每一类分析都有很多不同的算法。作为业务的同学,我们倒也没必要去深入跟踪每一种算法的推演和最新成果,但是相关算法的应用场景和基本原理,越深入也能帮助思考和沟通。