如何解决推荐系统中的冷启动问题?

当新用户或新项目进入内容平台时,就会出现冷启动(Cold Start)问题。前端

以协同过滤这样的经典推荐系统为例,假设每一个用户或项目都有评级,这样咱们就能够推断出相似用户/项目的评级,即便这些评级没办法调用。可是,对于新进入的用户/项目,实现这一点很困难,由于咱们没有相关的浏览、点击或下载等数据,也就没办法使用矩阵分解技术来“填补空白”。算法

不过,研究人员已经提出了各类方法来解决冷启动问题。在这篇文章中,咱们会简单介绍一些解决推荐系统中冷启动问题的方法,至于这些方法在实践工做中是否奏效,尚无定论。数据库

精华版

•基于表明性:使用有表明性的项目和用户子集;微信

•基于内容:使用诸如文本、社交网络等的辅助信息;网络

•老虎机:考虑新项目中的EE问题(Exploration&Exploitation);运维

•深度学习:使用黑盒子。机器学习

详细版

基于表明性ide

若是没有足够的用户和项目信息,咱们能够更多地依赖那些可以“表明”项目和用户的用户。这就是基于表明性的方法背后的哲学。函数

表明性用户的兴趣偏好线性组合能与其余用户的无限接近。例如,基于表明性的矩阵因子分解(RBMF,Representative Based Matrix Factorization),实际上是矩阵因子分解方法的扩展,其附加约束条件是m个项应该由k个项的线性组合表示,以下面的目标函数所示:post

有了这个附加约束条件,就有了相似于标准MF方法的重建偏差。当新用户进入平台时,要求新用户对这k个项进行评级,并用它来推断其余m-k项的评级。这种方法经过让用户对某些项目进行额外评级,从而改进对新用户的推荐。通过改进的RBMF只须要一部分新用户对这些项目评级,而不是全部的新用户。

优势

•用少数表明性用户来表达新用户,更具可解释性;

•是MF的简单扩展。

缺点

•须要改进UI和前端逻辑,以要求用户对表明项进行评级。

基于内容

在推荐系统中还有许多未充分利用的辅助信息。

近年来,电子商务和社交网络之间的界限愈来愈模糊。许多电子商务网站支持社交登陆机制,用户可使用他们的社交网络帐号登陆,例如微信、微博、QQ账户。用户还能够在微博上直接分享他们购买的新产品,其中包含指向产品网页的连接。

那如何在CF方法中处理这些内容呢?经典的CF方法以重建偏差为目标,基本上是矩阵填充,从而很难利用这些辅助信息。所以,研究人员提出了将矩阵重建目标和基于内容的目标相结合的混合方法。这些方法并不是特定的冷启动,感兴趣的读者能够进一步探讨。

优势

•能够包含各类内容信息;

•是MF的简单扩展。

缺点

•经过深层方法解决,具备不一样的缺点,目标函数变得杂乱无章。

•出现大量的功能工程,须要考虑是否在数据库中插入用户/项目功能。


老虎机问题(Bandit)

冷启动问题能够从新定义并转换为老虎机问题。什么是老虎机(Bandit)问题?一个典型的例子以下:

一个赌徒,要去摇老虎机,走进赌场一看,一排老虎机,外表如出一辙,可是每一个老虎机吐钱的几率可不同,他不知道每一个老虎机吐钱的几率分布是什么,那么每次该选择哪一个老虎机才能够作到收益最大化呢?

老虎机问题和冷启动问题又有什么关系呢?咱们能够这样类比:以电子商务平台为例,天天有k个新物品进入平台,咱们能够把这k个项看做是具备不一样回报(收入、利润)的老虎机。但因为它们是新产品,所以无权访问购买它们的用户数量。推荐哪些项目就像选择要用哪台老虎机同样。

在老虎机问题上,咱们会很是关心EE (exploration vs exploitation)问题。若是发现一个销量很是好的新商品,咱们但愿向用的展现的次数也更多(Exploitation);但与此同时,咱们还想展现其余没有展现过的东西,由于它们有可能比已经展现过的商品(Exploration)更受欢迎。


解决老虎机问题有不少方法:

Epsilon-Greedy算法:这是最简单的一种,选一个(0,1)之间较小的数做为epsilon;每次以几率epsilon作一件事:全部臂中随机选一个;每次以几率1-epsilon 选择截止到当前,平均收益最大的那个臂。epsilon的值能够控制对Exploit和Explore的偏好程度。越接近0,越保守,只想花钱不想挣钱。

UCB算法:UCB算法全称是Upper Confidence Bound(置信区间上界),它的算法步骤以下:

初始化:先对每个臂都试一遍;

按照以下公式计算每一个臂的分数,而后选择分数最大的臂做为选择:

观察选择结果,更新t和Tjt。其中加号前面是这个臂到目前的收益均值,后面的叫作bonus,本质上是均值的标准差,t是目前的试验次数,Tjt是这个臂被试次数。

这个公式反映一个特色:均值越大,标准差越小,被选中的几率会愈来愈大,同时哪些被选次数较少的臂也会获得试验机会。

Thompson sampling算法:这种算法简单实用,由于它只要一行代码就能够实现。简单介绍一下它的原理,要点以下:

每一个臂是否产生收益,其背后有一个几率分布,产生收益的几率为p。

咱们不断地试验,去估计出一个置信度较高的“几率p的几率分布”就能近似解决这个问题了。

怎么能估计“几率p的几率分布”呢? 答案是假设几率p的几率分布符合beta(wins, lose)分布,它有两个参数: wins, lose。

每一个臂都维护一个beta分布的参数。每次试验后,选中一个臂,摇一下,有收益则该臂的wins增长1,不然该臂的lose增长1。

每次选择臂的方式是:用每一个臂现有的beta分布产生一个随机数b,选择全部臂产生的随机数中最大的那个臂去摇。

上下文老虎机问题

上下文老虎机问题是老虎机问题的通常化,更接近现实世界的状况。惟一的区别是,除了动做(例如,要显示的项目)和奖励(例如销售)以外,还有上下文(例如项目描述、图片、用户点击的次数)。经过利用这些上下文,咱们能够更好地估计奖励。例如,在上面的UCB中,咱们能够向奖励函数添加上下文特征的线性组合。在TS中,咱们可使似然函数除了取决于奖励和行动以外,还取决于上下文。

优势

•易于实现:与复杂的机器学习方法相比,简单的Bandit算法很是容易实现;

•良好的理论保证:因为其简单性,已经对平均状况和最坏状况的奖励进行了大量的理论分析。

缺点

•太过简单?


深度学习

这里把深度学习视为解决冷启动问题的一大类,但其实使用深度学习的方式很是多样化,如下只是其中的一些方法:

DropoutNet:

基本思路很简单,但颇有效果。具体方法是,在训练基于深度学习的推荐系统(如多层的协同过滤)时,咱们能够随机舍去某些项目和用户的评级,使其对新项目具备鲁棒性。与神经网络训练中的标准dropout相反,神经网络训练会舍去特征,而DropoutNet会舍去节点。这样作能够减小神经网络对某些评级的依赖,更广泛地适用于评级较少的项目/用户。这种方法的优点是能够与任何基于神经网络的推荐系统一块儿使用,同时还适用于用户和物品的冷启动。

基于会话的RNN:

这种方法试图把每一个用户会话反馈到RNN中,具体来讲,它训练了GRU (Gated Recurrent Unit)的变体,其中输入是会话的当前状态,输出是会话中下一个事件的项目。在只有少数用户会话可用的小型电子商务网站中,这种方法颇有用。

优势

•若是可以找到适合当前目的的特定域的模型,则有可能显著提升推荐性能。

缺点

•实施和调整模型花费时间;

•部署深层模型可能须要更多时间,具体状况取决于当前的堆栈;

•具体效果没法保证。


原文连接:Tackling the Cold Start Problem in Recommender Systems

以上内容由第四范式先荐编译,仅用于学习、交流,版权归原做者全部。


相关阅读:

推荐系统的工做流程

白话推荐系统

想要了解推荐系统?看这里!(2)——神经网络方法

想要了解推荐系统?看这里!(1)——协同过滤与奇异值分解

AutoML如何实现智能推荐系统的自动上线和运维?

入门推荐系统,你不该该错过的知识清单

如欲了解更多,欢迎搜索并关注先荐微信公众号(ID:dsfsxj)

本帐号为第四范式智能推荐产品先荐的官方帐号。帐号立足于计算机领域,特别是人工智能相关的前沿研究,旨在把更多与人工智能相关的知识分享给公众,从专业的角度促进公众对人工智能的理解;同时也但愿为人工智能相关人员提供一个讨论、交流、学习的开放平台,从而早日让每一个人都享受到人工智能创造的价值。

相关文章
相关标签/搜索