CN110210691B - 资源推荐方法、装置、存储介质及设备 - Google Patents
资源推荐方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN110210691B CN110210691B CN201810395012.7A CN201810395012A CN110210691B CN 110210691 B CN110210691 B CN 110210691B CN 201810395012 A CN201810395012 A CN 201810395012A CN 110210691 B CN110210691 B CN 110210691B
- Authority
- CN
- China
- Prior art keywords
- matrix
- initial
- target
- vector
- decomposition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 106
- 239000011159 matrix material Substances 0.000 claims abstract description 811
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 139
- 238000005070 sampling Methods 0.000 claims abstract description 38
- 230000015654 memory Effects 0.000 claims abstract description 14
- 239000013598 vector Substances 0.000 claims description 145
- 230000008569 process Effects 0.000 claims description 41
- 229940050561 matrix product Drugs 0.000 claims description 39
- 238000004364 calculation method Methods 0.000 claims description 17
- 238000012804 iterative process Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- 230000017105 transposition Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- WYROLENTHWJFLR-ACLDMZEESA-N queuine Chemical compound C1=2C(=O)NC(N)=NC=2NC=C1CN[C@H]1C=C[C@H](O)[C@@H]1O WYROLENTHWJFLR-ACLDMZEESA-N 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000513 principal component analysis Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0639—Performance analysis of employees; Performance analysis of enterprise or organisation operations
- G06Q10/06393—Score-carding, benchmarking or key performance indicator [KPI] analysis
Abstract
本发明公开了一种资源推荐方法、装置、存储介质及设备,属于大数据技术领域。方法包括:获取评分数据,并将评分数据转换为初始矩阵,初始矩阵中的每个元素为一个用户对一个目标资源的评分;基于初始矩阵以及过预设采样条件,获取初始矩阵的近似基;基于初始矩阵以及近似基,构建目标矩阵,目标矩阵的维数小于初始矩阵;基于目标矩阵,获取对初始矩阵的矩阵分解结果,基于矩阵分解结果进行资源推荐。本发明通过上述步骤将初始矩阵的维数大幅缩减,实现了将初始矩阵缩减至一个维数很低的目标矩阵,进而利用目标矩阵完成对初始矩阵的分解,不但耗时较短,而且不会出现因内存溢出而导致的分解失败情况,所以该种资源推荐方式耗时较短,效果较佳。
Description
技术领域
本发明涉及大数据技术领域,特别涉及一种资源推荐方法、装置、存储介质及设备。
背景技术
矩阵分解,是指将一个矩阵分解成两个或多个矩阵的乘积。SVD(Singular ValueDecomposition,奇异值分解)作为一种矩阵分解算法,目前已经应用在诸如推荐系统、隐形语义分析和数据降维等多个领域。其中,SVD实现了将任意矩阵分解成奇异值矩阵Σ、左奇异向量U以及右奇异向量V的乘积。以推荐系统为例,在推荐领域中SVD主要用于减小协同过滤算法的计算量,由于协同过滤算法主要依靠用户之间的相似性或资源之间的相似性来进行推荐,所以相似性计算是协同过滤算法的重点。然而,当评分矩阵大到一定程度时,相似性计算的计算量便会非常庞大,其中,评分矩阵记录了不同用户对不同资源的评分。此时便需要采用SVD来分解评分矩阵以实现降维,之后,便可利用矩阵分解结果计算用户相似性和资源相似性,进而基于相似性结果完成资源推荐。
相关技术中,在资源推荐过程中进行矩阵分解时主要是基于Spark Mllib包中提供的SVD分解方式实现,详细过程为:以分布式方式存储待分解的矩阵A,为了避免直接计算格莱姆矩阵G=ATA时容易产生的内存溢出问题,相关技术根据Lanczos算法原理,通过迭代方式逐步计算G与矩阵A的右奇异向量V的乘积,得到三对角矩阵;之后,通过Arpack算法,计算该三对角矩阵的奇异值矩阵与右奇异向量,然后再根据公式U=AVΣ-1得到矩阵A的左奇异向量U,至此便完成了将矩阵A分解成为奇异值矩阵Σ、左奇异向量U和右奇异向量V三者的乘积。
针对上述在资源推荐过程中涉及的矩阵分解方式,为了使Arpack算法达到收敛,需要不断的计算G与右奇异向量V的乘积,当遇到矩阵A的特征值下降非常缓慢或者需要求取的奇异值个数较大的时候,在Arpack算法达到收敛前往往需要迭代运算很多轮,这将导致得到的三对角矩阵非常大,很容易导致内存溢出,从而致使资源推荐失败;此外,该种矩阵分解过程也非常耗时,致使进行资源推荐耗时过长。
发明内容
本发明实施例提供了一种资源推荐方法、装置、存储介质及设备,解决了相关技术中存在的因矩阵分解过于耗时以及内存容易溢出从而导致的资源推荐效果不佳的问题。所述技术方案如下:
一方面,提供了一种资源推荐方法,所述方法包括:
获取评分数据,所述评分数据中包括用户对目标资源的评分;
将所述评分数据转换为初始矩阵,所述初始矩阵中的每个元素为一个用户对一个目标资源的评分;
基于所述初始矩阵以及过预设采样条件,获取所述初始矩阵的近似基;
基于所述初始矩阵以及所述近似基,构建目标矩阵,所述目标矩阵的维数小于所述初始矩阵;
基于所述目标矩阵,获取对所述初始矩阵的矩阵分解结果,所述矩阵分解结果包括描述用户特征属性的第一矩阵和描述目标资源特征属性的第二矩阵;
基于所述矩阵分解结果进行资源推荐。
在另一个实施例中,所述基于所述正交向量Q0以及所述初始矩阵,构建q轮的迭代过程,包括:
获取所述初始矩阵的转置矩阵;
对于第j轮迭代过程,对所述初始矩阵的转置矩阵与正交向量Qj-1进行矩阵乘积运算,得到矩阵
对所述矩阵进行QR分解,得到所述矩阵/>的正交向量/>
对所述正交向量与所述初始矩阵进行矩阵乘积运算,得到矩阵Yj;
对所述矩阵Yj进行QR分解,得到所述矩阵Yj的正交向量Qj;
其中,j为正整数且j的取值为1至q。
在另一个实施例中,所述对所述矩阵Yj进行QR分解,得到所述矩阵Yj的正交向量Qj,包括:
当所述矩阵Yj为分布式矩阵时,将所述矩阵Yj按行划分为多个矩阵;
对划分出来的每一个矩阵均进行QR分解,并将QR分解后得到的多个R矩阵进行整合,得到分布式矩阵R';
对所述分布式矩阵R'再次进行QR分解,得到矩阵R”;
对所述矩阵Yj和所述矩阵R”的逆矩阵进行矩阵乘积运算,得到所述正交向量Qj。
另一方面,提供了一种资源推荐装置,所述装置包括:
第一获取模块,用于获取评分数据,所述评分数据中包括用户对目标资源的评分;
转换模块,用于将所述评分数据转换为初始矩阵,所述初始矩阵中的每个元素为一个用户对一个目标资源的评分;
第二获取模块,用于基于所述初始矩阵以及过预设采样条件,获取所述初始矩阵的近似基;
构建模块,用于基于所述初始矩阵以及所述近似基,构建目标矩阵,所述目标矩阵的维数小于所述初始矩阵;
第三获取模块,用于基于所述目标矩阵,获取对所述初始矩阵的矩阵分解结果,所述矩阵分解结果包括描述用户特征属性的第一矩阵和描述目标资源特征属性的第二矩阵;
推荐模块,用于基于所述矩阵分解结果进行资源推荐。
另一方面,提供了一种存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的资源推荐方法。
另一方面,提供了一种用于资源推荐的设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的资源推荐方法。
本发明实施例提供的技术方案带来的有益效果是:
在资源推荐过程中进行矩阵分解时,本发明实施例首先基于待分解的初始矩阵以及预设采样条件构建初始矩阵的近似基,之后再基于初始矩阵和该近似基构建一个维数小于初始矩阵的低维矩阵,并基于该低维矩阵来获取初始矩阵的分解结果,由于通过上述步骤实现了将初始矩阵缩减至一个维数非常低的低维矩阵,进而利用维数较低的低维矩阵来完成对初始矩阵的分解,因此不但耗时较短,而且即便遇到初始矩阵的特征值下降非常缓慢或者需要求取的奇异值个数较大的情况,也不会出现因内存溢出而导致的分解失败情况,所以该种资源推荐方式耗时较短,效果较佳。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明实施例提供的一种资源推荐方法涉及的实施环境的架构图;
图1B是本发明实施例提供的一种资源推荐方法的流程图;
图2是本发明实施例提供的一种矩阵分解方法的流程图;
图3是本发明实施例提供的一种矩阵分解方法的流程图;
图4是本发明实施例提供的一种矩阵分解方法的流程图;
图5是本发明实施例提供的一种矩阵分解方法的流程图;
图6是本发明实施例提供的一种矩阵分解方法的流程图;
图7是本发明实施例提供的一种矩阵分解的整体流程示意图;
图8是本发明实施例提供的一种矩阵分解方法的流程图;
图9是本发明实施例提供的一种矩阵乘积的运算示意图;
图10是本发明实施例提供的一种矩阵分解方法的流程图;
图11是本发明实施例提供的一种矩阵乘积的运算示意图;
图12是本发明实施例提供的一种对矩阵进行QR分解的示意图;
图13是本发明实施例提供的一种资源推荐装置的结构示意图;
图14是本发明实施例提供的一种用于资源推荐的设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本发明实施例进行详细地解释说明之前,先对本发明实施例涉及的一些名词进行解释说明。
spark:是一个围绕速度、易用性和复杂分析构建的大数据处理框架,换一种表达方式,其是专为大规模数据处理而设计的快速通用的计算引擎。其中,spark主要有以下几个特点:
首先,高级API(Application Programming Interface,应用程序编程接口)剥离了对集群本身的关注,spark应用开发者可以专注于应用所要做的计算本身;其次,spark速度很快,支持交互式计算和复杂算法;再者,spark是一个通用的计算引擎,可用它来完成各种各样的运算,包括但不限于SQL(Structured Query Language,结构化查询语言)查询、文本处理、机器学习等,而在spark出现之前,一般需要学习各种各样的引擎来分别处理这些需求。
SVD:假设矩阵A是一个m*n的矩阵,那么定义矩阵A的SVD为:
A=UΣVT
其中,U称为左奇异向量,是一个m*k的矩阵;Σ称为奇异值矩阵,是一个k*k的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值;V称为右奇异向量,是一个k*n的矩阵;需要说明的是,左奇异向量U和右奇异向量V均为酉矩阵,即满足UTU=I、VTV=I。其中,上述k是一个远小于m和n的正整数。
由上述可知,一个大维数的矩阵A可以用三个小维数的矩阵U、Σ、V来表示,由于这个重要的性质,SVD可以用于PCA(Principal Components Analysis,主要成分分析)降维,以用来做数据压缩和去噪,也可以用于推荐算法,将与用户喜好对应的矩阵进行特征分解,进而得到隐含的用户需求来进行推荐,还可以用于自然语言处理中的诸如潜在语义索引算法中,本发明实施例对此不进行具体限定,且目前SVD的分布式版本也已经在spark中实现。
Randomized SVD:一种矩阵分解方法,与传统的SVD相比,该种矩阵分解方式的稳定性更强,时间复杂度更小,更适用于大型矩阵的分解要求。目前SVD的分布式版本已经在spark中实现,对于大型矩阵的分解,往往会利用SVD完成,然而当矩阵的维数与奇异值个数上升到一定程度时,SVD的分解过程往往会因为内存溢出而失败。基于此,本发明以spark为平台,提供了一种Randomized SVD,相比于传统的SVD,它更能够适应大型矩阵分解的要求,而且速度快。
简单的说,Randomized SVD也是一种矩阵分解方式,该种矩阵分解方式是在SVD的基础上实现的。该种矩阵分解方式的原理可简述为:对于待分解的原始矩阵,构建一个能够捕捉到原始矩阵“行为”的低维矩阵,实现将原始矩阵限制在低维空间,并对低维矩阵进行矩阵分解,例如进行SVD,进而通过对低维矩阵的分解来实现得到原始矩阵的分解结果。
下面对本发明实施例提供的在资源推荐过程中涉及的矩阵分解的实施环境进行简单介绍。如图1A所示,在本发明实施例中进行矩阵分解的执行主体为spark系统中的计算节点,该计算节点具体可表现为一个终端或一个服务器,本发明实施例对此不进行具体限定。
在本发明实施例中,实现了以下几方面:
(1)、以spark平台为分布式计算引擎,借用HDFS(Hadoop Distributed FileSystem,Hadoop分布式文件系统)或hive表的方式存储分布式数据,能够处理比之前spark中实现的SVD更高维度的矩阵以及更大的奇异值个数,且用时更短。
(2)、根据不同的计算精度要求,本发明实施例的Randomized SVD提供了两种计算模式:无QR过程的Power迭代模式和QR的子空间迭代模式。其中,两者均是针对矩阵维数较大或者矩阵的奇异值下降缓慢时计算结果不准确时所采取的措施。对这两种计算模式的详细说明还请参见后文。
(3)、针对不同的矩阵类型,本发明实施例提供了不同的计算过程。其中,矩阵类型可分为稠密型和稀疏型。
而之所以基于不同的矩阵类型采取不同的计算过程是考虑到:稀疏型矩阵与稠密型矩阵所处理的矩阵维度不同。其中,针对稀疏型矩阵,存储与处理的矩阵维度要比稠密型矩阵大得多,因此,在计算两个大型矩阵的乘积时,本发明实施例对于稀疏型矩阵与稠密型矩阵分别进行了处理。
以待分解的初始矩阵A为稠密型矩阵为例,则在对初始矩阵A和另一个大型矩阵进行矩阵乘积运算时,本发明实施例首先避免将初始矩阵A进行转置,同时根据矩阵乘积原理,将这两个矩阵通过每行的索引采用join方式连接起来,之后再按照初始矩阵A的列,来计算乘积结果的每一行。
以待分解的初始矩阵A为稀疏型矩阵为例,则在对初始矩阵A和另一个大型矩阵进行矩阵乘积运算时,本发明实施例则将另一个大型矩阵进行转置并以分布式方式存储在多个节点上,然后将初始矩阵A以本地方式存储并广播至多个节点,以与转置后的矩阵中的每一行进行乘积运算。其中,在相乘时,仅需要根据初始矩阵A中存在的数值的位置来遍历转置后的矩阵中的每行元素,这会极大地减小时间复杂度。
在另一个实施例中,在对最终构建的低维矩阵进行SVD分解时,考虑到稀疏型矩阵的列向量维度往往很高,而且远大于其行向量维数,因此,针对稀疏型矩阵来说,本发明实施例可对低维矩阵进行转置,并根据SVD分解原理,来将转置后计算的左奇异向量和右奇异向量进行互换,以保证最终对初始矩阵A的分解结果的正确性。
需要说明的是,无论是对稠密型矩阵还是稀疏型矩阵进行Randomized SVD分解过程,两种矩阵均按行进行分布式存储。比如,每一行均存储在不同的计算节点上。其中,针对稠密型矩阵来说,矩阵中的每行每列元素均完全存储下来并参与计算,这种矩阵的列向量相比稀疏型矩阵而言要小很多。而针对稀疏型矩阵来说,仅存储矩阵中的非零元素,且计算时也仅针对非零元素进行,通常稀疏型矩阵往往是列数更高的矩阵。在实际进行矩阵分解时,Randomized SVD自动通过判断矩阵是属于稀疏型还是稠密性而选择相应的分解方式。
下面以资源推荐场景为例,对推荐场景下的矩阵分解方式进行说明。
假设现有评分矩阵Am×n,该评分矩阵采用矩阵的形式记录了m个用户对n个目标资源的评分,该评分矩阵的每一行代表一个用户,每一列代表一个目标资源,而该评分矩阵中的各个数值代表了各个用户对各个目标资源的评分。即,评分矩阵中的每个元素为一个用户对一个资源的评分。
在将该评分矩阵进行矩阵分解后,可得到下述矩阵,如下所示:
Am×n=Um×kΣk×kVk×n,其中k是一个远小于m和n的数。
此时,矩阵Um×k记录了m个用户的特征属性,该矩阵可以用来计算不同用户之间的相似性,在评分矩阵中两行之间的距离越近,则标明这两个用户越相似。而矩阵Vk×n记录了n个目标资源的特征属性,该矩阵可以用来计算不同资源之间的相似性,在评分矩阵中两列之间的距离越近,则标明这两个资源越相似。通过以上的矩阵分解,便可以利用规模更小的矩阵来计算不同用户之间的相似性以及不同资源之间的相似性,之后,可基于相似性结果完成资源推荐。
需要说明的是,上述提及的资源包括但不限于文本、视频、音频等多媒体资源、实体商品等,本发明实施例对此不进行具体限定。且本发明实施例提供的矩阵分解方法除了可应用在推荐系统之外,还可应用在前文提及的其他场景下,仅需依据不同的数据来构建待分解的初始矩阵,并对其执行本发明实施例提供的矩阵分解过程。
图1B是本发明实施例提供的一种资源推荐方法的流程图。参见图1B,本发明实施例提供的方法流程包括:
101、获取评分数据,将该评分数据转换为初始矩阵A,该评分数据中包括用户对目标资源的评分,该初始矩阵A中的每个元素为一个用户对一个目标资源的评分。
在本发明实施例中,该评分数据中记录了m个用户对n个目标资源的评分。对应地,初始矩阵A的大小为m*n,即初始矩阵A为m行n列,且每一行代表一个用户,每一列代表一个资源,初始矩阵A中的各个数值代表了各个用户对各个资源的评分,即初始矩阵A采用矩阵的形式记录了m个用户对n个目标资源的评分。
而无论初始矩阵A是稀疏型矩阵还是稠密型矩阵,本发明实施例均按行对其进行分布式存储,比如,每一行均存储在不同的计算节点上,本发明实施例对此不进行具体限定。
102、获取输入的奇异值个数k以及过采样参数p,构建随机采样矩阵Ω,随机采样矩阵Ω的大小为n*(k+p),k与p之和不大于m和n中的最小者。
其中,k与p之和不大于m和n中的最小者,即需要满足k+p≤min(m,n)。
在本发明实施例中,上述随机采样矩阵也可称之为高斯随机矩阵。在构建矩阵Ω时,本发明实施例具体是构建一个由k+p个n维的随机列向量组成的矩阵,其中,每一个列向量中的值均采样自标准正态分布,所以这些采样的列向量线性独立。
103、基于初始矩阵A以及随机采样矩阵Ω,获取初始矩阵A的近似基Q。
需要说明的是,本发明实施采用随机采样方式来获取近似基Q,即上述步骤102和步骤103所示的奇异值个数k、过采样参数p也称之为预设采样条件。
本发明实施例的一个关键点是获取矩阵A的近似基Q。在本发明实施例中,提供了三种不同的获取近似基Q的方式,分别以方式一、方式二以及方式三进行指代,下面分别对这三种方式进行详细说明。
方式一、
如图2所示,在获取近似基Q时,上述步骤103可包括步骤103a和步骤103b两个子步骤。
103a、对初始矩阵A和随机采样矩阵Ω进行矩阵乘积运算,得到矩阵Y0。
其中,Y0=AΩ。
对于分布式存储的初始矩阵A与本地存储的随机采样矩阵Ω的乘积,在本发明实施例中可直接采用spark提供的函数实现,本发明实施例对此不进行具体限定,得到的乘积结果Y0同样也是一个分布式矩阵,需进行分布式存储。
103b、利用QR分解获取矩阵Y0的正交基,得到近似基Q。
其中,Q=qr(Y0)。
需要说明的是,当矩阵的奇异值衰减较快的时候,方式一的表现良好。然而,当矩阵的维数较大或者矩阵的奇异值下降缓慢时,基于上述方式一得到结果往往不准确,这主要是由于较小的奇异值对应的奇异值向量干扰了计算的结果。为此,Randomized SVD提出了方式一的改进版本,主要是通过矩阵的多次(the power of matrix)乘积运算来减小这些奇异值向量相对于主要奇异值向量的权重。即修改上述步骤103a和103b,采用迭代的方式获得上述近似基Q,具体参见下述方式二。
在另一个实施例中,在基于方式二和方式三获取上述近似基Q时,本发明实施例还包括一个获取进行迭代运算的目标迭代次数q的步骤,参见图3,上述步骤102和步骤103还可以分别被下述步骤101-1以及步骤103-1所替换。
102-1、获取输入的奇异值个数k、过采样参数p以及目标迭代次数q,构建随机采样矩阵Ω,随机采样矩阵Ω的大小为n*(k+p),k与p之和不大于m和n中的最小者。
其中,q的获取方式包括但不限于下述两种:
第一种、将输入的迭代次数作为目标迭代次数q。
该种方式针对指定迭代次数的情形。
第二种、按照经验值给出。
该种方式针对未指定迭代次数的情形,具体的执行方式为:
if k<0.1*Min(matRow,matCol),
迭代轮数为7
else
迭代轮数为4
其中,matRow指代初始矩阵A的行数m,matCol指代初始矩阵A的列数n。
换一种表达方式,第二种方式首先获取m和n中的最小者,然后获取m和n中的最小者与预设数值的乘积,得到目标阈值;而当奇异值个数k小于目标阈值时,将q赋值为第一数值;当奇异值个数k大于或等于目标阈值时,将q赋值为第二数值。
需要说明的是,上述预设数值除了取值为0.1,上述第一数值除了取值为7,上述第二数值除了取值为4之外,还可为其他取值,本发明实施例对此不进行具体限定。
103-1、按照目标迭代次数q,基于初始矩阵A以及随机采样矩阵Ω进行迭代运算,得到近似基Q。
方式二、Randomized SVD的Power迭代过程
103c、根据初始矩阵A、初始矩阵A的转置矩阵AT以及随机采样矩阵Ω,构建q轮的迭代过程,得到矩阵Y1,利用QR分解获取矩阵Y1的正交基,得到近似基Q。
即,本发明实施例交替使用A与AT构建q轮的迭代过程Y1=(AAT)qAΩ,再利用QR分解获得上述近似基Q=qr(Y1)。
针对上述无QR过程的Power迭代模式,由于是针对矩阵较大或者矩阵的奇异值下降缓慢时计算结果不准确采取的措施,所以方式二通过矩阵的多次乘积运算来减小这些奇异值向量相对于主要奇异值向量的权重。
进一步,为了避免上述Power迭代过程中数值较小的奇异值所携带的信息在计算过程中丢失,还可以在方式二中每次进行完A或者AT的乘积运算后,均对矩阵乘积的列向量进行正交化处理,即如下方式三。
方式三、Randomized SVD的子空间迭代过程
参见图4,方式三获取上述近似基Q的步骤可简单划分为下述几个步骤:
103d、对初始矩阵A和随机采样矩阵Ω进行矩阵乘积运算,得到矩阵Y0。
103e、对矩阵Y0进行QR分解,得到矩阵Y0的正交向量Q0。
103f、基于正交向量Q0以及初始矩阵A,构建q轮的迭代过程。
在本发明实施例中,在基于正交向量Q0以及初始矩阵A,构建q轮的迭代过程时,可采取下述方式实现:
1、获取初始矩阵A的转置矩阵AT。
2、对于第j轮迭代过程,对转置矩阵AT与正交向量Qj-1进行矩阵乘积运算,得到矩阵
其中,j为正整数且j的取值为1至q。
3、对矩阵进行QR分解,得到矩阵/>的正交向量/>
4、对正交向量与初始矩阵A进行矩阵乘积运算,得到矩阵Yj。
5、对矩阵Yj进行QR分解,得到矩阵Yj的正交向量Qj。
通过伪代码来实现即:
for j=1,2,...q
形成并计算其QR分解/>
形成并计算其QR分解/>
end
4、将第q轮得到的正交向量Qq作为近似基Q,即Q=Qq。
针对上述QR的子空间迭代模式,在方式二的基础上实施了更复杂的计算过程,即每次做矩阵乘积后对矩阵乘积的列向量均进行正交化,以使后续得到的矩阵分解结果的精度更高。
104、基于初始矩阵A以及近似基Q,构建目标矩阵B,目标矩阵B的维数小于初始矩阵A。
在本发明实施例中,目标矩阵B为本地矩阵,在构建目标矩阵B时,可采取下述方式完成:
首先,获取初始矩阵A的近似基Q的转置矩阵QT,之后,对初始矩阵A和转置矩阵QT进行矩阵乘积运算,得到目标矩阵B。
其中,目标矩阵B的大小为(k+p)*n,即矩阵B是一个k+p行n列的矩阵,相比初始矩阵A,矩阵B的行数非常小,是一个低维矩阵,因此可在本地存储,而无需采用分布式存储,且矩阵B更易于进行SVD分解。
105、基于目标矩阵B,获取对初始矩阵A的矩阵分解结果。
在本发明实施例中,参见图5,当目标矩阵B为稀疏型矩阵时,基于目标矩阵B,获取对初始矩阵A的矩阵分解结果,包括以下步骤:
105a、获取目标矩阵B的转置矩阵BT。
由于目标矩阵B是k+p行n列的矩阵,因此对于稀疏型矩阵来说,k+p远远小于n,这样目标矩阵B将是一个行数远小于列数的矩阵,若直接对目标矩阵B进行SVD分解会因为计算格莱姆矩阵BTB(n*n维的矩阵)而导致内存溢出,所以,对于稀疏型矩阵,本发明实施例考虑将目标矩阵B进行转置,这样计算的格莱姆矩阵是(k+p)*(k+p),维数将大大减小,非常有利于计算接下来的特征值与特征向量。
105b、对转置矩阵BT进行奇异值分解,并将转置矩阵BT的左奇异向量和右奇异向量进行互换。
如果针对目标矩阵B的SVD分解表达式为:,那么
因此,在将目标矩阵B进行转置以及将转置矩阵BT进行奇异值分解后,还需将得到的左奇异向量和右奇异向量进行互换,进而得到目标矩阵B实际的左奇异向量和右奇异向量。
105c、对近似基Q和经过互换后的左奇异向量UB进行矩阵乘积运算,并将得到的乘积结果更新为目标矩阵的左奇异向量UB。
即,UB=QUB
105d、基于目标矩阵的左奇异向量UB,获取初始矩阵A的左奇异向量UA,基于目标矩阵的右奇异向量VB,获取初始矩阵A的右奇异向量VA,基于目标矩阵的奇异值矩阵∑B,获取初始矩阵A的奇异值矩阵∑A。
即,UA=UB(:,1:k),ΣA=ΣB(1:k,1:k),VA=VB(:,1:k)
在另一个实施例中,参见图6,当目标矩阵B为稠密型矩阵时,基于目标矩阵B,获取对初始矩阵A的矩阵分解结果,包括以下步骤:
105e、对目标矩阵B进行奇异值分解,并对近似基Q和目标矩阵B的左奇异向量UB进行矩阵乘积运算。
105f、将得到的乘积结果更新为目标矩阵B的左奇异向量UB。
105g、基于目标矩阵的左奇异向量UB,获取初始矩阵A的左奇异向量UA,基于目标矩阵的右奇异向量VB,获取初始矩阵A的右奇异向量VA,基于目标矩阵的奇异值矩阵∑B,获取初始矩阵A的奇异值矩阵∑A。
106、基于初始矩阵A的矩阵分解结果进行资源推荐。
其中,矩阵分解结果包括描述用户特征属性的第一矩阵和描述目标资源特征属性的第二矩阵;在进行资源推荐时,基于第一矩阵计算不同用户之间的相似性,基于第二矩阵计算不同资源之间的相似性,进而根据用户之间的相似性或资源之间的相似性,进行资源推荐。
即,如前文所述,可以根据分解出来的左奇异向量中记录的用户的特征属性,来计算不同用户之间的相似性,以及根据分解出来的右奇异向量中记录的资源的特征属性,来计算不同资源之间的相似性,进而基于得到相似性结果来完成推荐。其中,一个核心推荐原则便是向相似的用户推荐类似的资源,或者将相似的资源推荐给类似的用户。
综上所述,针对方式二和方式三来说,本发明实施例提供的Randomized SVD可用图7所示的流程来描述。
1、判断迭代次数和迭代类型。
其中,迭代类型可分为无QR过程的Power迭代模式和QR的子空间迭代模式,即分别对应上述方式二和方式三。迭代次数和迭代类型均可用户指定。
2、构建随机采样矩阵Ω。
3、判断待分解的矩阵A是稀疏型还是稠密型。
4、按照迭代类型,进行无QR过程的Power迭代模式或QR的子空间迭代模式,以执行q轮迭代乘积运算。
5、若待分解的矩阵A为稀疏型,则在迭代乘积运算之后,执行以下步骤:
(1)、目标矩阵B=QTA,并对目标矩阵B进行转置;
(2)、转置矩阵BT的SVD分解;
(3)、左奇异向量和右奇异向量进行互换;
(4)、用近似基Q更新左奇异向量。
(5)、用目标矩阵B的分解结果来计算得出对矩阵A的分解结果。
6、若待分解的矩阵A为稠密型,则在迭代乘积运算之后,执行以下步骤:
(1)、目标矩阵B=QTA;
(2)、目标矩阵B的SVD分解;
(3)、直接使用左奇异向量和右奇异向量;
(4)、用近似基Q更新左奇异向量。
(5)、用目标矩阵B的分解结果来计算得出对矩阵A的分解结果。
需要说明的是,基于Randomized SVD的原理可知,利用k+p个n维的随机列向量,可以将初始矩阵A的维数缩减至k+p维。当初始矩阵A的维数m非常大时,k+p将远小于m,这时的矩阵将会被缩减成一个非常小的矩阵,甚至不需要像初始矩阵A那样采用分布式的方式进行存储,而是可以直接存储在本地,即上文提及的目标矩阵B。这种缩减方式将极大的降低矩阵分解的空间复杂度,同时由于SVD分解过程在维数较低的目标矩阵B上进行,所以也节约了矩阵分解的运行时间,进而降低了进行资源推荐的耗时。
在另一个实施例中,下面介绍两个大型矩阵乘积的实现。
以待分解的初始矩阵A为稠密型矩阵为例,则在构建q轮迭代过程时,若需要对初始矩阵A的转置矩阵AT与矩阵Y0(Y0=AΩ)这两个大型矩阵进行乘积运算,则首先避免将初始矩阵A进行转置,因为很容易导致内存溢出,同时,根据矩阵乘积原理,将这两个矩阵通过每行的索引采用join方式连接起来,之后,再按照初始矩阵A的列来计算乘积结果的每一行,即,参见图8,本发明实施例还包括下述步骤:
801、将初始矩阵A的每一行与矩阵Y0的每一行通过相同的行索引进行连接。
802、将初始矩阵A中每一行的元素分别与矩阵Y0中相应每一行的元素进行乘积运算。
803、将得到的每一行的乘积运算结果保存为一个数组.
804、将各个数组中相同位置的元素进行累加,得到按列存储的矩阵乘积AY0。
参见图9,下面说明矩阵A的每一行与矩阵Y0对应的行向量之间的计算方式。如图9所示,将矩阵A和矩阵Y0的每一行通过相同的行索引进行连接,同时,矩阵A中每一行的元素分别与矩阵Y0中对应每一行的元素进行乘积,并将乘积运算结果保存在数组中。然后,将上述得到的乘积运算结果在行与行之间进行累加操作,即每行的结果为一个数组,将每个数组中相同位置的元素进行累加,这样便得到了一个按列存储的AT与Y0的乘积矩阵。
以待分解的初始矩阵A为稀疏型矩阵为例,则在构建q轮迭代过程时,若对初始矩阵A的转置矩阵AT与矩阵Y0进行乘积运算,则参见图10,本发明实施例还包括下述步骤:
1001、获取矩阵Y0的转置矩阵并将转置矩阵/>分布式存储在多个节点上。
1002、将初始矩阵A进行本地存储,并将初始矩阵A广播至多个节点上,以使多个节点对转置矩阵中的每一行与初始矩阵A进行乘积运算。
由于初始矩阵A的非零元素很少,因此将初始矩阵A以本地方式存储。此外,在进行乘积运算时,仅需要根据初始矩阵A中存在的数值的位置来遍历YT中的每行元素即可。
1003、将多个节点的乘积运算结果进行转置处理,得到矩阵乘积ATY0。
以图11为例,YT是一个I行m列的矩阵,其中I=k+p,本发明实施例会将在本地存储的稀疏型矩阵A广播至上述多个节点,进而实现根据矩阵乘积原理完成YT的每一行与稀疏型矩阵A的乘积运算,之后再将乘积运算结果进行转置处理,便可得到矩阵乘积ATY0。
在另一个实施例中,下面介绍一下QR分解的分布式实现。
由于矩阵的乘积结果分为分布式和本地两种形式,因此本发明实施例提供了分布式矩阵和本地矩阵两种形式的QR分解过程。以分布式矩阵Z为例,针对分布式矩阵Z的QR分解过程,是将分布式矩阵Z按行划分成多个本地矩阵,之后,对每个本地矩阵进行QR分解,本地的分解过程可直接使用breeze包中的QR分解函数;之后,再根据对每个本地矩阵进行QR分解得到的分布式R矩阵再次进行QR分解,这样便获得最终需要的R矩阵。所以Q矩阵即可以通过分布式矩阵Z右乘以R矩阵的逆得到。
图12给出了对m行n列的分布式矩阵Z的QR分解示意图,由图12可以看到,当m行n列的矩阵Z按行分布式存储后,每个executor各自执行本地的QR分解任务,这便可得到分布式R矩阵,再对QR分解后得到的多个R矩阵进行整合,并将整合得到的矩阵再次执行QR分解过程,即可得到能够本地存储且实际需要的R矩阵。
以对上述103f中的矩阵Yj进行QR分解为例,则获取矩阵Yj的正交向量Qj,可包括下述几个步骤:将矩阵Yj按行划分为多个本地矩阵,对每一个本地矩阵均进行QR分解,并将QR分解后得到的多个R矩阵进行整合,得到分布式矩阵R';对分布式矩阵R'再次进行QR分解,得到本地矩阵R”;对矩阵Yj和本地矩阵R”的逆矩阵进行矩阵乘积运算,得到正交向量Qj。
另外,针对本地矩阵的QR分解过程,可直接采用breeze包提供的QR分解函数实现,本发明实施例对此不进行具体限定。
综上所述,同样的spark环境配置下,分解同样的矩阵,在保证计算结果准确的基础上,本发明实施例提供的技术方案的用时比相关技术提供的技术方案的用时要小的多,甚至对于大型的分布式矩阵,甚至在奇异值个数k也较大的情况下,即便相关技术运行失败,本发明实施例提供的技术方案也能在合理时间内运行成功。
本发明实施例提供的方法,在资源推荐过程中进行矩阵分解时,本发明实施例首先基于待分解的初始矩阵以及预设采样条件构建初始矩阵的近似基,之后再基于初始矩阵和该近似基来构建一个维数小于初始矩阵的低维矩阵,并基于该低维矩阵来获取初始矩阵的分解结果,由于通过上述步骤实现了将初始矩阵缩减至一个维数非常低的低维矩阵,进而利用维数较低的低维矩阵来完成对初始矩阵的分解,因此不但耗时较短,而且即便遇到初始矩阵的特征值下降非常缓慢或者需要求取的奇异值个数较大的情况,也不会出现因内存溢出而导致的分解失败情况,所以该种资源推荐方式耗时较短,效果较佳。
图13是本发明实施例提供的一种资源推荐装置的结构示意图。参见图13,该装置包括:
第一获取模块1301,用于获取评分数据,所述评分数据中包括用户对目标资源的评分;
转换模块1302,用于将所述评分数据转换为初始矩阵,所述初始矩阵中的每个元素为一个用户对一个目标资源的评分;
第二获取模块1303,用于基于所述初始矩阵以及过预设采样条件,获取所述初始矩阵的近似基;
构建模块1304,用于基于所述初始矩阵以及所述近似基,构建目标矩阵,所述目标矩阵的维数小于所述初始矩阵;
第三获取模块1305,用于基于所述目标矩阵,获取对所述初始矩阵的矩阵分解结果,所述矩阵分解结果包括描述用户特征属性的第一矩阵和描述目标资源特征属性的第二矩阵;
推荐模块1306,用于基于所述矩阵分解结果进行资源推荐。
本发明实施例提供的装置,在资源推荐过程中进行矩阵分解时,本发明实施例首先基于待分解的初始矩阵以及预设采样条件构建初始矩阵的近似基,之后再基于初始矩阵和该近似基来构建一个维数小于初始矩阵的低维矩阵,并基于该低维矩阵来获取初始矩阵的分解结果,由于通过上述步骤实现了将初始矩阵缩减至一个维数非常低的低维矩阵,进而利用维数较低的低维矩阵来完成对初始矩阵的分解,因此不但耗时较短,而且即便遇到初始矩阵的特征值下降非常缓慢或者需要求取的奇异值个数较大的情况,也不会出现因内存溢出而导致的分解失败情况,所以该种资源推荐方式耗时较短,效果较佳。
在另一个实施例中,所述初始矩阵的大小为m*n,所述第二获取模块,还用于获取输入的奇异值个数k以及过采样参数p,k与p之和不大于m和n中的最小者;构建随机采样矩阵,所述随机采样矩阵的大小为n*(k+p);基于所述初始矩阵以及所述随机采样矩阵,获取所述初始矩阵的近似基。
在另一个实施例中,所述构建模块,还用于获取所述近似基的转置矩阵;对所述初始矩阵和所述近似基的转置矩阵进行矩阵乘积运算,得到所述目标矩阵,所述目标矩阵的大小为(k+p)*n。
在另一个实施例中,所述第二获取模块,还用于获取进行迭代运算的目标迭代次数q;按照所述目标迭代次数q,基于所述初始矩阵以及所述随机采样矩阵进行迭代运算,得到所述近似基。
在另一个实施例中,所述第二获取模块,还用于对所述初始矩阵和所述随机采样矩阵进行矩阵乘积运算,得到矩阵Y0;获取所述矩阵Y0的正交基,得到所述近似基。
在另一个实施例中,当进行迭代运算的迭代类型为第一类型时,所述第二获取模块,还用于根据所述初始矩阵、所述初始矩阵的转置矩阵以及所述随机采样矩阵,构建q轮的迭代过程,得到矩阵Y1;获取所述矩阵Y1的正交基,得到所述近似基。
在另一个实施例中,当进行迭代运算的迭代类型为第二类型时,所述第二获取模块,还用于对所述初始矩阵和所述随机采样矩阵进行矩阵乘积运算,得到矩阵Y0;对所述矩阵Y0进行QR分解,得到所述矩阵Y0的正交向量Q0;基于所述正交向量Q0以及所述初始矩阵,构建q轮的迭代过程;将第q轮得到的正交向量Qq作为所述近似基。
在另一个实施例中,所述第二获取模块,还用于获取所述初始矩阵的转置矩阵;对于第j轮迭代过程,对所述初始矩阵的转置矩阵与正交向量Qj-1进行矩阵乘积运算,得到矩阵对所述矩阵/>进行QR分解,得到所述矩阵/>的正交向量/>对所述正交向量/>与所述初始矩阵进行矩阵乘积运算,得到矩阵Yj;对所述矩阵Yj进行QR分解,得到所述矩阵Yj的正交向量Qj;其中,j为正整数且j的取值为1至q。
在另一个实施例中,所述第二获取模块,还用于当所述矩阵Yj为分布式矩阵时,将所述矩阵Yj按行划分为多个矩阵;对划分出来的每一个矩阵均进行QR分解,并将QR分解后得到的多个R矩阵进行整合,得到分布式矩阵R';对所述分布式矩阵R'再次进行QR分解,得到矩阵R”;对所述矩阵Yj和所述矩阵R”的逆矩阵进行矩阵乘积运算,得到所述正交向量Qj。
在另一个实施例中,当所述目标矩阵为稀疏型矩阵时,所述第三获取模块,还用于获取所述目标矩阵的转置矩阵;对所述目标矩阵的转置矩阵进行奇异值分解,并将所述转置矩阵的左奇异向量和右奇异向量进行互换;对所述近似基和经过互换后的左奇异向量进行矩阵乘积运算,并将得到的乘积结果更新为所述目标矩阵的左奇异向量;基于所述目标矩阵的左奇异向量,获取所述初始矩阵的左奇异向量,基于所述目标矩阵的右奇异向量,获取所述初始矩阵的右奇异向量,基于所述目标矩阵的奇异值矩阵,获取所述初始矩阵的奇异值矩阵。
在另一个实施例中,当所述目标矩阵为稠密型矩阵时,所述第三获取模块,还用于对所述目标矩阵进行奇异值分解,并对所述近似基和所述目标矩阵的左奇异向量进行矩阵乘积运算;将得到的乘积结果更新为所述目标矩阵的左奇异向量;基于所述目标矩阵的左奇异向量,获取所述初始矩阵的左奇异向量,基于所述目标矩阵的右奇异向量,获取所述初始矩阵的右奇异向量,基于所述目标矩阵的奇异值矩阵,获取所述初始矩阵的奇异值矩阵。
在另一个实施例中,当所述初始矩阵为稠密型矩阵时,在构建q轮迭代过程时,若对所述初始矩阵的转置矩阵与矩阵Y0进行乘积运算,则所述第二获取模块,还用于将所述初始矩阵的每一行与所述矩阵Y0的每一行通过相同的行索引进行连接;将所述初始矩阵中每一行的元素分别与所述矩阵Y0中相应每一行的元素进行乘积运算;将得到的每一行的乘积运算结果保存为一个数组;将各个数组中相同位置的元素进行累加,得到按列存储的所述初始矩阵的转置矩阵与所述矩阵Y0的乘积。
在另一个实施例中,当所述初始矩阵为稀疏型矩阵时,在构建q轮迭代过程时,若对所述初始矩阵的转置矩阵与矩阵Y0进行乘积运算,则所述第二获取模块,还用于获取所述矩阵Y0的转置矩阵Y0 T,并将所述转置矩阵Y0 T分布式存储在多个节点上;将所述初始矩阵进行本地存储,并将所述初始矩阵广播至所述多个节点上,以使所述多个节点对所述转置矩阵Y0 T中的每一行与所述初始矩阵进行乘积运算;将所述多个节点的乘积运算结果进行转置处理,得到所述初始矩阵的转置矩阵与所述矩阵Y0的乘积。
在另一个实施例中,所述推荐模块,还用于基于所述第一矩阵计算不同用户之间的相似性;基于所述第二矩阵计算不同资源之间的相似性;根据用户之间的相似性和资源之间的相似性中的至少一种,进行资源推荐。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的资源推荐装置在进行资源推荐时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的资源推荐装置与资源推荐方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图14是本发明实施例提供的一种用于资源推荐的设备的结构示意图,该设备1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)1401和一个或一个以上的存储器1402,其中,所述存储器1402中存储有至少一条指令,所述至少一条指令由所述处理器1401加载并执行以实现上述各个方法实施例提供的资源推荐方法。当然,该设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该设备还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中的资源推荐方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种资源推荐方法,其特征在于,所述方法包括:
获取评分数据,所述评分数据中包括用户对目标资源的评分;所述目标资源包括多媒体资源和实体商品,所述多媒体资源至少包括文本、视频和音频;
将所述目标资源的评分数据转换为初始矩阵,所述初始矩阵记录了m个用户对n个目标资源的评分,所述初始矩阵的大小为m*n,其中,所述初始矩阵的每一行代表一个用户,每一列代表一个目标资源,而所述初始矩阵中的每个元素为一个用户对一个目标资源的评分;
获取输入的奇异值个数k以及过采样参数p,k与p之和不大于m和n中的最小者;构建随机采样矩阵,所述随机采样矩阵的大小为n*(k+p);获取进行迭代运算的目标迭代次数q;当进行迭代运算的迭代类型为第二类型时,对所述初始矩阵和所述随机采样矩阵进行矩阵乘积运算,得到矩阵Y0;对所述矩阵Y0进行QR分解,得到所述矩阵Y0的正交向量Q0;基于所述正交向量Q0以及所述初始矩阵,按照如下方式构建q轮的迭代过程:
获取所述初始矩阵的转置矩阵;对于第j轮迭代过程,对所述转置矩阵与正交向量Qj-1进行矩阵乘积运算,得到矩阵其中,j为正整数且j的取值为1至q;对所述矩阵/>进行QR分解,得到所述矩阵/>的正交向量/>对所述正交向量/>与所述初始矩阵进行矩阵乘积运算,得到矩阵Yj;将矩阵Yj按行划分为多个本地矩阵;采用breeze包提供的QR分解函数,对每一个本地矩阵均进行QR分解,并将QR分解后得到的多个R矩阵进行整合,得到分布式矩阵R';对所述分布式矩阵R'再次进行QR分解,得到本地矩阵R”;对所述矩阵Yj和所述本地矩阵R”的逆矩阵进行矩阵乘积运算,得到所述矩阵Yj的正交向量Qj;将第q轮得到的正交向量Qq,作为所述初始矩阵的近似基;
获取所述近似基的转置矩阵;对所述初始矩阵以及所述近似基的转置矩阵进行矩阵乘积运算,得到目标矩阵,所述目标矩阵的维数小于所述初始矩阵,所述目标矩阵的大小为(k+p)*n;
当所述目标矩阵为稀疏型矩阵时,获取所述目标矩阵的转置矩阵;对所述目标矩阵的转置矩阵进行奇异值分解,并将所述转置矩阵的左奇异向量和右奇异向量进行互换;对所述近似基和经过互换后的左奇异向量进行矩阵乘积运算,并将得到的乘积结果更新为所述目标矩阵的左奇异向量;基于所述目标矩阵的左奇异向量,获取所述初始矩阵的左奇异向量,基于所述目标矩阵的右奇异向量,获取所述初始矩阵的右奇异向量,基于所述目标矩阵的奇异值矩阵,获取所述初始矩阵的奇异值矩阵,所述初始矩阵的左奇异向量用于描述所述m个用户的特征属性,所述初始矩阵的右奇异向量用于描述所述n个目标资源的特征属性;
当所述目标矩阵为稠密型矩阵时,对所述目标矩阵进行奇异值分解,并对所述近似基和所述目标矩阵的左奇异向量进行矩阵乘积运算;将得到的乘积结果更新为所述目标矩阵的左奇异向量;基于所述目标矩阵的左奇异向量,获取所述初始矩阵的左奇异向量,基于所述目标矩阵的右奇异向量,获取所述初始矩阵的右奇异向量,基于所述目标矩阵的奇异值矩阵,获取所述初始矩阵的奇异值矩阵;
基于所述初始矩阵的左奇异向量计算不同用户之间的相似性;基于所述初始矩阵的右奇异向量计算不同目标资源之间的相似性;根据所述不同用户之间的相似性和所述不同目标资源之间的相似性,进行资源推荐;
其中,当所述初始矩阵为稠密型矩阵时,所述初始矩阵的每一行均存储在不同的计算节点上,且所述初始矩阵的列向量小于稀疏矩阵的列向量;在构建q轮迭代过程时,若对所述初始矩阵的转置矩阵与所述矩阵Y0进行乘积运算,则将所述初始矩阵的每一行与所述矩阵Y0的每一行通过相同的行索引进行连接;将所述初始矩阵中每一行的元素分别与所述矩阵Y0中相应每一行的元素进行乘积运算;将得到的每一行的乘积运算结果保存为一个数组;将各个数组中相同位置的元素进行累加,得到按列存储的所述初始矩阵的转置矩阵与所述矩阵Y0的乘积;其中,所述初始矩阵的每行每列元素均完全存储并参与计算;
当所述初始矩阵为稀疏型矩阵时,在构建q轮迭代过程时,若对所述初始矩阵的转置矩阵与矩阵Y0进行乘积运算,则获取所述矩阵Y0的转置矩阵Y0 T,并将所述转置矩阵Y0 T分布式存储在多个节点上;将所述初始矩阵进行本地存储,并将所述初始矩阵广播至所述多个节点上,以使所述多个节点对所述转置矩阵中的每一行与所述初始矩阵进行乘积运算,其中,在进行乘积运算时,根据所述初始矩阵中存在的数值的位置来遍历Y0 T中的每行元素;将所述多个节点的乘积运算结果进行转置处理,得到所述初始矩阵的转置矩阵与所述矩阵Y0的乘积。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述初始矩阵和所述随机采样矩阵进行矩阵乘积运算,得到矩阵Y0;
获取所述矩阵Y0的正交基,得到所述近似基。
3.根据权利要求1所述的方法,其特征在于,当进行迭代运算的迭代类型为第一类型时,所述方法还包括:
根据所述初始矩阵、所述初始矩阵的转置矩阵以及所述随机采样矩阵,构建q轮的迭代过程,得到矩阵Y1;
获取所述矩阵Y1的正交基,得到所述近似基。
4.一种资源推荐装置,其特征在于,所述装置包括:
第一获取模块,用于获取评分数据,所述评分数据中包括用户对目标资源的评分;所述目标资源包括多媒体资源和实体商品,所述多媒体资源至少包括文本、视频和音频;
转换模块,用于将所述目标资源的评分数据转换为初始矩阵,所述初始矩阵记录了m个用户对n个目标资源的评分,所述初始矩阵的大小为m*n,其中,所述初始矩阵的每一行代表一个用户,每一列代表一个目标资源,而所述初始矩阵中的每个元素为一个用户对一个目标资源的评分;
第二获取模块,用于获取输入的奇异值个数k以及过采样参数p,k与p之和不大于m和n中的最小者;构建随机采样矩阵,所述随机采样矩阵的大小为n*(k+p);获取进行迭代运算的目标迭代次数q;当进行迭代运算的迭代类型为第二类型时,对所述初始矩阵和所述随机采样矩阵进行矩阵乘积运算,得到矩阵Y0;对所述矩阵Y0进行QR分解,得到所述矩阵Y0的正交向量Q0;基于所述正交向量Q0以及所述初始矩阵,按照如下方式构建q轮的迭代过程:获取所述初始矩阵的转置矩阵;对于第j轮迭代过程,对所述转置矩阵与正交向量Qj-1进行矩阵乘积运算,得到矩阵其中,j为正整数且j的取值为1至q;对所述矩阵/>进行QR分解,得到所述矩阵/>的正交向量/>对所述正交向量/>与所述初始矩阵进行矩阵乘积运算,得到矩阵Yj;将矩阵Yj按行划分为多个本地矩阵;采用breeze包提供的QR分解函数,对每一个本地矩阵均进行QR分解,并将QR分解后得到的多个R矩阵进行整合,得到分布式矩阵R';对所述分布式矩阵R'再次进行QR分解,得到本地矩阵R”;对所述矩阵Yj和所述本地矩阵R”的逆矩阵进行矩阵乘积运算,得到所述矩阵Yj的正交向量Qj;将第q轮得到的正交向量Qq,作为所述初始矩阵的近似基;
构建模块,用于获取所述近似基的转置矩阵;对所述初始矩阵以及所述近似基的转置矩阵进行矩阵乘积运算,得到目标矩阵,所述目标矩阵的维数小于所述初始矩阵,所述目标矩阵的大小为(k+p)*n;
第三获取模块,用于当所述目标矩阵为稀疏型矩阵时,获取所述目标矩阵的转置矩阵;对所述目标矩阵的转置矩阵进行奇异值分解,并将所述转置矩阵的左奇异向量和右奇异向量进行互换;对所述近似基和经过互换后的左奇异向量进行矩阵乘积运算,并将得到的乘积结果更新为所述目标矩阵的左奇异向量;基于所述目标矩阵的左奇异向量,获取所述初始矩阵的左奇异向量,基于所述目标矩阵的右奇异向量,获取所述初始矩阵的右奇异向量,基于所述目标矩阵的奇异值矩阵,获取所述初始矩阵的奇异值矩阵,所述初始矩阵的左奇异向量用于描述所述m个用户的特征属性,所述初始矩阵的右奇异向量用于描述所述n个目标资源的特征属性的第二矩阵;当所述目标矩阵为稠密型矩阵时,对所述目标矩阵进行奇异值分解,并对所述近似基和所述目标矩阵的左奇异向量进行矩阵乘积运算;将得到的乘积结果更新为所述目标矩阵的左奇异向量;基于所述目标矩阵的左奇异向量,获取所述初始矩阵的左奇异向量,基于所述目标矩阵的右奇异向量,获取所述初始矩阵的右奇异向量,基于所述目标矩阵的奇异值矩阵,获取所述初始矩阵的奇异值矩阵;
推荐模块,用于基于所述初始矩阵的左奇异向量计算不同用户之间的相似性;基于所述初始矩阵的右奇异向量计算不同目标资源之间的相似性;根据所述不同用户之间的相似性和所述不同目标资源之间的相似性,进行资源推荐;
其中,当所述初始矩阵为稠密型矩阵时,所述初始矩阵的每一行均存储在不同的计算节点上,且所述初始矩阵的列向量小于稀疏矩阵的列向量;在构建q轮迭代过程时,若对所述初始矩阵的转置矩阵与所述矩阵Y0进行乘积运算,则所述第二获取模块,还用于将所述初始矩阵的每一行与所述矩阵Y0的每一行通过相同的行索引进行连接;将所述初始矩阵中每一行的元素分别与所述矩阵Y0中相应每一行的元素进行乘积运算;将得到的每一行的乘积运算结果保存为一个数组;将各个数组中相同位置的元素进行累加,得到按列存储的所述初始矩阵的转置矩阵与所述矩阵Y0的乘积;其中,所述初始矩阵的每行每列元素均完全存储并参与计算;
当所述初始矩阵为稀疏型矩阵时,在构建q轮迭代过程时,若对所述初始矩阵的转置矩阵与矩阵Y0进行乘积运算,则获取所述矩阵Y0的转置矩阵,并将所述转置矩阵分布式存储在多个节点上;将所述初始矩阵进行本地存储,并将所述初始矩阵广播至所述多个节点上,以使所述多个节点对所述转置矩阵中的每一行与所述初始矩阵进行乘积运算,其中,在进行乘积运算时,根据所述初始矩阵中存在的数值的位置来遍历中的每行元素;将所述多个节点的乘积运算结果进行转置处理,得到所述初始矩阵的转置矩阵与所述矩阵Y0的乘积。
5.根据权利要求4所述的装置,其特征在于,所述第二获取模块,还用于:
对所述初始矩阵和所述随机采样矩阵进行矩阵乘积运算,得到矩阵Y0;
获取所述矩阵Y0的正交基,得到所述近似基。
6.根据权利要求4所述的装置,其特征在于,当进行迭代运算的迭代类型为第一类型时,所述第二获取模块,还用于:
根据所述初始矩阵、所述初始矩阵的转置矩阵以及所述随机采样矩阵,构建q轮的迭代过程,得到矩阵Y1;
获取所述矩阵Y1的正交基,得到所述近似基。
7.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至3中任一个权利要求所述的资源推荐方法。
8.一种用于资源推荐的设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至3中任一个权利要求所述的资源推荐方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395012.7A CN110210691B (zh) | 2018-04-27 | 2018-04-27 | 资源推荐方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395012.7A CN110210691B (zh) | 2018-04-27 | 2018-04-27 | 资源推荐方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110210691A CN110210691A (zh) | 2019-09-06 |
CN110210691B true CN110210691B (zh) | 2024-02-06 |
Family
ID=67778764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810395012.7A Active CN110210691B (zh) | 2018-04-27 | 2018-04-27 | 资源推荐方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110210691B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949883A (zh) * | 2020-08-24 | 2020-11-17 | 贝壳技术有限公司 | 房源推荐方法、装置、计算机可读存储介质及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1750003A (zh) * | 2004-08-03 | 2006-03-22 | 索尼株式会社 | 信息处理装置,信息处理方法,和程序 |
CN103093376A (zh) * | 2013-01-16 | 2013-05-08 | 北京邮电大学 | 基于奇异值分解算法的聚类协同过滤推荐系统 |
CN103593336A (zh) * | 2013-10-30 | 2014-02-19 | 中国运载火箭技术研究院 | 一种基于语义分析的知识推送系统及方法 |
CN104850533A (zh) * | 2015-04-22 | 2015-08-19 | 南京大学 | 一种带约束的非负矩阵分解方法及求解方法 |
CN105282616A (zh) * | 2015-11-13 | 2016-01-27 | 云南大学 | 一种组合协同过滤iptv节目推荐方法 |
CN105430505A (zh) * | 2015-11-13 | 2016-03-23 | 云南大学 | 一种基于组合策略的iptv节目推荐方法 |
CN105630742A (zh) * | 2015-12-28 | 2016-06-01 | 广州酷狗计算机科技有限公司 | 特征向量计算方法及装置 |
CN106126615A (zh) * | 2016-06-22 | 2016-11-16 | 苏州大学 | 一种兴趣点推荐的方法及系统 |
CN106506705A (zh) * | 2016-12-29 | 2017-03-15 | 平安科技(深圳)有限公司 | 基于位置服务的人群分类方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7359550B2 (en) * | 2002-04-18 | 2008-04-15 | Mitsubishi Electric Research Laboratories, Inc. | Incremental singular value decomposition of incomplete data |
US7475027B2 (en) * | 2003-02-06 | 2009-01-06 | Mitsubishi Electric Research Laboratories, Inc. | On-line recommender system |
TWI394086B (zh) * | 2008-04-18 | 2013-04-21 | Everspeed Technology Ltd | An Analytical Method of Digital Data and Its Application |
US9760802B2 (en) * | 2010-01-27 | 2017-09-12 | Ebay Inc. | Probabilistic recommendation of an item |
US20140207506A1 (en) * | 2013-01-21 | 2014-07-24 | Salesforce.Com, Inc. | Computer implemented methods and apparatus for recommending a workflow |
RU2731659C2 (ru) * | 2016-09-09 | 2020-09-07 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и устройство для обучения алгоритма машинного обучения (MLA) по созданию рекомендаций содержимого в системе рекомендаций и способ и устройство для создания рекомендуемого содержимого с помощью алгоритма машинного обучения |
US10657574B2 (en) * | 2016-09-13 | 2020-05-19 | Adobe Inc. | Item recommendation techniques |
-
2018
- 2018-04-27 CN CN201810395012.7A patent/CN110210691B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1750003A (zh) * | 2004-08-03 | 2006-03-22 | 索尼株式会社 | 信息处理装置,信息处理方法,和程序 |
CN103093376A (zh) * | 2013-01-16 | 2013-05-08 | 北京邮电大学 | 基于奇异值分解算法的聚类协同过滤推荐系统 |
CN103593336A (zh) * | 2013-10-30 | 2014-02-19 | 中国运载火箭技术研究院 | 一种基于语义分析的知识推送系统及方法 |
CN104850533A (zh) * | 2015-04-22 | 2015-08-19 | 南京大学 | 一种带约束的非负矩阵分解方法及求解方法 |
CN105282616A (zh) * | 2015-11-13 | 2016-01-27 | 云南大学 | 一种组合协同过滤iptv节目推荐方法 |
CN105430505A (zh) * | 2015-11-13 | 2016-03-23 | 云南大学 | 一种基于组合策略的iptv节目推荐方法 |
CN105630742A (zh) * | 2015-12-28 | 2016-06-01 | 广州酷狗计算机科技有限公司 | 特征向量计算方法及装置 |
CN106126615A (zh) * | 2016-06-22 | 2016-11-16 | 苏州大学 | 一种兴趣点推荐的方法及系统 |
CN106506705A (zh) * | 2016-12-29 | 2017-03-15 | 平安科技(深圳)有限公司 | 基于位置服务的人群分类方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110210691A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109886294B (zh) | 知识融合方法、装置、计算机设备和存储介质 | |
Shin et al. | Fully scalable methods for distributed tensor factorization | |
Jia et al. | Label distribution learning with label correlations on local samples | |
CN111563192B (zh) | 实体对齐方法、装置、电子设备及存储介质 | |
JP2011523753A (ja) | 無限次元を用いた高速行列因子分解による推薦システム | |
CN109740924B (zh) | 融合属性信息网络和矩阵分解的物品评分预测方法 | |
WO2016123808A1 (zh) | 数据处理系统、计算节点和数据处理的方法 | |
CN108986872B (zh) | 用于大数据电子病历约简的多粒度属性权重Spark方法 | |
CN112052404B (zh) | 多源异构关系网络的群体发现方法、系统、设备及介质 | |
Haider et al. | Model reduction of large scale descriptor systems using time limited gramians | |
CN111782826A (zh) | 知识图谱的信息处理方法、装置、设备及存储介质 | |
Wei et al. | Autoias: Automatic integrated architecture searcher for click-trough rate prediction | |
CN111090765B (zh) | 一种基于缺失多模态哈希的社交图像检索方法及系统 | |
Lin et al. | Computing the diffusion state distance on graphs via algebraic multigrid and random projections | |
CN111680162A (zh) | 基于张量分解的知识图谱嵌入方法、系统及设备 | |
Ji | Bilevel optimization for machine learning: Algorithm design and convergence analysis | |
CN110210691B (zh) | 资源推荐方法、装置、存储介质及设备 | |
CN115859016B (zh) | 基于处理器的运算方法、装置、计算机设备及存储介质 | |
Jin et al. | Fast Markov chain Monte Carlo for high-dimensional Bayesian regression models with shrinkage priors | |
JP4099197B2 (ja) | 概念ベクトル推定方法及び装置及びプログラム及びコンピュータ読取可能な記憶媒体 | |
CN114399025A (zh) | 一种图神经网络解释方法、系统、终端以及存储介质 | |
CN114429404A (zh) | 一种多模异质社交网络社区发现方法 | |
CN114385827A (zh) | 面向会议知识图谱的检索方法 | |
Zhang et al. | Space-invariant projection in streaming network embedding | |
Song et al. | Large scale network embedding: A separable approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |