非负矩阵分解算法基于hadoop streaming的实现

非负矩阵分解算法思想如下:

并行化思路:

    由公式(2-8)和(2-9)可以看出,矩阵更新所需要的主要操作就是矩阵之间的乘法运算,并行化操作也主要是对乘法运算进行并行,对矩阵H的并行化步骤如下:


    

并行化算法设计:

    针对以上的并行化流程,并行化步骤如下:

    

算法实现和结果:

    算法采用hadoop streaming实现,矩阵采用稀疏结构进行存储,部署在5个计算节点,每个节点为8核心,设置的map数量为0.75*cores,其中cores为集群所有的核心数,鉴于集群配置都是一样的核数,所以是乘以0.75,如果配置一样,这个需要根据具体情况进行调优。在运算过程中,矩阵会越来越稀疏,运算速度会越来越快。矩阵A维度为280W*50W,topic的数量设置为200,迭代一轮大概10min到最后的5min左右。代码比较糙,就不放出来了,有问题可以一起交流讨论下。

算法需要改进的方面:

    1.稀疏性的问题,如何添加稀疏性约束来产生比较稀疏性的解?

    2.运算速度的提升,根据实验跑出来的结果,迭代一轮平均10分钟,一个小时才迭代6轮,算法需要进行多轮迭代,这个基本不能承受,当然这个根据集群的节点数量有一定的关系,考虑到目前语料集合比较小,而且扩展集群节点数量不太可能,有机会可以试试MPI上运行效果。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值