改进的有界矩阵填充算法在大规模推荐系统中的应用

本文出自Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence (IJCAI-17)

原文链接:点击打开链接

全文译文:

 要:矩阵填充算法被广泛应用于个性化推荐系统中。本文主要讨论有界的矩阵填充问题(BMC)的概念,即对标准矩阵填充问题增加有界约束的问题。实践证明,BMC在很多真实数据集中有着良好的表现,并且,在2012R.KannanPark提出了一种被称为BMA的快速坐标下降算法。然而我们注意到,BMA有时会收敛于非平稳点,导致这些情况下的相对精度较差。为了解决这一问题,我们提出了一种在ADMM框架下来解决BMC问题的新的算法。本文所提出的方法可以保证收敛到平稳点。基于真实数据集的实验结果显示此算法相比于之前的有界矩阵填充算法可以达到较低的目标函数值,得到一个较高的预测精度和较好的扩展性。此外,在很多真实数据集上,此方法在预测误差方面优于标准的矩阵分解。

1 介绍

矩阵分解和矩阵填充[Koren等,2009]被广泛使用于个性化推荐系统。给出部分用户-物品矩阵的部分观察评级,目标是通过解决以下优化问题来预测缺失评级:


公式(1.2)适用于凸形式,而非凸形式(1.1)在凸形k选择足够大时两者是等价的。在以上问题中,YRm×n就是我们得到的已知评分矩阵,是已知集合,通常情况下Wk<<min(m,n)是指示集合的指示器功能模块。‖.‖*代表核范数,通常被用作非凸等级出发的一种凸相关技术。

尽管在很多现实问题中表现出色,但传统的矩阵分解并未对预测值加上任何约束。然而,在很多现实问题中,评分会限制在一个特定的范围内。比如,MovieLens的评分和Netflix数据集被限制在[0.5,5]的范围内,但是公式(1.1)和(1.2)得到的预测值往往会超出这个界限。在这些情况下,我们有理由对初始的最优化问题增加有界约束,得到以下有界矩阵填充(BMC)问题:

 

注意到我们用来表示元素约束,对于整篇文章中所有的ij都有。这是一个较难的优化问题由于我们有总共mn个限制,因此我们就需要O(mn)的内存来实现,这对于超过10,000个用户/电影的问题来说是过高的。

最近,R.KannanPark(2012)提出了一种有效的限制坐标下降算法为了解决公式(1.3)中非凸形式BMC问题。名为BMA的算法在带有界限的现实数据集中往往表现的较传统矩阵填充算法更好。然而,BMA算法经常无法收敛于平稳点。与之相替代的是他能够很容易陷入非平稳点,对于这部分我们将在第二部分进行讨论。这种不稳定的收敛行为经常导致在实际中表现的下降。

在本文中,我们提出了一种最小化BMC目标函数的新算法。这种算法基于ADMM框架 [Boyd等,2011]用于解决凸形式(1.4),来保证收敛于最优路径。此外,通过更新规则,算法不需要O(mn)的空间复杂度,并且适用于10,000,000规模的大规模数据集。真实数据集的实验结果表明我们的算法可以更好的、更快的实现相比于传统的有界矩阵填充方法。更有趣的是,本算法在预测精度方面优于目前的矩阵分解法。

本文的其余部分内容如下。第二部分我们介绍相关工作并给出例子来表明坐标下降法无法用于有界矩阵填充问题。在第三部分中提出主要算法和分析。并在第四部分给出真实数据集上的实验结果。

2 相关的工作

有很多方法可以解决(1.1)(1.2)Funk2006年首先提出了矩阵分解法用于推荐系统并用SGD来解决最优化问题。Koren2008年提出了基线估计与矩阵分解合并的算法来提高预测精度,并于2009年进行了研究。不久,YuYun以及Gemulla等人分别于201220142011年提出坐标下降算法和SGD算法以解决大规模数据集使用矩阵分解的问题,不幸的是,他们都没能解决有界性约束的问题。矩阵填充算法关于解决仍有很多其他方向的趋势被用于这些情况,比如RaoChiang2015年提出边界信息,Hsieh2015年提出的噪音问题以及本文提出的算法。

最近,R.KannanPark提出了一种名为BMA的算法解决矩阵分解的有界约束的问题(1.3),并且证明了BMA能够实现更小的RMSE相比于SGD在没有约束的情况下。BMA以块坐标下降思想为基础。然而,块坐标下降法假设可行域W,H能被分解为笛卡尔乘积,但是有界约束(1.3)违反了这个假设,因此BMA缺少理论支持并且可能无法收敛于平稳点。

 

1:仿真结果显示BMA无法收敛于平稳点,BMC-ADMM可以在较低的Test RMSE下收敛于平稳点

这里我们给出一个BMA无法收敛于平稳点的例子。考虑问题Y=,,对于初始解W=H=。当我们固定W时,H不变,反之亦然。但是这种情况下,WH不是最优解,也不是平稳点。如果我们不限定有界约束,当我们固定W时,H将会变为(0.5,0.5),最终收敛于最优解。因此我们发现有界约束使块坐标下降更难实现。

这里我们使用一个例子来说明部分BMA收敛问题。假设有1,000行和1,000列的评分矩阵,包含49,153个评分,限制在05的范围内。设置k=1,初始化WRm×1为标准高斯分布变量,HR1×n全为0

从仿真结果看出,BMA陷入初始值并很难逃出。然而BMC-ADMM算法能够获得全局最优达并到预测精确到在相同的初始值下。此外,BMA比标准矩阵分解更慢,其时间复杂度为O(k2mn),空间复杂度为O(mn/nblk+),其中nblkBMA所使用块的数目。数值实验同样显示出在块的数目特别大的情况下运行时间将会明显增长。更大的时间和空间复杂度暗示着BMA并不能很好的适用于大型数据集。

3 提出方法

在本节中,我们描述了有界矩阵填充问题的算法。我们从数学公式开始,在ADMM框架下,然后详细描述了我们的算法。我们也讨论了该方法的收敛性并分析了所提出算法的时间和空间复杂度。

3.1 数学公式和收敛性

应用交替方向乘子算法(ADMM)框架,我们首先分离原(1.4)中问题的损失、正则化和约束,得到下面的等式:


这看起来像是一个标准的ADMM问题,可以通过XZW和拉格朗日乘子对应的约束的交替更新解决。不幸的是,由ADMM求解(3.1)因为在整个优化过程中X是一个密集的满秩矩阵,直到收敛到最优解需要O(mn)的空间复杂度。

为了解决这个问题,我们建议进一步将X分解成,其中是一个稀疏矩阵,作为两个低秩矩阵的积存储。这里我们做一个变换,把原来的X写成,其中是稀疏的,。这种变量转换导致以下等效的问题:

 

为了方便,在(3.2)中我们用X表示上述的是辅助矩阵。相应的增广拉格朗日式:

 

这相当于下面的缩放形式:

 

其中,是拉格朗日乘子,是惩罚参数,。注意到不等式约束不包含在我们的增广拉格朗日方程。其动机是为了便于计算辅助矩阵WDu等人2014年讨论并命名为增广的部分拉格朗日函数。

由于目标函数(3.2)是闭的,适当的和凸的。所以可以通过找到增广拉格朗日的鞍点来求解。在Gauss-Seidel框架下,ADMM使用下面的迭代程序找出鞍点:


 接下来,我们将详细讨论每个子问题。



算法1总结了所得的算法:


3.2 复杂度和实现细节

时间复杂度

(3.4)(3.6)是最耗时的步骤。对于(3.4)PROPACK使用迭代法得到k截断SVD分解。对于(3.6),复杂度为O(mn),用于检查中的所有元素,并将其映射回有界约束。数值实验(参见4.4节)显示(3.6)是最慢的步骤并且支配运行时间。

空间复杂度


初始化

因为需要满足有界约束,所以BMC的初始化是非平凡的。这里我们主要讨论两个初始化技术。

第一个初始化技术是随机初始化:我们生成两个高斯随机变量W0和H0,然后将它们与标量相乘并调整它们的第一列和第一行,使得min(WoH0)=rmin,max(W0H0)=rmax。详细的计算过程在算法2中给出。

 

在算法2中,AdjustTerm的构造基于以下等式:

 

通过这种方式,我们初始化W0H0在[rmin,rmax]范围内。这是在R.KannanPark2012年提出的随机初始化的改进版本,只能产生非负的W0和H0,并保证初始化的

另外一个初始化技术被称为“基线估计”。Koren2008年提出基线估计是为推荐系统提出了一个合理的初始化,其中缺失的评级,式中是评级的全局均值,分别是用户i和电影j对应的偏差项。

注意到,BMA也使用这两种初始化,我们将在接下来的部分里使用随机初始化来比较BMACCD++和我们的方法的性能。

4 实验

在本节中,我们比较了ADMM与现有的矩阵分解方法在实际数据集上的效率、解决方案的质量和预测精度方面的性能。在比较重包含了以下算法/实现:

·BMC-ADMM:我们提出了求解有界矩阵填充问题的方法(算法1)。

·BMA[R.KannanPark2012]:用于解决BMC问题的坐标下降算法。

·CCD++[Yu等,2012]:传统的矩阵填充问题坐标下降求解器。

我们使用的5个真实数据集来测试上述矩阵填充算法的性能,详细的数据统计如表1所示。我们随机分割80%作为训练数据和20%作为测试数据。对于每个算法和数据集,我们根据验证集中选择最佳正则化参数。以下所有的实验都是在一台配备16GB RAM的英特尔i5-4590 3.30 GHz CPU上进行的。

 

注意到,BMA速度较慢,并在数据量较大时需要较大的内存,除非我们让nblk非常大以节省内存,但这会使BMA变得更慢。因此,我们使用小数据集或大数据集来比较BMC-ADMMBMACCD++,并使用全大数据集来比较BMC-ADMMCCD++

4.1 有界矩阵填充(BMC)算法的比较

在第一组实验中,我们比较了BMC-ADMM和最先进的矩阵填充算法BMA。虽然BMA在求解凸形式(1.4)时求解了非凸形式(1.3),但众所周知,由于当k足够大时有。因此,我们首先比较图2BMC-ADMMBMA的目标函数。

我们设定,并尝试,并比较在所有数据集上的性能。在图2中,我们观察到我们的算法BMC-ADMM可以实现比BMA更低的目标函数值,其主要原因是BMA会陷入非平稳点,而我们的算法总是收敛到平稳点。在图2中,我们还比较了不同正则化参数BMC-ADMMBMA。结果表明,BMC-ADMM总能找到一个更好的目标函数值的解。

 

2:对于不同值,在movielens100kFlixter(子集)上的收敛行为

 

3:在movielensFlixster(子集)上测试k(不同值)的RMSE

 

4:大数据集下RMSE测试

 

2RMSE测试比较

为了比较这两种方法的预测性能,我们在表2中列出了所有5个数据集上的均方根误差测试(RMSE),使用他们自己选择的最佳参数进行验证。结果表明,在大多数情况下,BMC-ADMM在除了Flixster子集以外的数据集上可以获得比BMA更好地RMSE。不幸的是,由于时间复杂度和巨大的内存需求,BMA无法扩展到完整的Flixster数据集。总之,我们观察到BMC-ADMMBMA更快,更准确,也更具拓展性。

4.2 与标准矩阵填充的比较

接下来我们在没有有界约束的大数据集上比较我们的算法BMC-ADMM和矩阵填充算法。我们选择Yu等人开发的用于完成矩阵填充的坐标下降解算器进行比较,并在表2中列出所有数据集上的结果。为了有一个公平的比较,我们尝试了不同的评级k=51030,并使用随机验证集为每个算法选择最佳正则化参数。表2中的结果表明,在大多数情况下BMC-ADMM由于其他方法。这意味着如果我们想要获得更好的预测精度,那么添加有界约束在实践中是非常有用的。

4.3 可扩展性

为了测试我们的BMC-ADMM的可扩展性,我们在更大的数据集上运行我们的算法,即movielens10mflixsterJester,结果如图4所示。较大的k通常会导致做更好的RMSE,但收敛速度更慢(见图4bc),有时候也会导致过度拟合,特别是当数据集中的用户或电影较少时(见图4a)。

实验表明,我们的算法比标准矩阵分解法(无约束)慢,但比BMA快。

4.4 BMC-ADMM的每个部分花费的时间

3给出了我们实现的每个步骤的详细运行时间信息。W的更新决定了我们的运行时间,其时间复杂度为O(kmn)。注意到,对于公式(3.5),一旦我们得到Z的更新,就不需要对E进行明确的计算。因此,公式(3.5)没有运行时间。这里给出的结果验证了我们的复杂性分析,表明投影的计算(3.6)是算法的瓶颈。

 

3:每次迭代中各个步骤的平均运行时间()

5 讨论和总结

在本文中,我们研究了有界矩阵分解的问题。指出了现有的有界矩阵分解BMA算法的收敛性问题,并提出了一种基于ADMM框架的新算法。实验结果表明,该算法比BMA具有更好的收敛性,在大多数情况下,可以达到较低的RMSE值。就运行时间和空间复杂度而言,我们的算法也优BMA,但比标准矩阵分解法(无限制约束)需要更多的时间。为了进一步加速我们的算法,我们可以使用并行计算来解决(3.6)子问题这一瓶颈。由于这一步是一个简单的元素投影,我们希望通过并行化来实现线性加速。


猜你喜欢

转载自blog.csdn.net/qq_14976015/article/details/78988668