什么是pagerank,不说了,机器学习10大算法之一,网上搜一堆。谷歌发明的网页搜索方法。简单说就是原来N个网页,有一个初始概率向量,然后有一个转移矩阵,跟原始概率向量相乘(一般还要考虑陷阱问题,所以一般每一步是个乘加)
(其实就是一个马尔可夫过程),得到一个新的概率向量。然后反复乘加。由于网页实在太多,所以可能计算量相当大。可以说谷歌发明分布式mapreduce(hadoop)最初就是用来解决pagerank大计算量的。所以研究
pagerank的mapreduce可以说是机器学习方法的分布式化的一个非常好的例子。
由于矩阵相乘的计算量实在是太大,而网页之间的跳转一般只在少数之间相关联,所以转移矩阵一般来说是稀疏矩阵,
零元素较多,因此可以采用只存储非零元素的方法来进行压缩存储。
一般存储格式如下:
然后一个
Driver类发
起的对data的初始划分,输入目录是:output/data,输出目录是:output/clusters-0。 这里我们假设样本被划分为了3份小样本文件,分散在cluster中,如上图右侧。