CN106294288B - 一种分布式非负矩阵分解方法 - Google Patents
一种分布式非负矩阵分解方法 Download PDFInfo
- Publication number
- CN106294288B CN106294288B CN201610597735.6A CN201610597735A CN106294288B CN 106294288 B CN106294288 B CN 106294288B CN 201610597735 A CN201610597735 A CN 201610597735A CN 106294288 B CN106294288 B CN 106294288B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- pattern
- data block
- row
- 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.)
- Expired - Fee Related
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种分布式非负矩阵分解方法,对已有的分布式矩阵分解算法DSGD进行改进,通过减少程序分布式执行过程中的数据倾斜,有效降低了DSGD中的锁定等待的耗时,进而提高了算法执行的效率。并在此基础之上添加非负控制及其动态步长选择设计出该分布式非负矩阵分解算法,同时在Spark平台上实现了该算法。本发明不仅执行效率比较高,而且收敛性好,可以很好地应用协同过滤等各个应用领域。
Description
技术领域
本发明涉及分布式的机器学习技术,特别是一种分布式的非负矩阵分解方法。
背景技术
随着互联网信息科技的高速发展,每天都会有大量的网络数据产生,如何快速有效从海量数据中提取有用的信息对人们来说变得越来越重要。互联网上的信息包括了用户商品的购买信息,新闻微信等文本信息,为了处理起来方便,这些信息通常被处理成矩阵的形式进行处理。
非负矩阵分解NMF是将矩阵X分解为2个非负因子矩阵W和H,W和H的乘积尽可能接近于原来的矩阵X。NMF是由D.D.Lee和H.S.Seung在1999年《nature》上提出的,并用于人脸识别。目前被越来越多的数据科学家用在更多的领域,用于降低数据的复杂性,以方便对数据的处理非负矩阵分解在处理上述数据时是一个十分方便的工具,它经常被用来探索观察到的矩阵的潜在的结构。
在利用这些丰富的网络数据进行挖掘有用信息的同时,我们必须面对一大挑战:我们所用处理工具的处理规模是否能适应如此大规模的数据,是否能跟上数据爆炸式增长的步伐?随着大数据并行处理计算框架Mapreduce和Spark的出现,大规模的矩阵分解的可操作性变得越来越强。许多互联网公司都对矩阵分解做了并行化处理,以使其适应大数据平台,用以分解大规模矩阵。同时许多其他的公司和企业也开始使用它来进行处理大规模数据。传统的SGD并行化算法,都面临着一个很重要问题:锁定等待问题,如:DSGD算法必须所有节点要等待最慢的那个节点处理完才能进入下一步迭代,这就造成了算法的收敛性和执行效率的降低。如何使矩阵分解更好的并行化,如何提高算法的收敛性和执行效率成为当前矩阵分解算法研究中的热门课题。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种分布式非负矩阵分解方法。
为解决上述技术问题,本发明所采用的技术方案是:一种分布式的非负矩阵分解方法,包括以下步骤:
1)输入矩阵数据读入到hadoop的分布式系统,在Spark平台上计算矩阵的统计信息,包括每行及每列所包含的数据个数,以及这个矩阵的数据总数和非零元素的最大id值。
2)利用原始矩阵X进行矩阵的分块,并且改进分块调度方法,降低锁等待的时间。如果Spark上的计算节点为S个,已有的分布式矩阵分解算法DSGD算法是将矩阵分成S*S个数据块,每个模式中的S个模块分配给S个计算节点。我们的改进则是将矩阵划随机划分生成2S×2S个子矩阵,每个子矩阵是一个数据块,每2S个数据块组成一个模式,总共可以得到2S个相互独立的模式Pi,i的取值为1到2S。模式Pi和模式Pj没有重叠的数据块。每个单独的模式都必须能覆盖整个矩阵,使得在单模式下的所有数据块上迭代计算一次后,矩阵W的所有行和矩阵H的所有列都进行了更新,W和H是X进行分解后得到的因子矩阵。图1为矩阵被分成3×3个独立处理模块的矩阵的模式示意图。
3)对Spark平台上的S个计算节点,每次需要将单个模式中的2S个数据块分配到S个计算节点。对每个模式中的2S个数据块都计算它的数据量,即每个数据块的非零数据个数。在单个模式中,将模式内的2S个数据块根据数据量进行从小到大排序,将数据量最大的数据块与数据量最小的数据块分配给1个计算节点,将数据量第二大的数据块与数据量第二小的数据块分配给第2个计算节点,依次类推,从排序队列2端选择未分配数据块依次分配给其他计算节点。直到所有2S个数据块全部分配到S个计算节点中。通过这种方式减少分布式执行过程中的数据倾斜问题,使得每个计算节点上的数据量相对均衡,不会产生某个数据量少的计算节点提前结束任务,花费大量时间等待其他计算节点任务完成一起进入下次迭代。
4)2S个不同的数据块在S个计算节点上采用的随机梯度下降(SGD)算法迭代更新,将X矩阵矩阵分解为W和H。每次迭代只随机选取某一个数据xi,j,并计算其相应的梯度。一旦xi,j被选定,就可以通过采取梯度下降法迭代地更新矩阵W第i行的元素wi和矩阵H第j列的元素hj。在迭代过程中DSGD算法中未加任何限制,W和H两个矩阵都会出现负值的情况。为了限制W和H为非负,实现非负矩阵的分解,我们在迭代的过程中,增加了一个非负限制,得到新的迭代更新公式:
wi=max(0,wi+γ×[ei,jhj-λwwi])
hj=max(0,hj+γ×[ei,jwi-λhhj])
为实际值与预测值之间的差值,γ是步长(学习速率),λw和λh为正则化参数。
这里γ我们采用动态歩长,随着迭代次数增加不断地缩小,使得算法在初始阶段步长大,加大解收敛速度,随着迭代的增加,则缩小步长,获得精确解。其动态步长的计算公式为:
γ=1/(θ×N×iter)α
其中:θ主要用来控制初始步长大小,α为控制步长变化速度。N为矩阵包含的非零元素个数,iter为算法的迭代次数。
5)遍历访问2S个模式,执行步骤4.该过程迭代执行,直到RSME值小于阈值(即:算法收敛)或迭代次数达到最大值T,阈值与最大值T均为人工输入。
与现有技术相比,本发明所具有的有益效果为:本发明对算法的分布式调度过程进行改进,预先计算分块后每块中的数据量,根据块中数据量对同一调度过程中的数据块进行重新划分。以降低锁定等待时间,提高运算效率;对改进后的算法添加非负控制以适应分布式非负矩阵分解;使用动态步长进行迭代以提高算法收敛性。将算法在Spark平台上实现,并且通过实验测试算法性能。实验结果表明,该方法具有很高的收敛性,和更好的分解效果。
附图说明
图1为被切分成3×3个独立处理模块的矩阵的模式;
图2为改进算法整体流程;
图3(a)为采用Cloud数据集时D-DSGD与DSGD之间的比较,比较相同迭代次数两算法的耗时;图3(b)为采用MovieLen时D-DSGD与DSGD之间的比较,比较相同迭代次数两算法的耗时;
图4(a)为采用Cloud数据集时D-DSGD、DSGD、DSGD+之间的收敛性比较,相同迭代次数下收敛性实验;图4(b)为采用MovieLen时D-DSGD、DSGD、DSGD+之间的收敛性比较,相同迭代次数下收敛性实验;
图5(a)为采用Cloud数据集时Clound-NMF与D-NMF之间的比较,相同迭代次数下收敛性实验;图5(b)为采用MovieLen时Clound-NMF与D-NMF之间的比较,相同迭代次数下收敛性实验。
具体实施方式
本发明的具体实现过程如下:
步骤1:从文件系统中将原始矩阵数据读入到spark平台中,产生通过SparkContext生成弹性分布式数据集RDD。对RDD中的数据进行一次map操作,将每行数据“row_id,col_id,value”映射成三元组数值数据(row_id,col_id,vakue),生成新的RDD(RDD1)。对新生的的RRD做一些统计操作,统计矩阵的基本信息matrix_info,包括每行及每列所包含的数据个数和数据总数(total_col,total_row,total_N),还有词的最大行id值(max_row)和最大列id(max_col)。
步骤2:划分数据块,如果计算节点的个数为S,则生成数据块个数为2S×2S。并且预生成2S个相互独立的模式。读取RDD1中的数据,进行map()操作,生成模式RDD2,数据格式为([main_key,sub_key],s),其中main_key表示模式号,sub_key表示处理该块数据的机器号,s为一条三元组数据。模式号表示是哪个同时统计每个块中所包含的数据量,记录在一个2S×2S的矩阵N中。例如下表,如果有4个计算节点就将矩阵划分为8×8块。灰色部分为一个预设的模式,每块中的数值为各块的数据量。
84 | 162 | 70 | 78 | 75 | 119 | 160 | 142 |
157 | 92 | 80 | 96 | 58 | 147 | 195 | 86 |
84 | 104 | 89 | 92 | 65 | 159 | 120 | 176 |
82 | 129 | 75 | 88 | 70 | 124 | 197 | 104 |
115 | 80 | 90 | 108 | 48 | 176 | 116 | 110 |
82 | 100 | 112 | 70 | 104 | 128 | 141 | 121 |
116 | 134 | 82 | 134 | 44 | 146 | 177 | 83 |
133 | 89 | 113 | 63 | 50 | 150 | 135 | 117 |
步骤3:生成处理模式。对同一模式在矩阵N中对应的2S个数据量进行排序,根据排序后的结果,将数据量最大的数据块与数据量最小的数据块分配给1个计算节点,将数据量第二大的数据块与数据量第二小的数据块分配给第2个计算节点,依次类推。将2S个数据块组合成S个数据块,分配给S个计算节点。如步骤2所列的模式中,数据量为48的数据块最小与数据量为177的合并,分配给1个计算节点。依次类推,4个计算节点需要计算的数据量分别为:212、181、205、225。这种调度方法可以使得所有计算节点的数据量基本相差不大,不会造成这种情况:在所有的计算节点计算完成进入下次迭代前,数据量小的计算节点需要等待很长时间。
具体来说,根据排序后的组合,操作RDD2,将需要组合的数据块的sub_key设为相同值,main_key不变,生成数据集RDD3,同时对RDD3数据集进行cache()操作,将RDD3数据集进行缓存。其中RDD3的键值对形式为(<main_key,sub_key>,s),main_key的取值范围为1~2S,代表进行一次迭代需要执行的模式的个数。sub_key的取值范围为1~S,代表机器号。
步骤4:根据max_row和max_col生成矩阵W,H,并通过随机函数对矩阵W,H分别进行初始化。初始化值在0~1之间。
步骤5:对数据集RDD3进行操作,根据main_key来区分2S个模式,根据sub_key来分配机器,迭代更新W,H。首先通过Spark函数filter()根据main_key筛选出一个模式所需数据集RDD_MAIN,然后根据sub_key值,使用Spark函数partitionBy(),将筛选出的数据集划分为S块,生成数据集RDD_SUB,最后通过Spark函数mapPartitions()将任务分发到S个计算节点,使用S个计算节点同时对S块数据进行处理。迭代执行T次,每次采用SGD算法,同时加入非负控制迭代更新代W,H中的元素wi和hj。具体单次循环执行过程如下:
根据已处理数据量更新步长
决定2s个模式的处理顺序或者随机处理,根据main_key值区分模式
迭代跟新采用的公式是增加了非负控制的SGD公式:
wi=max(0,wi+γ×[ei,jhj-λwwi])
hj=max(0,hj+γ×[ei,jwi-λhhj])
为实际值与预测值之间的差值,γ是步长(学习速率),λw和λh为正则化参数。
这里γ我们采用动态歩长,随着迭代次数增加不断地缩小,使得算法在初始阶段步长大,加大解收敛速度,随着迭代的增加,则缩小步长,获得精确解。其动态步长的计算公式为:
γ=1/(θ×N×iter)α
其中:θ主要用来控制初始步长大小,α为控制步长变化速度。N为矩阵包含的非零元素个数,iter为算法的迭代次数。
步骤6:每次更新后,计算RMSE值。
其中X是待分解矩阵,xu,v是原始矩阵X中一个数据,是预测数据,即W*H后得到的预测结果,N为X矩阵中的非零元素个数。
步骤7:我们采用了2个数据集来验证我们的算法:Cloud数据集和MovieLens数据集。表3列出了数据集的详细信息,m为最大行数,n为最大行数。表4是对不同的数据集设置的算法参数。
表3数据集的详细信息
表4各类参数的设置
步骤8:我们将在这2个数据集上比较传统的矩阵分解DSGD算法和我们改进后的算法进行比较,验证改进策略的有效性。比较步骤分为3步:第一步将我们在DSGD基础上改进调度策略的算法(我们简称为:D-DSGD)与传统的分布式矩阵分解算法DSGD进行时间比较,对比算法在时间上的消耗;第二步将我们在DSGD基础上改进调度策略和动态步长的算法(我们简称为:D-DSGD+),在DSGD基础上改进调度策略的算法(我们简称为:D-DSGD)与传统的分布式矩阵分解算法DSGD进行时间比较,对比各算法的收敛速度和收敛效果。第三步将我们在DSGD基础上改进调度策略和动态步长,并且增加步长的算法(简称为:D-NMF)与已有的分布式非负矩阵分解算法Cloud-NMF进行比较,验证我们算法的性能比较。由于D-DSGD算法和D-DSGD+的都有区别在动态步长,都有新调度方法中的数据预分配,且单次循环执行复杂度一样,故在相同迭代次数的情况下,运行时间相差不大,所以这里没有将D-DSGD+用来比较时间。
第一步的实验结果展示在图3中。从图3看出来:在迭代刚开始的1次迭代两算法耗时基本相同,因为此时算法在进行数据准备,从hdfs文件系统读取文件,同时D-DSGD需要进行数据的预分配,所以时间差别不大,且D-DSGD耗时相对较多。但是在随后的迭代中,由于D-DSGD具有降低锁定等待的策略,可以有效减少分布式执行过程中数据分配的不平衡,减少节点的无意义等待的时间,所以每次迭代耗时比DSGD要少。第二步的实验结果展示在图4中。从图4看出来:由图4可以看出在相同的迭代次数时D-DSGD的RMSE值比DSGD的值基本相同,锁定等待策略对算法的收敛性影响较小。对比DSGD+(使用了动态步长的D-DSGD)与DSGD,可以看出DSGD+收敛速度较快,具有更好的收敛性,说明本文所使用的动态步长策略可以加快算法的收敛性。同时从图3也可以看出DSGD+的RMSE值最小,表明DSGD+的矩阵分解效果最佳。第三步的实验结果展示在图5中。由图5(a)和(b)可以看出在相同的迭代次数时D-NMF方法的RMSE值要比Cloud-NMF方法的RMSE值小,D-NMF具有更好的收敛性,分解的效果要比Cloud-NMF算法好。由于D-NMF在Spark上实现,Cloud-NMF算法在Mapreduce平台上实现,由于实现平台不同,算法单次迭代的速度差异过大。这里仅比较随着迭代次数的增加,评估值RMSE的变化情况。
因此,从实验结果我们可以看出:由于采用了新的分块调度方法,使得分配到各计算节点的数据块的数据量较均衡,使得节点间相互等待时间不会过长。同时由于采用了动态步长,收敛速度也明显加快。并且从实验上我们可以看出,尽管采用了非负控制、新的分块调度方法和动态步长的新算法,矩阵分解效果最好,RMSE的值最小,比传统的非负矩阵分解算法效果好,特别是在movielens这种实际的推荐算法的测试集上也获得了很好的效果。
Claims (6)
1.一种分布式非负矩阵分解方法,其特征在于,包括以下步骤:
1)将原始矩阵X数据读入到hadoop的分布式系统,在Spark平台上计算原始矩阵的统计信息,包括每行及每列所包含的数据个数,以及原始矩阵的数据总数和非零元素的最大id值;
2)利用原始矩阵X进行矩阵的分块,如果Spark上的计算节点为S个,则原始矩阵随机划分生成2S×2S个因子矩阵,每个因子矩阵是一个数据块,每2S个数据块组成一个模式,共得到2S个相互独立的模式Pi;任意2个模式Pi和模式Pj没有重叠的数据块;i和j的取值都为1到2S;每个单独的模式都覆盖整个原始矩阵X,使得在单模式下的所有数据块上迭代计算一次后,矩阵W的所有行和矩阵H的所有列都进行了更新,W和H是X进行分解后得到的因子矩阵;
3)对Spark平台上的S个计算节点,每次只装载1个模式,在分块过程统计每个模式内各数据块的数据量,根据数据量为每个节点选择2个数据块;
4)遍历访问2S个模式,每个模式的2S个不同的数据块在S个计算节点上采用SDG算法对矩阵元素进行迭代更新;该过程迭代执行,直到RSME值小于阈值或迭代次数达到最大值T;
步骤3)中,分块过程中,预先计算分块后每个数据块中的数据量,根据数据块中的数据量对同一调度过程中的数据块进行重新划分。
2.根据权利要求1所述的分布式非负矩阵分解方法,其特征在于:根据数据量为每个节点选择2个数据块的具体过程为:将矩阵分成2S*2S个数据块,对每个模式中的2S个数据块都计算它的数据量,即每个数据块的非零数据个数;在单个模式中,将模式内的2S个数据块根据数据量进行从小到大排序,将数据量最大的数据块与数据量最小的数据块分配给1个计算节点,将数据量第二大的数据块与数据量第二小的数据块分配给第2个计算节点,依此类推。
3.根据权利要求1所述的分布式非负矩阵分解方法,其特征在于,步骤4)中,在迭代的过程中,增加非负限制,得到新的迭代更新公式:
wi=max(0,wi+γ×[ei,jhj-λwwi])
hj=max(0,hj+γ×[ei,jwi-λhhj])
为实际值与预测值之间的差值,γ是步长,λw和λh为正则化参数;wi为W中第i行的行向量,为wi的转置,hj为矩阵H第j列的列向量,xi,j表示原始矩阵X的第i行,第j列的元素。
4.根据权利要求3所述的分布式非负矩阵分解方法,其特征在于,步长γ为动态步长,计算公式为:
γ=1/(θ×N×iter)α
其中:θ用来控制初始步长大小;α控制步长变化速度,N为原始矩阵X包含的非零元素个数,iter为算法的迭代次数,初始值为1,每迭代一次加1,直到达到最大的迭代次数T。
5.根据权利要求4所述的分布式非负矩阵分解方法,其特征在于,步长γ为动态步长,θ的取值为:在cloud数据集上设置为10,在movieLens数据集上设置为1。
6.根据权利要求4所述的分布式非负矩阵分解方法,其特征在于,α小于1,在cloud数据集上设置为0.275,在movieLens数据集上设置为0.25。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610597735.6A CN106294288B (zh) | 2016-07-27 | 2016-07-27 | 一种分布式非负矩阵分解方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610597735.6A CN106294288B (zh) | 2016-07-27 | 2016-07-27 | 一种分布式非负矩阵分解方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294288A CN106294288A (zh) | 2017-01-04 |
CN106294288B true CN106294288B (zh) | 2018-09-14 |
Family
ID=57652662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610597735.6A Expired - Fee Related CN106294288B (zh) | 2016-07-27 | 2016-07-27 | 一种分布式非负矩阵分解方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294288B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341133B (zh) * | 2017-06-24 | 2021-01-22 | 中国人民解放军信息工程大学 | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 |
CN109783769B (zh) * | 2017-11-15 | 2023-02-28 | 中国移动通信集团上海有限公司 | 一种基于用户项目评分的矩阵分解方法和装置 |
CN110222089B (zh) * | 2019-05-31 | 2021-05-14 | 华南理工大学 | 一种基于保序子矩阵的约束双聚类挖掘及缺失值预测方法 |
CN110532330B (zh) * | 2019-09-03 | 2022-06-03 | 四川长虹电器股份有限公司 | 基于hive的协同过滤推荐方法 |
CN111125621A (zh) * | 2019-11-22 | 2020-05-08 | 清华大学 | 一种加速分布式矩阵分解系统训练的方法及装置 |
CN111767941B (zh) * | 2020-05-15 | 2022-11-18 | 上海大学 | 一种基于对称非负矩阵分解的改进谱聚类及并行化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886047A (zh) * | 2014-03-12 | 2014-06-25 | 浙江大学 | 面向流式数据的分布式在线推荐方法 |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
-
2016
- 2016-07-27 CN CN201610597735.6A patent/CN106294288B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886047A (zh) * | 2014-03-12 | 2014-06-25 | 浙江大学 | 面向流式数据的分布式在线推荐方法 |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
Non-Patent Citations (2)
Title |
---|
一种非负矩阵分解算法;杨轩;《西南民族大学学报·自然科学版》;20080229;第 34 卷(第 1 期);第30-35页 * |
大数据环境下的推荐系统;孟祥武等;《北京邮电大学学报》;20150430;第38卷(第2期);第1-15页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106294288A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294288B (zh) | 一种分布式非负矩阵分解方法 | |
Mirhoseini et al. | A hierarchical model for device placement | |
Dutta et al. | Slow and stale gradients can win the race: Error-runtime trade-offs in distributed SGD | |
CN105373517A (zh) | 基于Spark的分布式稠密矩阵求逆并行化运算方法 | |
CN110069502A (zh) | 基于Spark架构的数据均衡分区方法及计算机存储介质 | |
Schlag et al. | Scalable edge partitioning | |
CN108170639A (zh) | 基于分布式环境的张量cp分解实现方法 | |
WO2018144534A1 (en) | Hardware-based machine learning acceleration | |
Liu et al. | Multi-Level Partitioning and Distribution of the Assignment Problem for Large-Scale Multi-Robot Task Allocation. | |
CN110163333A (zh) | 卷积神经网络的并行优化方法 | |
CN108108233A (zh) | 任务多副本执行的集群作业调度方法及系统 | |
Sui et al. | Parallel clustered low-rank approximation of graphs and its application to link prediction | |
Acer et al. | SPHYNX: Spectral Partitioning for HYbrid aNd aXelerator-enabled systems | |
CN106778812A (zh) | 聚类实现方法和装置 | |
CN104049612A (zh) | 基于分布估计的加工车间调度方法 | |
Barger et al. | k-means for streaming and distributed big sparse data | |
Fountoulakis et al. | Exploiting optimization for local graph clustering | |
CN106354552A (zh) | 并行计算任务分配方法和装置 | |
Du et al. | Maxios: Large scale nonnegative matrix factorization for collaborative filtering | |
Kiyarazm et al. | A new method for scheduling load balancing in multi-processor systems based on PSO | |
Haque et al. | Distributed adaptive importance sampling on graphical models using mapreduce | |
CN105893145B (zh) | 一种基于遗传算法的任务调度方法及装置 | |
Chen et al. | Sketching as a tool for understanding and accelerating self-attention for long sequences | |
Wang et al. | Optimised assignment of airport gate configurations using an immune genetic algorithm | |
Cho et al. | Distributed dual coordinate ascent with imbalanced data on a general tree network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180914 Termination date: 20210727 |
|
CF01 | Termination of patent right due to non-payment of annual fee |