Pagerank 的mapreduce

来源:互联网 发布:http传输数据大小 编辑:程序博客网 时间:2024/06/08 09:49
什么是pagerank,不说了,机器学习10大算法之一,网上搜一堆。谷歌发明的网页搜索方法。简单说就是原来N个网页,有一个初始概率向量,然后有一个转移矩阵,跟原始概率向量相乘(一般还要考虑陷阱问题,所以一般每一步是个乘加)(其实就是一个马尔可夫过程),得到一个新的概率向量。然后反复乘加。由于网页实在太多,所以可能计算量相当大。可以说谷歌发明分布式mapreduce(hadoop)最初就是用来解决pagerank大计算量的。所以研究pagerank的mapreduce可以说是机器学习方法的分布式化的一个非常好的例子。

由于矩阵相乘的计算量实在是太大,而网页之间的跳转一般只在少数之间相关联,所以转移矩阵一般来说是稀疏矩阵,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存储

一般存储格式如下:




然后一个Driver类发起的对data的初始划分,输入目录是:output/data,输出目录是:output/clusters-0。这里我们假设样本被划分为了3份小样本文件,分散在cluster中,如上图右侧。

1Map阶段

Map操作的每一行,对所有出链发射当前网页概率值的1/kk是当前网页的出链数,比如

第1个map处理划分出的第一个文件,在第一行输出1/3*1/4>,,1/3*1/4>,,1/3*1/4>;

第2个map处理划分出的第二个文件,第1行输出第2行输出

第3个map处理划分出的第三个文件,第,1行输出,


然后在reduce阶段。统计特定网页的权值累加。pj=a*(p1+p2+Pm)+(1-a)*1/n,其中m是指向网页j的网页j数,n所有网页数。


然后Driver代码中还要完成多次迭代,直至收敛。

Pagerank <wbr>的mapreduce

 

0 0
原创粉丝点击