「从零入门推荐系统」14:推荐系统冷启动

作者 | gongyouliu

编辑 | gongyouliu

作者在第2章《推荐系统基础介绍》中讲述推荐系统面临的挑战时提到冷启动是推荐系统的重要挑战之一。冷启动问题是推荐系统工程实践中非常重要的一个问题,只有解决好冷启动问题,推荐系统的用户体验才会更好。

有很多读者可能对冷启动不是特别了解或者不知道怎么设计一个好的冷启动解决方案,所以本章试图给读者讲清楚这些问题。具体来说,在本章我会解释清楚什么是冷启动问题、冷启动问题的挑战在哪里、解决冷启动问题的重要性、有哪些方法和策略可以解决冷启动问题。

14.1 冷启动的定义

推荐系统的主要目标是将大量的物品推荐给可能喜欢它的海量用户, 这里涉及到物品和用户两类对象。任何互联网产品, 物品和用户都是不断增长变化的,所以一定会频繁面对新物品和新用户。推荐系统冷启动问题指的就是对于新注册的用户或者新入库的物品, 该怎么给新用户推荐物品让用户满意,怎么将新物品分发出去,推荐给喜欢它的用户,带来商品的分发和销售。

现在我们大概知道了什么是冷启动,看起来冷启动很好理解,但冷启动问题不是这么容易解决的。下面我们讲讲冷启动的难点。

14.2 解决冷启动问题面临的挑战

冷启动问题是推荐系统必须要面对的问题,也是一个很棘手的问题,要想很好地解决冷启动,需要发挥推荐算法工程师的聪明才智。本节我们来说说冷启动到底会面临哪些挑战,只有知道冷启动的难点,才能有针对性地提供解决冷启动问题的方法。具体来说,解决冷启动问题会面临如下挑战:

首先,我们一般对新用户知之甚少, 所以基本不知道用户的真实兴趣,从而很难为用户推荐他喜欢的物品。我们对新用户知之甚少的主要原因有:

(1) 很多APP也不强求用户注册时填写包含个人身份属性及兴趣偏好的信息,其实也不应该让新用户填写太多的信息,否则用户就嫌麻烦不用你的产品了。由于没有这些信息,我们没法获得用户的画像。另外,现在国家信息安全法规更加健全完善,很多信息是不允许企业收集的。

(2) 由于新用户是刚注册的,用户在产品上的操作行为很少或者没有进行过任何与物品相关的操作,不足以用复杂的算法来训练推荐模型。针对这部分用户,我们前面几章提到的绝大多数召回、排序算法都不可用。

其次,对于新的物品,我们也不知道什么用户会喜欢它,只能根据用户历史行为了解用户的真实喜好。如果新的物品与库中存在的物品可以建立相似性联系的话,我们可以基于这个相似性将物品推荐给喜欢与它相似物品的用户。但是,很多时候物品的信息不完善、包含的信息不好处理、数据杂乱;或者是新物品上架的速度太快(类似抖音这种UGC的短视频应用,用户基数大,每天会由用户上传千万级的短视频),短时间内来不及处理或者处理成本太高;或者是完全新的品类或者领域,无法很好地建立与库中已有物品的联系。所有这些情况都会增加将物品分发给喜欢该物品的用户的难度。

最后,对于新开发的产品(比如新发布一个APP),由于是从零开始发展用户,冷启动问题就更加凸显,这时每个用户都是冷启动用户,面临的挑战更大。

既然冷启动问题这么难解决, 那么我们是不是可以不用管这些新用户和新物品,只将精力放到老用户身上呢?读者肯定知道这是不可以的,那冷启动的重要性体现在哪些方面呢?

14.3 解决冷启动问题为何如此重要

用户不确定性需求是客观存在的,在当今这个信息爆炸、时间碎片化的时代,用户的不确定性需求更加明显,而推荐作为一种解决用户不确定性需求的有效手段,在互联网产品中会越来越重要, 特别是随着短视频应用的流行,推荐的重要性被更多人认可。很多产品将推荐业务放到最核心的位置(如首页),或者作为整个产品的核心功能,比如抖音等各类信息流产品及很多电商类产品。因此,必须要面对新用户冷启动问题。

从上面的介绍中可以知道,新用户、新物品是持续产生的,对互联网产品来说,这是常态,是无法避免的,所以冷启动问题会伴随产品的整个生命周期。特别是当投入很大的资源推广你的产品时, 短期会吸引大量的用户来注册产品,这时,用户冷启动问题将会更加严峻,解决冷启动问题也会更加迫切。

既然很多产品将推荐放到这么重要的位置, 而推荐作为一种有效提升用户体验的工具,在新用户留存中一定要起到非常关键的作用,如果推荐系统不能很好地为新用户推荐好的内容,新用户可能会流失。所以如果不解决冷启动问题,你的新用户一直会得不到好的推荐体验,极有可能会流失掉。

新用户的留存对一个公司来说非常关键,服务不好新用户,并让用户留下来,你的用户增长将会停滞不前。对于互联网公司来说,,用户是公司赖以生存的基础,是利润的核心来源。可以毫不夸张地说,如果不能很好地留住新用户,让总用户健康地增长,整个公司将无法运转下去。因为互联网经济是建立在规模用户基础上的生意,只有用户足够多,你的产品才会有变现的价值(互联网产品的总营收基本线性依赖于用户数,拿会员付费来说,会员总收益=日活跃用户数*付费率*客单价)。同时,只有你的产品有很好的用户增长曲线,投资人才会相信未来用户大规模增长的可能,才能看得到产品未来的变现价值,才会愿意在前期投资你的产品。

那既然冷启动问题对新用户的留存及体验这么重要,怎么在推荐业务中很好的解决这个问题呢?这是本章最重要的部分,我们在下一节中具体介绍。

14.4 解决冷启动问题的方法和策略

前面讲过冷启动包含用户冷启动、物品冷启动。在本节我们会给出一些解决冷启动的思路和策略,方便大家结合自己公司的业务场景和已有的数据资源选择合适的冷启动方案。

在讲具体策略之前,我们先概述一下解决冷启动的一般思路,这些思路是帮助我们设计冷启动方案的指导原则。具体思路有如下6个:

  • 提供非个性化的推荐

  • 利用用户注册时提供的信息

  • 基于内容做推荐

  • 利用物品的metadata信息做推荐

  • 采用快速试探策略

  • 采用基于关系传递的策略

上面这些策略是整体的思路,下面分别针对用户冷启动、物品冷启动这2类冷启动问题给出具体可行的解决方案。

14.4.1 用户冷启动

基于上面6大思路,针对新注册用户或者只有很少用户行为的用户,可行的解决冷启动的策略有:

14.4.1.1 提供非个性化的推荐

给用户推荐非个性化的物品作为解决冷启动的方法,主要有基于先验数据的推荐和基于多样性的推荐。

(1) 利用先验数据做推荐

可以利用新热物品作为推荐。人都是有喜新厌旧倾向的,推荐新的东西肯定能抓住用户的眼球(比如视频行业推荐新上映的大片)。由于这些物品是热点,同时人是有从众效应的,大家都在看的,新用户喜欢的可能性也比较大(比如新浪微博中推荐热点新闻),基于二八定律,20%的头部内容占到80%的流量,所以基于热门推荐往往效果还不错。

还可以推荐常用的物品及生活必需品。如在电商行业推荐生活必需品,这些物品是大家使用频次很高的,生活中必不可少的东西(比如纸巾等), 将这些物品推荐给新用户,用户购买的可能性会更大。

对于特殊类型的产品,可以根据该产品的特性给出相应的推荐策略。如婚恋网站,给新注册的男生推荐附近的漂亮单身女性,新注册的女生推荐物质条件不错的男性,效果肯定不会太差。

也可以基于人自身的偏好来做一些先验推荐。比如针对男性用户,推荐美女相关的视频,针对女性用户,推荐衣服、美妆产品等。

(2) 给用户提供多样化的选择

这里举个视频行业的例子,方便大家更好地理解,可以先将视频按照标签分几大类(如恐怖、爱情、搞笑、战争、科幻等),每大类选择一两个推荐给新用户,这样总有一个是用户喜欢的。

类似上面的视频例子,有很多行业的物品是可以自然归类的,那么也可以采用类似的方法。如果物品无法自然归类,那么可以基于物品metadata数据,采用机器学习算法将metadata信息做向量化处理(比如TF-IDF算法、嵌入方法等),然后再用k-means等聚类技术进行聚类,有了聚类,那么在每个类中选取1-2个作为推荐就可以了。

这种方法要保证有比较好的效果,类之间需要有一定的区分度。也可能碰到给用户的类是用户不喜欢的。最好是从一些热门的类(可能需要运营人员做一下筛选)中挑选一些推荐给用户。太冷门的类用户不喜欢的概率较大。

14.4.1.2 利用新用户在注册时提供的信息

用户在注册时的信息包括人口统计学信息、社交关系(有很多APP在登录时可以导入通信录,从而构建社交关系)、用户主动填写的兴趣点等,基于这些信息都是可以解决用户冷启动的。下面分别讲解。

(1) 利用人口统计学数据

很多产品在新用户注册时是需要用户填写一些信息的, 这些用户注册时填的信息就可以作为给用户提供推荐的指导。典型的比如相亲网站,需要填写自己的相关信息,填的信息越完善代表越真诚,这些完善的信息就是产品为你推荐相亲对象的素材。

基于用户的信息(如年龄,性别,地域、学历、职业等)来做推荐,这要求平台事先知道用户的部分信息。并且还要有一定的规则来将用户画像(你填的信息提取的标签就是你的画像)与待推荐的物品关联起来,根据用户的画像标签关联相关的物品,从而为用户做推荐。

这几年由于信息安全问题越来越严峻,用户也越来越不愿意填写自己的信息了,很多敏感信息法律也规定是不让企业收集的,所以获取用户的画像是比较困难的,不是每个APP都有这样的条件。

(2) 利用社交关系

有些APP,用户在注册时要求导入社交关系,这时可以将你的好友喜欢的物品推荐给你。利用社交关系来做冷启动,特别是在有社交属性的产品中,这是很常见的一种方法。社交推荐最大的好处是用户基本不会反感推荐的物品(可以适当加一些推荐解释,比如你的朋友XXX也喜欢),所谓人以群分,你的好友喜欢的东西你也可能会喜欢。比如,下面图1是微信公众号信息流推荐,下面划红线的地方其实就是说明是基于好友进行推荐的。

7d3f328fc77ad64556ee4a66cdfe0a45.jpeg

图1:基于好友关系的推荐

(3) 利用用户填写的兴趣点

还有一些APP,需要用户在注册时提供自己的兴趣点(下面图2就是喜马拉雅APP在新用户注册启动后可以勾选兴趣点,这样就方便给新用户进行个性化推荐),有了这些兴趣点就可以为用户推荐他喜欢的内容了。通过该方法可以很精准地识别用户的兴趣,对用户兴趣把握相对准确。这是一个较好的冷启动方案,但是要注意产品的逻辑要简单易懂,不能让用户填写太多内容,用户操作也要非常简单。用户的耐心是有限的,占用用户太多时间,操作太复杂,用户可能就不用你的产品了。

c79f817a71634a18d48d3ad7e87204f8.png

图2:喜马拉雅的新用户启动时选择兴趣点

14.4.1.3 基于内容做推荐   

当用户只有很少的行为记录时,这时很多算法(比如协同过滤)还无法给用户做很精准的推荐,这时可以采用基于内容的推荐算法。基于内容的推荐算法只要用户有少量行为就可以给用户做推荐(比如你看一部电影,至少就知道你对这个题材的电影有兴趣,那么就推荐类似题材的电影),不像基于模型的算法那样需要有足够多的行为数据才能训练出精度够用的模型。

14.4.1.4 采用快速试探策略  

这类策略一般可用于新闻、短视频类应用中,先随机或者按照非个性化推荐的策略给用户推荐,基于用户的点击反馈快速发现用户的兴趣点,从而在短时间内挖掘出用户的兴趣。由于新闻或者短视频时长短,只占用用户碎片化时间,试探出用户的兴趣也不会花太长时间。现在的短视频应用(如抖音),用户可以采用下拉,快速选择自己感兴趣的内容,这种便捷的交互形态,有利于更好、更快地挖掘用户的兴趣点。

14.4.2 物品冷启动

针对新上线的物品,基于前面提到的6大冷启动解决思路,可行的解决物品冷启动的方案与策略有如下几类:

14.4.2.1 利用物品的metadata信息做推荐

物品的metadata信息是我们了解物品最好的媒介,基于metadata信息可以方便地解决物品冷启动问题,具体方法如下:

(1) 利用物品跟用户行为的相似性

可以通过提取新上架的物品的特征(如标签、采用TF-IDF算法提取的文本特征、基于深度学习提取的图像特征等),通过计算物品特征跟用户行为特征(用户行为特征通过他操作过的物品特征的叠加,如加权平均等)的相似性,从而将物品推荐给与它最相似的用户(相似性可以衡量用户对该物品的兴趣度)。

(2) 利用物品跟物品的相似性

可以基于物品的属性信息来做推荐,一般新上线的物品或多或少都是有一些属性的,根据这些属性找到与该物品最相似(利用余弦相似度等相似算法)的物品(另外还可以采用metadata嵌入等高阶算法,这里不展开讲,之前在第9章讲过嵌入召回算法,思路是一样的,读者可以自行参考),这些相似的物品被哪些用户“消费”过,可以将该物品推荐给这些消费过与之相似的物品的用户。

14.4.2.2 采用快速试探策略

另外一种思路是借用强化学习中的EE(Exploration-Exploitation)思想,将新物品曝光给随机一批用户,观察用户对物品的反馈,找到对该物品有正向反馈(观看、购买、收藏、分享等)的用户,后续将该物品推荐给有正向反馈的用户或者与该用户相似的用户。

该方法特别适合像淘宝这种平台型电商公司以及像今日头条、抖音、喜马拉雅等UGC平台公司,他们需要维护第三方生态的繁荣,所以需要将第三方新上架的物品尽可能地推荐出去,让第三方有利可图。同时通过该方式也可以快速知道哪些新的物品是大受用户欢迎的,找到这些物品并推荐出去,也可以提升自己平台的营收。

这种思路其实就是一种流量池的思路。在不知道物品是不是受欢迎时,先试探性地将物品曝光给一批种子用户,看种子用户对物品的反馈,如果反馈良好,再推荐给更多的用户,否则减少推荐量。这种方式可以很好地对新物品进行精细控制,也有利于用户体验的提升(不受欢迎的物品后面就不给流量支持了)。这对于平台上提供内容输出的第三方也是有好处的,如果你的内容足够好,采用流量池的思路是可以短期引爆内容的,从而为自己带来极大的用户关注,最终收获更多的商业价值。

14.4.2.3 采用基于关系传递的策略

当产品在拓展物品品类的过程中,比如视频类应用,前期只做长视频,后来拓展到短视频,那么对某些没有短视频观看行为的用户,怎么给他做短视频推荐呢?可行的方式是借用数学中关系的传递性思路,利用长视频观看历史,计算出长视频与用户的相似度。对新入库的短视频,可以先计算与该短视频相似的长视频,我们可以将该短视频推荐给喜欢与它相似的长视频的用户。

该相似关系的传递性可描述为:短视频与长视频有相似关系,长视频与喜欢它的用户有相似关系,最终得到短视频与用户有相似关系。

总结

本章我们从冷启动问题的定义、冷启动问题面临的挑战、冷启动问题的重要性及解决冷启动问题的思路和方法等4个维度全面地介绍了冷启动相关的知识点。特别是解决冷启动问题的思路和方法,值得大家参考、借鉴和学习,这些方法具备普适性。读者可以基于自己关注的行业来思考一下,这里面提供的哪些方法是适用的,能怎么用。我们在后续章节会基于具体推荐系统案例来设计几种具体的冷启动方法及对应的代码实现。


大家如果对推荐系统感兴趣,可以点击下面链接购买我出版的图书《构建企业级推荐系统》。

f3f3d688a52c39f1654298efbe48d1a3.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/6877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

首届“兴智杯”产业赛收官,文心大模型助推产业创新

由工业和信息化部、科学技术部、深圳市人民政府共同主办,中国信通院等单位承办的首届“兴智杯”全国人工智能创新应用大赛圆满收官。本次大赛受到国家部委、政府机构、科技企业、高校师生等社会各界密切关注。为了进一步激发创新活力,促进人工智能核心技…

ChatGPT 本地部署及搭建

这篇简要说下清华开源项目 ChatGLM 本地部署的详细教程。清华开源项目 ChatGLM-6B 已发布开源版本,这一项目可以直接部署在本地计算机上做测试,无需联网即可体验与 AI 聊天的乐趣。 项目地址:GitHub - THUDM/ChatGLM-6B: ChatGLM-6B&#xf…

创建网络数据集

目的:主要是用来做路径规划。 第一步:加载用作构建网络数据集的道路网数据到arcmap。 第二步:做打断处理。【如果线数据未做过打断处理,需要做这一步。】 有两种方式【1、编辑器里面的高级编辑器的打断相交线功能;2、…

带你玩转Python爬虫(胆小者勿进)千万别做坏事·······

这节课很危险,哈哈哈哈,逗你们玩的 目录 写在前面 1 了解robots.txt 1.1 基础理解 1.2 使用robots.txt 2 Cookie 2.1 两种cookie处理方式 3 常用爬虫方法 3.1 bs4 3.1.1 基础介绍 3.1.2 bs4使用 3.1.2 使用例子 3.2 xpath 3.2.1 xpath基础介…

AD20 PCB后期处理

•DRC检查•位号的调整•装配图制造输出•Gerber(光绘)文件输出•BOM输出•原理图PDF输出•文档规范存档1.电气性能检查 完成PCB的布局布线工作之后,接下来需要进行DRC检查,DRC检查主要是检查整板PCB布局布线与用户设置的规则约束…

最小的k个数(堆排序,快排)

原文&#xff1a; 最小的k个数 - 最小的k个数 - 力扣&#xff08;LeetCode&#xff09; class Solution { public: vector<int> getLeastNumbers(vector<int>& arr, int k) { vector<int> vec(k, 0); if (k 0) { // 排除 0 的情况 …

WT588D软件操作教程二

1、音频输出模式设置 设置音频的输出方式为 DAC(外接功放模式)和 PWM(直接驱动扬声器模式)。 点击“操作”→“选项”,在选项界面里设置音频输出模式。 2、BUSY 设置 设置 BUSY 端( I/O 口 P17)在播放音频时输出电平状态为高或低。 点击“操作”→“选项”,在“忙信号输…

ArcEngine 添加标题

样例 做法【这个很简单&#xff0c;看一下就能懂】 代码 private void 添加标题ToolStripMenuItem_Click(object sender, EventArgs e){{ IGraphicsContainer graphicsContainer mainPageLayoutControl1.PageLayout as IGraphicsContainer;IEnvelope envelope ne…

javaweb实现登录和注册(前端转数据到后端,servlet到mysql验证的案例)

一、 myeclipse的tomcat的使用和驱动的放置 软件版本&#xff1a; 编译软件myeclipse2014 数据库mysql2014 驱动mysql-connector-java-5.1.47 1、myeclipse的tomcat的使用 新建立一个java web 项目&#xff0c;在src下面新建里一个servlet类&#xff08;名叫register&#x…

电子学会2023年3月青少年软件编程(图形化)等级考试试卷(四级)真题,含答案解析

青少年软件编程(图形化)等级考试试卷(四级) 分数:100 题数:24 一、单选题(共10题,共30分) 1. 编写一段程序,从26个英文字母中,随机选出10个加入列表a。空白处应填入的代码是?( )

数字工厂项目实施注意事项有哪些

借助数字工厂管理系统&#xff0c;电子制造企业可以规范和优化整个企业内部业务流程&#xff0c;标准化企业业务数据&#xff0c;实现企业管理信息化;可以更高效的管理及分配企业资源&#xff0c;更高效的运营。基于供应链管理的数字工厂系统&#xff0c;在实施过程中需要注意些…

Windows 使用很久以后,C盘空间不足,怎么办

C:\User\某用户\AppData\Local\Tmp 把这个文件夹下的文件删除掉

写在28岁,回看3年前的自己,庆幸当时入了软件测试这行

为什么会学习软件测试&#xff1f; 已经28岁了&#xff0c;算一下快过去3年了&#xff0c;刚毕业那会工作了一年&#xff0c;因为自己当时很迷茫&#xff08;觉得自己挺废的&#xff09;&#xff0c;所以就没去工作就一直在家&#xff0c;家里固定每个月给点生活费&#xff0c…

SimpleDataFormat.parse转换日期错误-多线程

最近使用线程池批量操作数据&#xff0c;中间用到了SimpleDataFormat转换时间&#xff0c;部分数据转换不正确&#xff0c;甚至2023年转成了7223年&#xff0c;原因是SimpleDataFormat不是线程安全的类&#xff0c;所以可以加锁进行处理 我是将sdf作为参数放入多线程&#xff0…

降噪蓝牙耳机哪个品牌好?降噪蓝牙耳机排行推荐

随着蓝牙耳机品牌越来越多&#xff0c;型号更是让人眼花缭乱&#xff0c;各种功能也是层出不穷。但是很多人在眼花缭乱的耳机中并不知道如何选择合适的&#xff0c;下面是我根据多年的耳机使用经验总结的几款值得推荐的降噪蓝牙耳机&#xff0c;快速来看。 1.南卡A2真无线降噪…

【蓝桥杯嵌入式】蓝桥杯第十届省赛真题,程序题全解析(含代码)

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f; &#x1f38f;【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题…

C#和Lua的交互

1.C#调用Lua 1.1C#调用Lua文件中的全局变量 using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using XLua;/* *创建者: *创建时间: *描述:XLua管理器 *版本: */ public class XLuaManager {public static LuaEnv le;//Lua环…

计讯物联智慧景区应用解决方案,开启交互式智慧旅游新篇章

方案背景 后疫情时代&#xff0c;旅游市场逐步回暖。随着游客的旅游需求趋向个性化、多元化&#xff0c;景区的数字化转型升级势在必行。在此背景下&#xff0c;计讯物联充分发挥5G、云计算、物联网、大数据等技术的应用价值&#xff0c;以技术创新推动业务创新&#xff0c;面…

2022蓝桥杯省赛——砍竹子

问题描述 这天, 小明在砍竹子&#xff0c; 他面前有 n 棵竹子排成一排&#xff0c;一开始第 i 棵竹子的 高度为 hi​。 他觉得一棵一棵砍太慢了&#xff0c; 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用&#xff0c; 假设这一段竹子的高度为 H&#xff0…

【SSM】Spring6(二.Bean的生命周期)

文章目录1.Bean的作用域1.1 singleton1.2 prototype1.3 scope其它属性1.Bean的作用域 SpringBean.java package com.sdnu.spring6.bean;public class SpringBean {public SpringBean() {System.out.println("执行springBean的构造方法");} }spring-scope.xml <…
最新文章