收藏 分享(赏)

ALS-WR算法原稿译文(一).docx

上传人:hwpkd79526 文档编号:7127746 上传时间:2019-05-06 格式:DOCX 页数:7 大小:29.98KB
下载 相关 举报
ALS-WR算法原稿译文(一).docx_第1页
第1页 / 共7页
ALS-WR算法原稿译文(一).docx_第2页
第2页 / 共7页
ALS-WR算法原稿译文(一).docx_第3页
第3页 / 共7页
ALS-WR算法原稿译文(一).docx_第4页
第4页 / 共7页
ALS-WR算法原稿译文(一).docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、http:/ 算法原文译文经过 3 个晚上的翻译,终于把 ALS-WR 算法的介绍论文翻译完成。此次翻译目的是加强对ALS-WR 算法的理解和练习自己对专业性英文的能力,由于本人英文水平有限并且该算法使用到了多个高数甚至超越高数和线性代数的一些知识,所以如哪里翻译不对或理解有误,望英语强人,数学高人,算法牛人给个纠正,先于此谢过。原文见:http:/ (Netflix Prize)作者:Yunhong Zhou(http:/ Dennis Wilkinson, Robert Schreiber and Rong Pan(http:/ ALS-WR,它是我们为 Netflix Prize设计的并

2、行算法。我们在 linux 集群中使用并行 Matlab 作为实验平台,根据经验,ALS-WR的性能会伴随着特征值数量和 ALS 迭代的增加而增加。ALS-WR 使用 1000 个从 RMSE 中 获得的特征值作为 Netflix 数据集进行实验最后获得的得分是 0.8985,这个得分是基于单纯(串行)方法获得的最好的得分。结合其他并行版本的方法,我们获得了比 Netflix 自身的 CineMatch 推荐系统高出 5.91%的性能。ALS-WR 是很简单的并且对于大数据集也有很好的扩展性的一种解决方法。1. 介绍推荐系统尝试基于可用的信息向潜在的客户推荐如电影,音乐,网页,产品等事物。可想

3、而知,一个成功的推荐系统能够明显的提升电子商务公司的收入或促进社交网站上用户的交互。在众多的推荐系统中,基于内容的方法当然是要去分析对应的内容(如文本,元数据,特征)来决定相似的事物,然而协同过滤对大量用户的行为/爱好向指定用户推荐相似事物。协同过滤在如 Amazon,Netflix,Google News 等很多公司中都有使用。Netflix Prize 这个项目(据说有大量的奖金给参赛者)是由 Netflix 主持的大型的数据挖掘竞争项目,主要目的是为了寻找最好的推荐系统算法来预测用户对电影的评分,当然这是在一个多于 1 亿得分(根据 480000 个用户和将近 18000 部电影得出的得

4、分)的训练集的情况下完成的。每个训练数据有用户,电影,日期,评分四个元素组成,评分是一个介于1 到 5 的值。测试数据集是由 2800000 个数据节点和评分组成,目标是在预测评分时将RMSE(均方根误差,http:/ 自身的推荐系统在测试数据集上的得分是 0.9514,Netflix Prize 这个项目的目标是获得比该得分高出 10%的解决方案。该问题展示了一系列的挑战,(所以到目前为止,奖金还未被参赛者赢取)第一个挑战是数据集比之前的基准数据集还要大 100 倍,这会消耗大量的模型训练时间和系统内存要求。第二个挑战是只有 1%的用户- 电影矩阵是在观察中的,大部分潜在的评分都是不可见的。

5、第三个挑战是由于用户行为训练数据集和测试数据集都会存在脏数据,我们不能期望用户是完全可预测的。第四个挑战是分配给每个训练和测试数据集中用户的评分是不同的,由于训练数据集是由 1995-2005 年之间的数据组成而测试数据集是由 2006 年的评分组成。特别的,评分越少的用户在测试集中是更为有效的。直观来讲,预测一个在训练集中表示较为稀疏(该用户对事物的评分较少)的用户的评分是一件很困难的事情。在此论文中,我们将会详细讨论该问题,接着会描述一个并行算法:ALSWR。2.问题结构(配方)使 R=rijnunm(数学公式请参看原文)表示一个用户-电影矩阵,其中 rij 表示 i 用户对j 电影的评分

6、,这个分数可以是一个真实的数字或是无值的。nu 指定了用户数量,nm 指定了电影数量。在许多的推荐系统中,其任务就是根据已知的评分值去估算那些未知的评分。我们从矩阵 R 的一个低秩近似值开始讲起。通过赋予用户和电影一个小尺寸的特征空间我们可以接近用户和电影的数据模型。每个用户电影都存在一个特征,并且每个用户对电影作出的评分(已知和未知的 )对应着用户和电影特征向量值的一个模型。更为特别的是,U=ui代表用户的特征矩阵,ui 属于 Rnf,其中 i=1nu, M=mj表示电影特征矩阵, mj 属于 Rnf其中 j=1nm,这里的 nf 是特征空间的尺寸,也就是模型中隐藏变量的数量。如果用户评分是

7、完全可以预测的并且 nf 也足够的大,我们可能会期望 rij = , 8 i, j。然后在实验当中,我们最小化 U 和 M 的一个损失函数(http:/ U 和 M。在本文中,我们将会学习 mean-square(http:/en.wikipedia.org/wiki/Root_mean_square)这个损失函数,该损失是由于一个单一评分是被 squared error(http:/en.wikipedia.org/wiki/Mean_squared_error)定义的:L2(r, u,m) = (r )2.。接下来我们有以下的经验,将所有的损失作为已知评分的损失的和:Lemp(R,U,M)

8、 =1/n X(i,j)2IL2(rij , ui,mj),其中 i 代表已知评分集合的索引,n 代表 I 的大小。最后可以将低秩近似值问题定义为:(U,M) = arg min(U,M)Lemp(R,U,M)。其中 U 和 M 是真实的矩阵,并有 nf 列。在这个问题中,等式 3 中有(nu+nm)*nf 个参数将被决定,另一方面,已知的评分集合 I 的元素个数远远少于 nu*nm,因为对于很少的用户来对 18000 个电影进行评分是不可能的。为了解决此问题,对一个很稀疏的数据集使用等式 3 经常会过于庞大,为了避免这个问题,一个简单的方法就是使用一下方式:Lreg_ (R,U,M) = L

9、emp(R,U,M) + _(kUUk2 + kMMk2)。对于一系列的已选的Tikhonov(http:/en.wikipedia.org/wiki/Tikhonov_regularization)矩阵。3.解决方法在此节中,我们描述了一个迭代算法(ALSWR)来解决低秩近似值问题,接着会实现基于并行 Matlab 平台的并行实现。3.1ALSWR由于评分矩阵同时包含信号和脏数据,重要的是移除脏数据和使用恢复的信号来预测失去的评分。奇异值分解(SVD,http:/zh.wikipedia.org/zh-cn/%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7

10、%A3)是一种估算原生用户-电影评分矩阵 R 的方法,它使用两个 k 排名的矩阵 R = UT M 的结果作为估算标准。由 SVD 给出的解决方案最小化 Frobenious norm(http:/ R 的所有元素上最小化 RMSE 是等效的。然而,由于在矩阵 R 中有很多的空值,标准的 SVD 算法不能找到U 和 M 矩阵。在本文中,我们使用 ALS 来解决低秩近似矩阵分解问题的步骤如下:1. 使用指定电影的平均得分作为矩阵 M 的第一行,余下的行值使用小的随机值来填充。2. 使用 squared errors 和的最小值来填充 U 矩阵。3. 相似的使用 squared errors 和的

11、最小值来填充 M 矩阵。4. 重复 2,3 步直到满足了停止标准(stopping criterion(http:/lib.org/utk/papers/templates/node83.html)。这里使用的停止标准是基于在探测数据集上观测的 RMSE,修改 U 和 M 的第一次循环之后,如果探测数据集上的观测的 RMSE 之间的差异小于 1 个基点,那么该循环就会停止并且会使用获得的 U,M 来作为测试数据集上的最后预测根据。该探测数据集是由 Netflix 提供的,它与那些隐藏的测试数据集有相同的结构。之前的第二节中,存在许多的自由参数,在没有正交化的情况下,ALS 可能会导致过度拟合(

12、http:/en.wikipedia.org/wiki/Overfitting),一种常见的解决方法是使用吉洪诺夫正交化(Tikhonov regularization(http:/en.wikipedia.org/wiki/Tikhonov_regularization),该方法会使大量的参数尽量影响最小化。我们尝试了很多的正交化矩阵,发现下面的 WR正交矩阵的效率最高,因为根据经验当我们增加特征值的数量或循环次数的时候它从不会导致测试数据过度拟合:f(U,M) = X(i,j)2I(rij uTi mj)2 + _0Xinuikuik2 +Xjnmj kmjk21A(公式看原文!),其中

13、nui 和 nmj 分别表示用户 i 和电影 j 的评分数量,如果使 Ii 代表用户 i 评论过的电影 j 的集合,那么 nui 就是 Ii 的基数,相似的如果 Ij 表示对电影 j 评论过的用户集合,那么 nmj 就是 Ij 的基数。这个和吉洪诺夫正交化中的 U = diag(nui)和 M = diag(nmj )是一样的。现在我们将演示如何在 M 给定的情况下填充(solve)矩阵 U。U 的列数(ui)是在已知用户 i 的评分和用户 i 评论过的电影特征向量关系下解决正规化的线性最小二乘问题时给定的。(公式省略见原文)。相似的,当 M 被修改时,我们会通过正规化线性最小二乘解来计算 m

14、j 的值,方法是使用用户对电影 j 评分特征向量和对电影 j 的评分,如下:mj = A1j Vj , 8j。3.2 使用加权正规化来并行计算 ALS我们通过并行修改 U 和 M 来并行计算 ALS,我们使用的是最新版本的 Matlab,该版本的Matlab 允许在分开的 Matlab 上进行并行计算并互相通信(如分布式数据库),这些分开的 Matlab 拥有自己的空间和硬件环境。每个这样的 Matlab 被称为一个单独的实验室,所以我们就会通过识别码(labindex)和一个静态变量(numlabs)得知当前共有多少个labs。这些矩阵可以是私有(拥有自己的一个拷贝并且值都是不同的)的,也可

15、以是复制过来的(私有但是所有的 labs 的值都是相同的)或是分布式(只有一个矩阵但在所有的labs 当中是分区存储的)的。分布式的矩阵是存储和使用大容量数据集的简单方式,因为数据集过大的话,在一个存储器上存储是非常耗内存的。在我们的问题上,我们会使用评分矩阵 R 的拷贝作为分布式来存储,一份只存储行(例如只有用户)另一份只存储列(只有电影)。我们将会计算分布式的值并修改 U 和 M,在计算 U 时我们会使用一份 M 的拷贝,反之亦然。为了修改 M,我们需要 U 的一份拷贝,我们会使用电影的评分数据来修改。这是由相同数量的电影分配的。存储电影 j 评分的 lab 自然地会成为 M 的列值,这些

16、列值也被称为影片j 的特征向量。每个 lab 并行地在对应的影片组中为所有的电影计算 mj 值,这些计算出来的值接着会被收集起来以保证在一个复制的数组当中每个节点都有 M 的所有数据。相同的要修改 U,所有的用户会被分成相同数量的用户组,接下来每个 lab 用以行分开的评分值来在对应用户组中修改用户向量。下面的 Matlab 代码片段实现了给定 U 情况下修改 M 的实现:function M = updateM(lAcols, U)lamI = lambda * eye(Nf);lM = zeros(Nf,Nlm); lM = single(lM);for m = 1:Nlmusers =

17、find(lAcols(:,m);Um = U(:, users);vector = Um * full(lAcols(users, m);matrix = Um * Um + locWtM(m) * lamI;X = matrix vector;lM(:, m) = X;endM = gather(darray(lM);End对于以上的 Matlab 代码,lAcols 是一份 R 中列值的本地拷贝, locWtM 是所有电影在分开的电影组中的 nmj 向量,Nlm 表示在电影组中的电影数量。Nf 和 lambda 对应着 nf 和 ,它们是 ALS-WR 中唯一可变的参数。由于使用了分布式

18、(不共享内存算法)方式,该方法的计算时间节省了 5%。该算法实现了一个接近线性加速的功能:如果 nf=100,那么在使用一个处理器的情况下需要花费 2.5小时来修改 U 和 M,但如果有 30 个处理器那么只需要 5 分钟。在 30 个循环的条件下,计算 100 个隐藏因子需要 2.5 个小时。4.Netflix Prize 问题性能研究将我们的实验在 HP Proliant DL380 G4 上的 30 个处理器集群上运行,所有的处理器是Xeon 2.8Hz 并且每四个处理器分享 6GB 的内存。对于每个 nf 值,我们将 ALS-WR 进行了10 到 25 此的循环,并且在修改 U 和 M

19、 时如果在探测数据及上增加了少于 1bps 的 RMSE分数时循环就会轻质。最佳的 值会在试验和错误的情况下产生,测试的 RMSE 集合是从Netflix Prize 网站的子任务获得的,该测试分数的真正之对我们来说是未知的,为了创建模型和调整参数,我们将探测数据集从训练数据集中排除并将它用于测试。探测数据集是训练数据集的一个子集,是由 Netflix 提供的,它包含了 2006 年最新的 1408395 个评分,每个用户是随机分配并且最多只拥有 9 个评分。Netflix 将测试数据集隐藏了,测试数据集的分布和探测数据集的分布式一样的。4.1 预处理为了在预测结果时进行预处理,我们首先将一个

20、去全局的有待改进的方法应用到每个预测方法上,给定预测值 P,如果该 P 的值和测试数据集的值不一样,我们将使用一个变量T=mean(test)-mean(P)来转换所有的预测值。另外一种方法是直接将不同的预测值结合起来或获得一个更好的预测值。例如,给定两个预测值 P0 和 P1,我们可以获得预测值Px=(1-x)P0+xP1,并且使用线性回归(linear regression(http:/en.wikipedia.org/wiki/Linear_regression))来找到 X*值来使 RMSE(Px)的值减至最小。然后我们获得的 Px*值至少会比 P0 或 P1 值要好。4.2ALS 的

21、实验结果在实验当中最大的发现是 ALS-WR 从来不会发生数据过度拟合的情况,即使是增加循环的次数或隐藏特征值的数量都会发生过度拟合。如图 1(请看原文,一定要看!)所示,对于给定的 nf 和 ,每次循环都会提升探测数据及中的 RMSE 分数,并在循环 20 次之后该分数会趋于收敛。不同的 值会得出不同的分数,并且通常情况下我们更需要使用更小的 值来得到更好的 RMSE 值。图 2(请看原文!)显示了根据固定值 和不同数量的隐藏特征值(nf 值介于 2 到 20)获取的 ALS-WR 性能,对于每次试验,ALS-WR 会重复循环直到 RMSE 值提升幅度小于 1bps 为止。从该图我们可以看出

22、 RMSE 值会随着大的 nf值而单调递减,即使 nf 值是渐渐变小的(只要够大)。接下来我们使用大的 nf 值来进行试验,对于使用简单的 正规化(u = m = E)的 ALS,我们获得的 RMSE 值是 0.9184,对于使用权重-正规化和 nf 为 50 的 ALS,获得的 RMS值为 0.9114,如果 nf 值为 150,那么值为 0.9066。如果 nf 值为 300 并伴有全局偏量校正,RMSE 值为 0.9017,这时如果 nf=400,则 RMSE=0.9006;nf=500 并伴有全局偏移,则RMSE=0.9000。最终,当 nf=1000,RMSE=0.8985,在特征值

23、从 400 增加到 500 的过程中获得了 6bps 的提升,从 500 增加到 1000 的过程中大约有 15bps 的提升。然后,似乎0.8985 是使用 ALS-WR 能够获得极限值了,这个值比 Netflix 自身的 CineMatch 算法有了5.56%的性能提升,并且它是我们所知道的的单一方法解决此问题的最高得分了。4.3 其他的方法和线性混合我们也使用并行实现了其他两种有名的协同过滤技术。受限波尔兹曼机(Restricted_Boltzmann_machine(en.wikipedia.org/wiki/Restricted_Boltzmann_machine)是一种同时存在可见

24、状态和隐藏状态的中立图,它的无向边链接这每个可见状态和隐藏状态,因此得名受限。该方法先前被证明在 Netflix 竞赛中工作的很好,我们也用 Matlab实现了 RBM,并将它转化为了 PMODE(http:/en.wikipedia.org/wiki/PMODE)。对于一个有100 个隐藏单元组成的模型,在没有 PMODE 的情况下 RBM 花费了将近 1 小时的时间来完成一个循环,然后使用 30 个 labs 的 PMODE 只花费了 3 分钟。K-近邻(KNN (http:/en.wikipedia.org/wiki/K-nearest_neighbor_algorithm)算法也是一种

25、进行推荐的好方法。对于一个正确的距离矩阵,该矩阵中的每个数据节点都需要预测的情况下,k 个最邻近值的平均得分会被用来预测当前节点的得分。由于有许多的用户-用户对需要在合理的时间和空间内计算,我们会使用电影-电影中的相似之处来计算。我们将用户分成用户组来实现并行 KNN 算法,这样一个 lab 就只处理一组用户了。对于 RBM,得到的分数是 0.9181,对于 KNN,当 k=21 并且有个优秀的相似方法,得到的分数为 0.9270。混合这三种方法得到的值是 0.8952(ALS+KNN+RBM),同样的比Netflix 自身的 CineMatch 推荐系统也有了 5.91%的性能提升。5 相关

26、工作现在有许多的学者和产业在研究推荐系统,低秩矩阵近似和 Netflix prize 问题。我们会简单介绍一些和我们有关系的一些相关内容。5.1 推荐系统推荐系统可以主要分为基于内容和系统过滤两类,推荐系统在学术和产业中已经有了很不错的研究结果。基于内容的推荐系统当然是要去分析某个事物的内容(如文本,元数据和特征)来鉴定关联事物,做的比较好的如 InfoFinder,NewsWeeder。协同过滤对大量的用户行为和口味进行聚合来为指定用户推荐相应的物品,做的比较好的有 GroupLens 和Bellcore Video。结合基于内容和协同过滤这两种方法的推荐系统有 Fab 系统和统一概率框架。

27、5.2Netflix Prize 方法对于 Netflix Prize,Salakhutdinov et al 使用受限波尔兹曼机获得了略低于 0.91 的 RMSE分数,他们同时使用梯度下降实现了低秩近似值方法,这种方法在 20-60 个隐藏特征值的情况下获得的分数略高于 0.91。他们的 SVD 方法和我们的 ALS-WR 是相似的,但是我们使用的是 ALS 并不是梯度下降来解决优化问题,并且我们可以使用一个更大的特征值来获得 RMSE 分数的明显提升。在众多的 Netflix 问题的解决方案中,Bell et al 结合 KNN 和低秩近似的方式获得分数都比使用单独一种方式获得的分数要高

28、。他们的团队由于得到的 RMSE 分数为 0.8712(比Netflix 自身的方法高出 8.5%)在 2007 年 10 月获得了进步奖。然而他们的解决方案是将107 中个性化解决方案进行线性组合,这 107 中方案中的大部分都是从 ALS,RBM,KNN 衍生出来的。在单独使用 ALS 的情况下他们的最好得分是高于 0.9000。5.3 低秩近似值方法我们可以使用低秩矩阵分解(奇异值分解的变体)来估算一个指定的矩阵,例如信息检索就是这样的一种情况。其他的矩阵分解方法如非负矩阵分解和最大边矩阵分解都在 Netflix Prize 中有所应用。对于部分指定的矩阵,SVD 就不适用了,为了将已知

29、的元素和对应的低秩矩阵因子之间的平方差最小化,ALS 被证明是一种有效地方式,它提供了非正交因子。SVD 会在一个时间下计算一行值,而对于部分指定的矩阵,没有这样的递归公式来解决。使用 ALS 的好处是它可以很容易实现并行化,像 Lanczos 一样,对于稀疏并全部指定的矩阵,ALS 保留了已知的矩阵元素的稀疏结果并且它的存储效率是很高的。6.结语在本文中我们介绍了一种简单的并行算法来对大数据进行协同过滤,这种算法和在文献中出版过的任何一种方法是相似的。该算法对于大数据集具有很好的可扩展性,通过使用 RBM和 KNN 等其他复杂的混合模式可以适当地获得更好的分数。特别地 ALS-WR 能够在没

30、有日期和电影名称的情况下获得很好的结果,通过让创建模型和调整参数这些过程并行化能够获得更快的运行速度,写一篇文章来解释为什么 ALS-WR 从不会过度拟合你的数据将会是一件很有趣的事情。由于当今世界已经进入互联网计算和网络应用的时代,大型数据的计算变得无处不在。传统的单片机单线程计算已经变得不可行。并行和分布式计算对于大多数的计算环境来说已经是一个必不可少的组件了。互联网老大 Google 公司将拥有它们自己的并行分布式计算的基础设施,这些技术如 MapReduce,Google File System,Bigtable 等都做出了巨大的贡献。许多的技术型公司并没有资本和相关技术来建立自己的并行分布式计算设施,它们反而更愿意使用可行的解决方案来解决这些问题。Hadoop 是一个由 Yahoo!投资的开源项目,它致力于使用开源方式来复制 Google 的计算设施。我们已经发现并行 Matlab 是灵活和有效的,并对于程序来说是很简单的。因此,从我们的经验出发,这看起来在将来会是一个解决可扩展并行分布式计算的一个强有力的竞争者。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报