MapReduce实现的PageRank原理
来源:互联网 发布:java贪吃蛇代码详解 编辑:程序博客网 时间:2024/06/02 14:58
PageRank手工计算得出的值见帖子 http://f.dataguru.cn/thread-17158-1-1.html 这个值有助于我们验证下面MR计算是不是正确
首先假设有两个节点A和B 原始矩阵如tiger老师的幻灯片第九页 a=1
网页1和2保存在节点A上 网页3和4保存在节点B上
由于A在A上很容易计算1和2的出链 根据MR的本地运算的思想,网页1和2的处理必在A上完成,B也同理
那么我们可以设计Map函数,这个函数的作用有两:1、得到源矩阵 2、用源矩阵乘以列向量
得到在A上需要计算的源矩阵:
0 0
1/3 0
1/3 1/2
1/3 1/2
同理在B节点上要计算的源矩阵:
0 0
0 1
0 0
1 0
基于矩阵的乘法规则 我们假设一个列向量q00={{1},{1}} q10={{1},{1}}
把q0和q1分别发送到节点A和节点B上 然后进行计算 我们姑且把计算出来的向量叫做qa和qb:
在A上:
0*1+0*1 0
1/3*1+0*1 1/3
qa= 1/3*1+1/2*1 = 5/6
1/3*1+1/2*1 5/6
在节点B上:
0*0+0*1 0
0*1+1*1 1
qb=0*1+0*1 = 0
1*1+0*1 1
然后通过网络把qa和qb发送到执行reduce函数执行的节点上 reduce函数的作用也有两个:1、合并计算结果 2、进行排序输出
0
4/3
q1 = qa+qb= 5/6
11/6
发现这个q1正是我们手工计算时的第一轮迭代的结果,下面的步骤就简单了
那就是把这个q1分发到A和B进行计算新的qa和qb 这是q00={{0,4/3}} q10={{5/6,11/6}}
计算后:
0*0+0*4/3 0
1/3*0+0*4/3 0
qa= 1/3*0+1/2*4/3 = 4/6
1/3*0+1/2*4/3 4/6
0*5/6+0*11/6 0
0*5/6 +1*11/6 11/6
qb= 0*5/6 +0* 11/6 = 0
1*5/6 +0* 11/6 5/6
0
11/6
q2=qa+qb= 4/6
9/6
和我们手工计算的q2相同,如果反复进行运算 知道得到一个理想值,这就是用MR实现PageRank的原理了!
首先假设有两个节点A和B 原始矩阵如tiger老师的幻灯片第九页 a=1
网页1和2保存在节点A上 网页3和4保存在节点B上
由于A在A上很容易计算1和2的出链 根据MR的本地运算的思想,网页1和2的处理必在A上完成,B也同理
那么我们可以设计Map函数,这个函数的作用有两:1、得到源矩阵 2、用源矩阵乘以列向量
得到在A上需要计算的源矩阵:
0 0
1/3 0
1/3 1/2
1/3 1/2
同理在B节点上要计算的源矩阵:
0 0
0 1
0 0
1 0
基于矩阵的乘法规则 我们假设一个列向量q00={{1},{1}} q10={{1},{1}}
把q0和q1分别发送到节点A和节点B上 然后进行计算 我们姑且把计算出来的向量叫做qa和qb:
在A上:
0*1+0*1 0
1/3*1+0*1 1/3
qa= 1/3*1+1/2*1 = 5/6
1/3*1+1/2*1 5/6
在节点B上:
0*0+0*1 0
0*1+1*1 1
qb=0*1+0*1 = 0
1*1+0*1 1
然后通过网络把qa和qb发送到执行reduce函数执行的节点上 reduce函数的作用也有两个:1、合并计算结果 2、进行排序输出
0
4/3
q1 = qa+qb= 5/6
11/6
发现这个q1正是我们手工计算时的第一轮迭代的结果,下面的步骤就简单了
那就是把这个q1分发到A和B进行计算新的qa和qb 这是q00={{0,4/3}} q10={{5/6,11/6}}
计算后:
0*0+0*4/3 0
1/3*0+0*4/3 0
qa= 1/3*0+1/2*4/3 = 4/6
1/3*0+1/2*4/3 4/6
0*5/6+0*11/6 0
0*5/6 +1*11/6 11/6
qb= 0*5/6 +0* 11/6 = 0
1*5/6 +0* 11/6 5/6
0
11/6
q2=qa+qb= 4/6
9/6
和我们手工计算的q2相同,如果反复进行运算 知道得到一个理想值,这就是用MR实现PageRank的原理了!
- MapReduce实现的PageRank原理
- PageRank的MapReduce实现
- PageRank算法的MapReduce实现
- pagerank算法的MapReduce实现
- 算法系列:PageRank算法的MapReduce实现
- 基于MapReduce的PageRank算法实现
- 基于MapReduce框架的PageRank算法实现
- Pagerank的C实现原理
- Pagerank的C++实现原理
- Pagerank的C实现原理
- PageRank及其MapReduce实现
- PageRank算法实现------MapReduce
- Pagerank 的mapreduce
- 使用MapReduce实现Pagerank算法
- 使用MapReduce实现PageRank算法
- PageRank算法及MapReduce实现
- PageRank算法的实现源代码和原理
- python pagerank实现的工具包,原理简介
- 身份证号码算法实现php
- JavaScript Ajax Json实现上下级下拉框联动效果实例代码
- hp打印机驱动安装 ubuntu13.04
- Libgdx专题系列:对象篇 Action动作
- android XML布局大全
- MapReduce实现的PageRank原理
- ABAP 提取或去除字符串中的中文字符(双字节字符)
- 样式笔记
- 任正非最新讲话:最好的防御就是进攻
- Android的Handler总结
- onmouseover/onmouseout事件--相关元素
- Android HandlerThread使用方法
- android自定义view内容显示不全
- [C++] C++ Eclipse CDT "launch failed. Binary not found" 解决方案