基于行列式点过程的推荐多样性提高算法

图片



1、推荐系统目标算法

推荐系统的目标主要包含两个方面:Exploitation 和 Exploration app

图片

在 Exploitation 中最重要的是 Relevance ( 相关性 ) 的计算,其根本思想是根据用户浏览、观看和收藏的内容等用户行为数据推测该用户可能采起的行动。常见的推荐算法大可能是基于针对该目标的优化而展开的。ide

然而用户行为数据在现实中极可能过少、不足以全面地体现用户的兴趣。这一现象在冷启动等场景中很常见。此时推荐系统还有责任挖掘用户还没有表现出的兴趣,而且避免因为现有行为数据过少而致使推送内容类似性太高的状况。这就须要引入 Exploration 函数

Exploration 主要有三个方面:性能

1. 覆盖度:被推荐给用户的内容占所有内容的比例应该较高,特别是新的内容可以有机会展示给用户。 学习

2. 惊喜:推荐的内容并不与用户以前的行为明显相关,但又是用户所喜欢的。这能很大程度提高用户体验,但却难以给出衡量指标。大数据

3. 多样性在短期内不要过多地向同一用户推荐同一类型的内容,而是混合各类类型的内容推荐给用户。衡量这一指标主要经过三个方面,接下来将逐一介绍。优化

2、如何衡量推荐内容的多样性?人工智能

2.一、Temporal Diversity ( 时间的多样性 )spa

图片

推荐结果应随着时间的迁移发生改变,其衡量的指标是在固定的时间间隔内推荐不一样类的内容的个数。好比一个推荐系统在一段时间内给用户推荐了10个内容,那么这10个内容中属于不一样类别的个数,便可衡量推荐系统的多样性。

对于这个指标的提高主要有三个方式来提高这个指标:

第一个相似于 Item-based CF 的思想,预先根据全部用户的历史偏好数据计算内容之间的类似性,而后推荐与该用户的喜爱相相似的内容。

第二个是针对用户的行为作一个时间上的衰减,这样可以针对老用户增大他观看新类型结果的变化。

第三个是 Impression discount ( 印象折扣 ) ,统计全部推荐给用户的内容中哪些是用户没有观看的类型,下降该类型的曝光度,从而给其余类型的内容增长更多的曝光机会。

2.二、Spatial Diversity ( 空间的多样性 )

它的衡量指标是单个推荐列表中物品之间的差别程度,能够经过计算在同一个推荐 list 中两两 Item 之间的类似度的平均值来进行衡量。

接下来咱们将详细介绍该方面内容:

首先咱们为何关注这样一个指标呢?这是由于在推荐系统中咱们只关注准确性指标的话,那么会致使推荐出来的内容大部分都类似。

图片

在上面这幅图中,每个点表明一个 Item ,横坐标表示物品之间的类似性,横坐标越近表示物品的类似性越高,纵坐标表示推荐系统对 Item 的打分。

在左图中有个用户观看了一个 Item 用红点表示,那么推荐系统会根据这个行为推荐10内容给用户,那么这10个内容和这个 Item 类似度很是高。

在右图这个例子中,一个用户观看了三个内容,其中 Item1 和 Item2 的类似度很是高,和 Item3 的类似度很是低,那么推荐系统根据用户的行为推荐 Top10 的内容的话,会发现这10个内容都与 Item1 和 Item2 类似。这是个很常见的例子,好比一个用户很喜欢看漫威的电影,也喜欢看一些文艺类的电影,其中用户观看漫威的电影比较多一些,看文艺类的电影少一些,那么推荐系统很容易形成推荐的时候只推荐漫威类的电影。

用户多样性的问题也已经被普遍研究过。传统上使用启发式的方法,它会在多样性和相关性之间用一个加权平均的方法来得到一个整体的优化目标,而后两两之间比较当前推荐的差别性,而后试图最大化这个总的平衡了以后的优化目标,用穷举的方法。

图片

图片

提高推荐系统多样性的方式主要有两类。第一类主要是依靠 Item 类似度模型和 Item 排序模型。如图5左侧所示。另外一类主要是直接去修改推荐算法,使得这个推荐算法推荐出来的 Item 尽量的不类似,如图5右侧所示。

、行列式过程推荐多样性提高算法

DPP 的构造

行列式点过程 ( Determinantal Point Process , DPP ) 是一种性能较高的几率模型。DPP 将复杂的几率计算转换成简单的行列式计算,并经过核矩阵的行列式计算每个子集的几率。DPP 不只减小了计算量,并且提升了运行效率,在图片分割、文本摘要和商品推荐系统中均具备较成功的应用。

DPP 经过最大后验几率估计,找到商品集中相关性和多样性最大的子集,从而做为推荐给用户的商品集。

行列式点过程刻画的是一个离散集合 Z={1,2,3....,M} 中每个子集出现的几率。当给定空集合出现的几率时,存在一个由集合的元素构成的半正定矩阵 图片 ,对于每个集合 Z 的子集 Y ,使得子集 Y 出现的几率 图片 ,其中,L表示由行和列的下标属于 Y 构成的矩阵 L 的子矩阵。能够看看下面的例子:

图片

因为矩阵 L 是半正定的,所以存在矩阵 B ,使得 图片 ,而且

图片

这是由于行列式为方阵中的各个列向量张成的平行多面体体积的平方。

为了将 DPP 模型应用于推荐场景中,考虑将每一个列向量 B分解解为 图片 ,其中:ri 为 item i 与 user 之间的相关性,且  图片

图片 为 item i 与 item j 之间的类似度度量,且 图片

那么:

图片

从矩阵 L 的构造可知,商品与用户之间相关性越大,且商品之间多样性越丰富,则矩阵 L 的行列式越大。所以,咱们能够创建以下最优化问题:

图片

可是,直接求解该优化问题是 NP 难的,陈拉明团队则利用贪婪算法,提出了一种能加速行列式点过程推理过程的方法。

首先,DPP 取 Log 后的函数是知足次模函数的:

图片

次模函数是一个集合函数,随着输入集合中元素的增长,增长单个元素到输入集合致使的函数增量的差别减少。即,对于任意

图片

直观解释为,小集合和大集合增长一样一个元素,小集合带来的收益大于大集合的收益。

所以,能够将上述优化问题转化为贪婪的形式:

图片

即,每次选择收益最大的 item ,直到知足条件为止。

DPP 模型求解

求解该优化问题时,每次迭代的计算复杂度来源于行列式的计算,而求行列式的计算复杂度与该行列式长度的三次方成正比,即 图片  ,这一结果显然不适用于实际线上实时性较高的场景。下面,叙述论文中所作的改进:

首先对子矩阵 图片 作Cholesky分解,使得:

 图片

其中,V  是一个下三角矩阵。对于任意 图片 ,对子集 Y 添加一个元素 i 以后的子矩阵作 Cholesky 分解,使得:

图片

其中,有如下等式成立

图片

两边取行列式后再取 log ,可得:

图片

应用 Cholesky 分解后,每次迭代只须要计算 图片 便可。而为了获得 图片 ,先须要求解线性方程组:

图片

求解获得 图片

 


  后,再带入  图片    获得  图片  。此过程的计算复杂度来源于求解线性方程组,虽然求解线性方程组的计算复杂度也是三次方,可是系数矩阵 V  是下三角矩阵,所以,每次迭代的计算复杂度可降到二次方。

即便计算复杂度降到了二次方,可是相比于目前主流的算法,可能依然没有优点。所以,做者又考虑每次迭代也用增量的方式更新 图片 和 图片 ,从而避免了求解线性方程组带来的计算复杂度。具体过程以下:

图片

将带入上式中,推导可得:

图片

所以,每次迭代的计算复杂度进一步下降至一次方。

4、实验结果

图片

咱们假设给用户推荐1000个内容,假设物品的数据是从2000到6000,咱们能够看到咱们的加速效果能够达到100倍量级,而且没有任何性能损失。

图片

另一个是咱们固定总的item数到6000,来变化 N 从500到2000,加速效果也是在百这个量级,性能损失也是没有的。

图片

这个是咱们另外的一个实验,在俩个数据集上跑咱们的模型,而且对比MRR、ILAD、ILMD三个指标。

图片

上图为各算法在运行时间上的对比。

图片

横坐标表明相关性,纵坐标表明多样性,在这个数据上咱们的算法优于其余三个算法,而 Cover 的性能是表现最好的。

图片

而在这个数据集上 Cover 算法性能又很是差,而咱们的算法在这个数据集上表现仍是不错的。

5、总结

基于行列式点过程的推荐多样性提高算法使用贪婪算法推理最优的行列式点过程,并利用 Cholesky 加速行列式点过程的推理。该算法在推荐领域具备较好的应用,在丰富推荐多样性和相关性的同时,大大提高了计算速度。

图片

嘉宾介绍

陈拉明,2016年加入 Hulu 推荐算法研究团队,现任高级研究员职位。

——END——


关于 DataFun:

DataFun 定位于最实用的数据智能平台,主要形式为线下的深度沙龙、线上的内容整理。但愿将工业界专家在各自场景下的实践经验,经过 DataFun 的平台传播和扩散,对即将或已经开始相关尝试的同窗有启发和借鉴。

DataFun 的愿景是:为大数据、人工智能从业者和爱好者打造一个分享、交流、学习、成长的平台,让数据科学领域的知识和经验更好的传播和落地产生价值。

DataFun 成立至今,已经成功在全国范围内举办数十场线下技术沙龙,有超过三百位的业内专家参与分享,汇集了数万大数据、算法相关领域从业者。

图片

相关文章
相关标签/搜索