作者 | gongyouliu
编辑 | auroral-L
全文共7192字,预计阅读时间45分钟。
大家好,我是强哥。一个热爱暴走、读书、写作的人!
本章目录
一、推荐系统的定义
二、推荐系统解决的问题
三、推荐系统的应用领域
四、常用的推荐算法
1. 基于内容的推荐
2. 协同过滤
五、构建推荐系统的挑战
1. 数据维度
2. 模型维度
3. 服务维度
4. 场景维度
5. 价值维度
六、推荐系统的价值
总结
在地球上的一切生物中,可能人类是最能适应环境的生物。在人类漫长的进化旅途中,人与环境不断地交互,人在环境中不断学习成长。自然选择让人类可以很好地适应环境,人类能够找到维持生存繁衍需要的一切资源(食物、安全的住所、配偶等),最终成为地球上绝对的统治者。
在信息技术出现之前,人类与外界的交互主要是与实体世界的交互。当信息技术出现时,特别是当前的移动互联网时代,人类与外界的交互多了一种方式,这就是网上的虚拟交互:我们可以通过手机屏幕连接世界。在手机上我们可以读书、听音乐、看视频、社交、购物、娱乐、创作、工作等等。可以说,虚拟交互变得越来越重要,我们越来越离不开它了。
实体世界的交互受限于时间、空间等物理属性,在便捷性上没有那么好,而基于互联网的虚拟空间就大大突破了实体空间的限制,交互的形式、范围、广度有了质的飞跃。这里举个简单的例子:任何一个菜场,不管多大,能够容纳的商品种类是很有限的,但淘宝上的商品可以做到无限多。
这时怎么选择就是一个问题了。在实体世界的交互过程中,由于局限于时间、空间,我们能够接触到的物品是有限的,我们完全可以通过自主的筛选获得信息(比如去逛商店,可以自己选择需要的商品),而在虚拟空间,物品的数量趋近无限,同时也局限于展示方式的限制(手机屏幕上一屏只能展示少量的物品),主动选择变得不太可能。
在远古时代,由于人的能力有限,那时人只能解决生成繁衍需求,这类需求是非常明确的,是主动的,主动的需求一般是自己去解决:饿了找吃的东西、困了找睡的地方。这时人们往往是知道自己需要什么的,目的非常明确。随着科技的发展,物质生活的丰富,我们不再为生存问题发愁(不过,目前在世界范围内,还是有非常多的人生存都是困难)。非生存需求(比如娱乐、学习、购物、社交等)不是那么迫切,需求没有满足人也不会死掉,所以这类需求一般是被动的,被动的需求可以通过展示给我们,然后我们选择:给你推荐一些好听的音乐,然后我们选择自己想听的。
随着社会的发展,物质生活的丰富,受教育程度的提升,人们不再为了生存问题而烦恼,人类有能力去追求更多精神层面的东西,在这个过程人,人会变得更愿意去表达、展示自己的个性。每个人由基因决定的、生而不同的个性才有展示、释放的空间。我们可以明显地感受到现在的95后、00后都非常有个性。他们不再满足于拥有跟大众一样的品味了,更多地喜欢一些满足自己情感个性需求的商品和服务。
总结一下,随着科技的发展,人类社会自身的发展,上面提到的三个现象是显而易见的:虚拟世界上的商品服务可以无限多导致很难主动选择、人类的非生存需求是被动的、人们越来越希望获得满足自身个性的服务。正是这3个现象推动了互联网新的服务方式的出现,这就是个性化推荐。所谓个性化推荐,就是系统通过算法主动为用户展示用户可能喜欢的、满足用户独特需求的商品和服务,供用户进行选择消费。
可以说,个性化推荐完美地解决了上面的三个问题。商品无限多,通过个性化推荐,可以解决商品曝光的问题,任何一个商品可以通过算法展现给可能喜欢它的人。推荐过程是借助算法实现的,不需要用户主动去寻找,可以满足用户被动的需求。推荐是根据个人的爱好来为用户筛选的,所以也是满足用户个性化需要的。
随着2012年今日头条将推荐系统作为产品的核心功能,我们见证了推荐系统在国内移动互联网的壮大和繁荣,目前几乎所有的手机APP都将推荐系统作为产品的核心能力,毫不夸张地说,目前推荐系统已经成为互联网产品的标配技术。
讲完了推荐系统产生的时代背景,下面我们对推荐系统的一些基础知识进行简单的介绍,让读者有一个比较清楚的了解,我们在后续章节会对推荐系统(特别是推荐算法和工程实现)涉及到的方方面面知识进行详细介绍。这一章我们主要从推荐系统的定义、推荐系统解决的问题、推荐系统的应用领域、常用推荐算法介绍、构建推荐系统的挑战、推荐系统的价值等6个维度来介绍。
一、推荐系统的定义
前面说到推荐系统是通过算法为用户主动展示(主要是在手机上)用户可能喜欢的商品或者服务,大家也大致知道了推荐系统解决的问题。那么什么是推荐系统呢?本节我试图给推荐系统下一个定义, 让大家可以更好地理解什么是推荐系统。
推荐系统是计算机软件工程中的一个子领域,通过利用机器学习等技术,在用户使用产品进行浏览交互的过程中,系统主动为用户展示他可能会喜欢的物品,从而促进物品的“消费”,节省用户时间,提升用户体验, 做到资源的优化配置,最终也为服务提供方创造商业价值。上面定义有几点需要细化说明一下, 方便大家更好的理解推荐系统的特性与本质。
√ 推荐系统是一种软件工程解决方案,通过代码实现推荐能力,将为用户推荐物品的过程做到完全自动化。
√ 推荐系统是机器学习的一种应用,通过学习用户行为数据,构建数学模型,预测用户的兴趣点,最终为用户推送可能会喜欢的物品,满足用户被动的需求,提升用户体验。
√ 推荐系统是一项交互式产品功能,产品为推荐系统提供载体,用户通过使用产品触达及触发推荐系统,推荐系统为用户提供个性化的推荐, 满足用户被动的需求。作为一个产品,那么设计怎么展示、怎么跟用户交互、交互过程中的遇到的各种场景问题都需要解决。
√ 推荐系统是一项(软件)服务,通过推荐系统,用户可以获得针对自身兴趣的个性化物品推荐,满足用户个性化的、被动的需求。任何服务都需要运营,也都是可以被运营的,服务过程中问题的解决、服务的宣导等都需要借助人力来协助。
√ 推荐系统是一种解决信息过滤、资源匹配的手段,通过机器学习算法和软件工程,推荐系统在海量信息场景下为用户进行信息筛选、过滤。
从上面我们可以知道,推荐系统是一个非常偏业务的交叉学科,综合利用软件工程、机器学习、设计、产品、运营等跨学科的知识才可以构建出一个满足用户需求的、有商业价值的推荐系统。
二、推荐系统解决的问题
推荐系统是在互联网快速发展(特别是移动互联网)之后的产物。推荐系统本质上是在用户需求不明确的情况下, 从海量的信息中为用户寻找其感兴趣的信息的技术手段。推荐系统结合用户的信息(地域,年龄,性别等),物品信息(价格,产地等),以及用户过去对物品的行为(是否购买,是否点击,是否播放等),利用机器学习技术构建用户兴趣模型,利用软件工程技术实现软件服务,为用户提供精准的个性化推荐。
推荐系统很好的满足了物品提供方,平台方,用户三方的需求。拿淘宝购物举例来说, 物品提供方是淘宝上成千上万的店主,平台方是淘宝,用户就是在淘宝上购物的自然人或企业。通过推荐系统可以更好地将商品曝光给需要购买的用户, 提升社会资源的配置效率。
从本质上讲,推荐系统解决的是资源配置的问题。通过软件、算法、工程手段,将供给端(物品提供方)和需求端(用户)通过平台(提供个性化推荐的手机APP)进行匹配。推荐系统的目标是提升资源的配置效率。
三、推荐系统的应用领域
推荐系统广泛用于各类互联网产品中。基于前面的介绍,只要存在大量的“供用户消费的物品”的互联网产品,推荐系统就有用武之地(在社会发展到当下,非生存需求、个性化需要是自动满足的)。具体来说推荐系统的应用领域主要有如下几类:
〇 电商网站:购物,购书等,如淘宝,京东,亚马逊等
〇 视频:B站,爱奇艺,抖音,快手等
〇 音乐:网易云音乐,酷狗音乐、QQ音乐等
〇 资讯类:今日头条,网易新闻等
〇 生活服务类:美团,携程,脉脉等
下图展示了几类常见的互联网产品的logo,大家应该都不陌生,这些产品上都有很多推荐相关服务。
图1:日常生活中常用的具备推荐能力的APP
上面只是列举了我们每天都会用到的产品,这些产品都将推荐系统作为重要技术,利用推荐系统更好地服务用户。可以说,只要是toC的互联网产品,推荐系统都有用武之地。随着技术的发展、生活方式的改变,推荐系统更多的应用场景(比如未来无人汽车上的推荐、VR设备上的推荐、线上线下融合推荐、跨品类的商品和服务推荐等)正在不断被挖掘和创造。
四、常用的推荐算法
上面我们提到了推荐系统大量使用机器学习技术,机器学习技术也是推荐系统中最核心的部分,也是我们这一些列文章的主要内容。 本节我们来简单介绍一下推荐系统常用的策略和算法。推荐系统的算法主要可以分为两大类,一类是基于内容的推荐,一类是协同过滤推荐。下面我们分别介绍。
1. 基于内容的推荐
上面讲到推荐系统是通过技术手段将物品与人关联起来,物品包含很多自己的属性,用户通过与物品的交互会产生行为记录,基于这些行为记录,我们可以挖掘出衡量用户对物品偏好的标签,通过这些偏好标签为用户做推荐就是基于内容的推荐算法。拿商品推荐来说,商品有品牌、品类、价格、产地等信息,用户以前买过的商品,就代表用户对这些商品有兴趣,比如用户买过iPhone手机(挖掘出了用户对品牌、品类的偏好),我们就可以根据这些兴趣特征为用户推荐苹果电脑、手机套、电源线等(参见下面图2)。
图2:基于内容的推荐算法图示
2. 协同过滤
用户在产品上的交互行为为用户留下了标记,我们可以利用“物以类聚,人以群分”的朴素思想来为用户提供个性化推荐。
具体来说,“人以群分”就是找到与用户兴趣相同的用户(有过类似的行为),将这些兴趣相同的用户浏览过物品推荐给用户,这就是基于用户的(user-based)协同过滤算法。“物以类聚”就是如果有很多用户都对某两个物品有相似的偏好, 说明这两个物品是“相似”的,我们可以通过推荐用户喜欢过的物品相似的物品这种方式为用户提供个性化推荐, 这就是基于物品的(item-based)协同过滤推荐算法。下面图3以图示来简单说明这两类协同过滤算法,让大家有更好的理解。
图3:协同过滤算法图示
上面提到的协同过滤算法是最古老、最简单的协同过滤算法。我们熟知的基于社交关系的推荐(比如微信公众号文章、视频号视频的推荐就是将你朋友点过在看、喜欢的内容推荐给你)也是一种协同过滤(参见下面图4)。协同过滤算法种类是非常多的,比如矩阵分解、分解机、深度学习等等。这些复杂的算法我们在后续章节中会详细介绍,这里不赘述。
图4:微信公众号文章的基于社交关系的协同过滤推荐
在进入下一节之前,这里我说一下基于内容的推荐和协同过滤的差异点,方便读者更好地理解它们。这两个算法最本质的差异是:基于内容的推荐算法只使用用户自身的行为(与别的用户无关)信息来为用户做推荐,而协同过滤需要利用群体的行为来为某个用户做推荐(这也是协同这个词的由来,协同代表的是群体的智慧)。
在真实的推荐场景中,一般会混合多种算法进行推荐,比如混合多种基于内容的算法、多种基于协同过滤的算法,甚至是混合基于内容的算法和协同过滤算法。我们在后续的章节及案例中会讲到。
五、构建推荐系统的挑战
推荐系统是解决大规模用户场景下,资源的匹配问题。推荐系统解决的问题看起来很简单、朴素, 那么是不是可以非常容易地构建一个有商业价值的推荐系统呢?答案是否定的, 要想构建一个高效的、有价值的推荐系统是一件很困难的事情。本节我们简单梳理一下构建推荐系统可能遇到的困难与挑战。
前面说过推荐系统是一个比较大的系统工程,有效的落地需要相当多的资源投入,所以需要领导的大力支持,并且领导要能够意识到推荐算法的价值。为什么今日头条可以从传统的新闻客户端脱颖而出,正是张一鸣认识到了推荐的价值,整个公司从创立之初就以推荐算法为核心,围绕推荐系统构建好的产品体验,后面的抖音也是采用类似的思路。不到10年时间,头条系就成为能与腾讯、阿里比肩的互联网巨头了,可见推荐系统的巨大商业价值(当然头条的成功不光是推荐系统的功劳,抓住了时代的发展机遇可能更关键)。
下面我们从数据、模型、服务、场景、价值等5个维度来说明构建推荐系统过程中可能会面临的一些问题和挑战。
1. 数据维度
前面提到构建推荐系统会用到用户相关的、物品相关的以及用户行为相关的数据,这些数据种类是很多的,形式也越来越复杂,有结构化的的数据,也有非结构化的文本、图片、音频、视频数据等。收集、存储、处理这类异构的数据是非常有挑战的。
目前很多企业的“服务窗口”是非常多的,有自己的官网、小程序、公众号、视频号、抖音快手号、淘宝店铺、线下直营店、合作授权店等等,收集融合这些多渠道的数据就面临非常大的挑战。
我们需要有好的分布式存储系统来存储这些数据(目前的数据湖技术就是解决结构化数据与异构数据的存储问题而出现的新思路、新技术),我们也需要采用合适的技术将这些数据转化为机器学习可以识别的对象(这就是特征工程要做的事情)。
数据质量问题、数据隐私问题等其他问题也同样重要,特别是今年国家开始管控互联网算法服务(推荐系统首当其冲)也会带来很大不确定性,这些都是构建企业级推荐系统面临的挑战。
2. 模型维度
构建推荐模型涉及到特征工程、模型构建、模型推断等环节(这些我们在后续章节都会讲解)。这每一个环节都存在很多挑战。
前面提到目前很多企业的数据是异构的数据,这些数据怎么融合、怎么预处理、怎么构建适合推荐模型的特征都需要很好地解决。
在模型构建过程中,我们需要结合产品形态、物品类别、服务场景等选择合适的推荐算法,算法能否应对海量用户,算法是否可以分布式计算,算法的稳定性,算法的效果等方方面面都需要考虑。
在模型训练好后进行推断及为用户提供个性化服务的过程中,我们需要关注线上的指标,关注精准度等问题。
3. 服务维度
当模型构建好后,我们需要将推荐系统作为一项软件服务部署到服务器上,这样用户才能获得好的推荐服务。在服务用户过程中,我们需要考虑服务的稳定性、服务的一致性、服务响应高并发等方面的能力,这些工程上的挑战都需要很好的经验和设计方案来应对。
4. 场景维度
推荐系统是一个偏业务的系统。不同行业、不同场景、不同用户对推荐系统的要求都是不一样的 。比如美团外卖推荐,需要考虑用户的地理位置和时间,推荐的外卖商家不可能太远,也要考虑到当前的时间;家庭场景的推荐需要考虑到家里可能有小孩,对推荐内容的风险等级要有比较好的把控;像盒马鲜生这类对商品存储运送有特殊要求的(比如海鲜类),在时效性、季节性等方面都需要考虑。总之,如果推荐系统不结合具体场景的特性去设计,那么一定是无法服务好用户的,也无法带来好的体验。
5. 价值维度
推荐系统的目标是在为用户提供便利的同时,让平台方和物品提供方都获得商业利益。这里面需要平衡多方的利益关系。这对设计推荐系统的优化目标非常关键。如果只考虑平台方自身的利益,这种方式是不持久的。国家正是看到了目前推荐算法服务存在的问题(当前很多推荐系统只将自身利益放到首位,忽略甚至是侵害了消费者的利益),才在今年正式提出需要对算法进行管控。
总之,构建一个好的推荐系统是非常困难的,需要很多经验上的积累,需要用心地规划和设计,也需要技术上的沉淀,需要不断地打磨和迭代。上面说了这么多构建好的推荐系统需要克服的困难和障碍, 但是推荐系统是非常有价值的,值得我们花这么多精力和时间去构建一套好的推荐系统。推荐系统的极大价值也驱使越来越多的公司将推荐系统作为产品的标配。
六、推荐系统的价值
当前推荐系统技术是互联网公司的标配技术, 因为它很好的解决物品提供方,平台方,用户三方的需求。本节详细说一下推荐系统的价值,它的价值主要体现在四个方面。
从用户角度说, 推荐系统可以让用户在纷繁芜杂的海量信息中快速找到自己感兴趣的信息,节省了用户的时间,特别是当用户在使用某个互联网产品时,不经意中发现平台给自己推荐了特别喜欢的物品时,那种惊喜油然而生,从而极大提升了用户的使用体验。
从平台的角度看, 推荐了一本书给用户,用户发现这本书正好是自己需要的,立即就买下来了, 推荐一首付费音乐给用户, 用户特别喜欢,毫不犹豫就付费了。精准的推荐,也能增加用户对平台的粘性,让用户喜欢上你的平台。平台通过售卖物品的分成及广告投放可以获取丰厚的利润。
从物品提供商的角度看,如果平台能够将提供商的物品推荐给喜欢的用户, 提升物品被售卖出去的概率,这样商品可以卖得更多更好, 提升了供应商的销量,从而为供应商赚取了极大的收益。
另外,平台精准地将物品(实物物品,如冰箱,电视机等)推荐出去并被用户购买,从侧面也降低了物品的周转时间, 减少了库存积压,对于社会资源的节省和有效利用也是大有益处的。
在当前信息爆炸时代,推荐系统作为一种信息过滤、筛选的工具,可以很好地满足用户不确定的、个性化的、被动的需求。推荐系统提升了整个社会资源的匹配效率。相信随着互联网的深入发展,推荐系统将会发挥越来越重要的价值。
总结
本章介绍了推荐系统相关的一些基本概念,通过本章的学习,希望读者对推荐系统有一个大概的了解。
移动互联网的发展带来的虚拟空间,让用户可以链接无穷的商品和服务。科技和社会的发展,人类有了更多的非生存的需求,每个人也趋向于更好地表达自己的个性,需求更加个性化。在这一大背景下,推荐系统作为一种完美解决这些问题的工具应运而生。
推荐系统很好地解决了信息过滤、资源匹配的问题,因而被应用于各类产品中,如电商、视频、音乐、资讯、社交、生活服务等等。推荐系统是机器学习的一个分支,是一个非常偏工程和业务的系统,它采用软件工程和机器学习技术来解决资源匹配的问题。推荐算法种类繁多,主要的方法有基于内容的推荐、协同过滤推荐等。
由于推荐系统的复杂性,构建一个好用的、有业务价值的企业级推荐系统是一件非常费力的事情,需在数据、模型、服务、场景、价值等维度做好。由于推荐系统具备极大的商业价值和社会价值,几乎所有的toC互联网公司都将推荐系统作为公司产品的标配技术。
我出版的畅销书《构建企业级推荐系统:算法、工程实现与案例分析》,可以跟这个系列文章一起阅读,大家有需要可以点击下面链接购买。