本文在《推荐系统实践》(项亮)一书的基础上介绍一下推荐系统的冷启动问题。

1.冷启动问题定义
推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,对于BAT这类大公司来说,它们已经积累了大量的用户数据,不发愁。但是对于很多做纯粹推荐系统的网站或者很多在开始阶段就希望有个性化推荐应用的网站来说,如何在对用户一无所知(即没有用户行为数据)的情况下进行最有效的推荐呢?这就衍生了冷启动问题。

2.冷启动的分类
冷启动问题主要分为3类:

  • 用户冷启动,即如何给新用户做个性化推荐
  • 物品冷启动,即如何将新的物品推荐给可能对它感兴趣的用户
  • 系统冷启动,即如何在一个新开发的网站(没有用户,没有用户行为,只有部分物品信息)上设计个性化推荐系统,从而在网站刚发布时就让用户体会到个性化推荐

3.冷启动问题的解决方案

3.1提供非个性化的推荐
最简单的例子就是提供热门排行榜,可以给用户推荐热门排行榜,等到用户数据收集到一定的时候,再切换为个性化推荐。
关于热门排行榜解决推荐问题的理论测试,可以参考着篇文章 Performance of recommender algorithms on top-n recommendation tasks.
并且Netflix的研究也表明新用户在冷启动阶段确实是更倾向于热门排行榜的,老用户会更加需要长尾推荐
(参考知乎:严林-回答)

3.2利用用户注册信息
用户的注册信息主要分为3种:

  • 人口统计学信息,包括年龄、性别、职业、民族、学历和居住地
  • 用户兴趣的描述,部分网站会让用户用文字来描述兴趣
  • 从其他网站导入的用户站外行为,比如用户利用社交网站账号登录,就可以在获得用户授权的情况下导入用户在该社交网站的部分行为数据和社交网络数据

这种个性化的粒度很粗,假设性别作为一个粒度来推荐,那么所有刚注册的女性看到的都是同样的结果,但是相对于男女不区分的方式,这种推荐精度已经大大提高了。

推荐流程基本如下:

  • 获取用户的注册信息
  • 根据用户的注册信息对用户分类
  • 给用户推荐他所属分类中用户喜欢的物品

举一个简单例子说明下:

利用用户注册信息进行推荐

3.3选择合适的物品启动用户的兴趣
用户在登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息,然后给用户推荐那些和这些物品相似的物品。
一般来说,能够用来启动用户兴趣的物品需要具有以下特点:

  • 比较热门,如果要让用户对物品进行反馈,前提是用户得知道这是什么东西;
  • 具有代表性和区分性,启动用户兴趣的物品不能是大众化或老少咸宜的,因为这样的物品对用户的兴趣没有区分性;
  • 启动物品集合需要有多样性,在冷启动时,我们不知道用户的兴趣,而用户兴趣的可能性非常多,为了匹配多样的兴趣,我们需要提供具有很高覆盖率的启动物品集合,这些物品能覆盖几乎所有主流的用户兴趣

下面以网易云音乐私人FM为例,来看一看它是怎么做的

网易云音乐 - 私人FM

幽默的文案加上适当的引导,用户在使用过程中也是会很开森的~
参考知乎:刘彦彬 - 回答

3.4利用物品的内容信息
用来解决物品的冷启动问题,即如何将新加入的物品推荐给对它感兴趣的用户。物品冷启动问题在新闻网站等时效性很强的网站中非常重要,因为这些网站时时刻刻都有新物品加入,而且每个物品必须能够再第一时间展现给用户,否则经过一段时间后,物品的价值就大大降低了。
针对协同过滤的两种推荐算法——userCF算法、itemCF算法来分别了解一下物品冷启动的问题。

  • userCF算法

  • 针对推荐列表并不是给用户展示内容的唯一列表(大多网站都是这样的)的网站
    当新物品加入时,总会有用户通过某些途径看到,那么当一个用户对其产生反馈后,和他历史兴趣相似的用户的推荐列表中就有可能出现该物品,从而更多的人对该物品做出反馈,导致更多的人的推荐列表中出现该物品。因此,该物品就能不断扩散开来,从而逐步展示到对它感兴趣用户的推荐列表中

  • 针对推荐列表是用户获取信息的主要途径(例如豆瓣网络电台)的网站
    userCF算法就需要解决第一推动力的问题,即第一个用户从哪儿发现新物品。最简单的方法是将新的物品随机战士给用户,但是太不个性化。因此可以考虑利用物品的内容信息,将新物品先投放给曾经喜欢过和它内容相似的其他物品的用户

  • itemCF算法
    对itemCF算法来说,物品冷启动就是很严重的问题了。因为该算法的基础是通过用户对物品产生的行为来计算物品之间的相似度,当新物品还未展示给用户时,用户就无法产生行为。为此,只能利用物品的内容信息计算物品的相关程度。基本思路就是将物品转换成关键词向量,通过计算向量之间的相似度(例如计算余弦相似度),得到物品的相关程度。
    下表列出了常见物品的内容信息:

常见物品的内容信息

3.5采用专家标注
很多系统在建立的时候,既没有用户的行为数据,也没有充足的物品内容信息来计算物品相似度。这种情况下,很多系统都利用专家进行标注。
代表系统:个性化网络电台Pandora、电影推荐网站Jinni
以Pandora电台为例,Pandora雇用了一批音乐人对几万名歌手的歌曲进行各个维度的标注,最终选定了400多个特征。每首歌都可以标识为一个400维的向量,然后通过常见的向量相似度算法计算出歌曲的相似度。

以上均为书中描述到的方法,下面再介绍两种方法
参考自:刘彦彬 - 回答

3.6利用用户在其他地方已经沉淀的数据进行冷启动
以QQ音乐举例:
QQ音乐的猜你喜欢电台想要去猜测第一次使用QQ音乐的用户的口味偏好,一大优势是可以利用其它腾讯平台的数据,比如在QQ空间关注了谁,在腾讯微博关注了谁,更进一步,比如在腾讯视频刚刚看了一部动漫,那么如果QQ音乐推荐了这部动漫里的歌曲,用户会觉得很人性化。这就是利用用户在其它平台已有的数据。
再比如今日头条:
它是在用户通过新浪微博等社交网站登录之后,获取用户的关注列表,并且爬取用户最近参与互动的feed(转发/评论等),对其进行语义分析,从而获取用户的偏好。

所以这种方法的前提是,引导用户通过社交网络账号登录,这样一方面可以降低注册成本提高转化率;另一方面可以获取用户的社交网络信息,解决冷启动问题。

3.7利用用户的手机等兴趣偏好进行冷启动
(这一点还真是超乎我的想象=_=)
Android手机开放的比较高,所以在安装自己的app时,就可以顺路了解下手机上还安装了什么其他的app。比如一个用户安装了美丽说、蘑菇街、辣妈帮、大姨妈等应用,就可以判定这是女性了,更进一步还可以判定是备孕还是少女。
目前读取用户安装的应用这部分功能除了app应用商店之外,一些新闻类、视频类的应用也在做,对于解决冷启动问题有很好的帮助。

推荐系统冷启动问题的常见解决方案相关推荐

  1. 推荐系统冷启动问题及解决

                                 推荐系统冷启动问题及解决 一.冷启动问题简介 主要分三类: 1.用户冷启动:如何给新用户做个性化推荐. 2.物品冷启动:如何将新的物品推荐给可 ...

  2. 推荐系统系列三:推荐系统冷启动

    下面内容转自大数据与人工智能微信公众号,由于网络上推荐系统的相关学习资料太多太杂,东拼西凑学习很难摸出门道,同时我也在学习推荐系统,因此我将该系列内容摘录到我的博客,方便大家直接在博客中查看,大家一起 ...

  3. 「构建企业级推荐系统系列」推荐系统冷启动

    点击上方"数据与智能","星标或置顶公众号" 第一时间获取好内容 作者 | gongyouliu 编辑 | auroral-L 作者在<推荐系统介绍> ...

  4. 【推荐系统】推荐系统冷启动问题

    推荐系统冷启动问题 推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,因此大量的用户行为数据就成为推荐系统的重要组成部分和先决条件.对于很多做纯粹推荐系统的网站,或者很多在开始阶段就希望有 ...

  5. SonrLint常见解决方案

    Sonar是什么? Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等 ...

  6. 【分布式篇】什么是分布式ID?分布式ID常见解决方案有哪些?

    目录 分布式ID 什么是分布式ID 分布式ID需要满足的需求 基本需求: 其他需求 分布式 ID 常见解决方案 1. 数据库维度 基于数据库主键自增实现 优点 : 缺点 : 基于数据库的号段模式实现( ...

  7. 推荐系统冷启动的解决方案

    冷启动问题是推荐算法或者计算广告算法岗位的面试官经常会问到一个问题,因此在这里做一个总结. 结论: 冷启动包括用户的冷启动.物品的冷启动和整个系统的冷启动 针对冷启动问题的解决方案大概分为三类:基于规 ...

  8. 推荐系统冷启动常用解决方案

       本文主要基于博主的实际经验,简单介绍几种推荐系统实践中常用的几种解决冷启动的方案.每种方案尽量提供主要的资料,但不展开详细介绍,有需要的可以自己查看相关资料或google.    此外,本文只针 ...

  9. 推荐系统[八]:推荐系统常遇到问题和解决方案[物品冷启动问题、多目标平衡问题、数据实时性问题等]

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

最新文章

  1. C# 工厂模式 简单入门
  2. Linux编程获取网络信息总结
  3. python创建子类_Python线程创建子类?
  4. 基于国密算法SM2SSL证书的https加密,如何实现?
  5. 阿里DataV可视化大屏介绍
  6. commonjs是什么_JavaScript模块化标准CommonJS/AMD/CMD/UMD/ES6Module的区别
  7. php 显示数据库操作错误,php操作mysql数据库编码错误
  8. java web项目中连接mysql数据库,javaweb之eclipse工程连接mysql数据库
  9. spring源码分析第三天------spring核心IOC容器和依赖注入原理
  10. 仿minecraft游戏 linux,【图片】【Codea制作仿MineCraft3D游戏】Craft Ver. 0.1发布(开源)【codea吧】_百度贴吧...
  11. python_爬虫_模块
  12. ‘gperf‘ is missing on your system.
  13. android隐藏root环境,Android安全检查之Root环境检测
  14. 解决更改文件扩展名,文件类型没有发生变化的问题
  15. 关于太阳(卫星)天顶角,太阳高度角,太阳方位角
  16. 分享| 电脑设置双屏或多屏显示2种简单方法,你能学会几种?
  17. linux 平均负载 load average 的含义
  18. 重型柴油车OBD系统进入逻辑
  19. Excel下拉列表多选框实现
  20. 任正非:5G实际上被夸大了

热门文章

  1. 【小型JavaFx项目】Java的知识点综合运用之牧场物语游戏
  2. 基金指数温度怎么算_基金跌了点是怎么算的 怎么看指数基金温度
  3. java输入年月输出日历_java 输入年月,获取日历表
  4. 新概念英语2课后题答案
  5. 升米恩斗米仇,驳”开源侵略论”
  6. poj2240 - Arbitrage
  7. 百度牵手大悦城 相爱相杀的零售与互联网需要新玩法
  8. 按头安利 好看又实用的公文包 文件包3d模型素材看这里
  9. Linux发展历史年表
  10. 12款精美的免费 CSS 网页模板下载