pangrank演算法--PageRank演算法並行實現
前言
Google透過PageRank演算法模型,實現了對全網際網路網頁的打分。但對於海量資料的處理,在單機下是不可能實現,所以如何將PageRank平行計算,將是本文的重點。
本文將繼續上一篇文章 ,把PageRank單機實現,改成並行實現,利用MapReduce計算框架,在叢集中跑起來。
目錄
PageRank演算法並行化原理
MapReduce分步式程式設計
PageRank的分步式演算法原理,簡單來講,就是透過矩陣計算實現並行化。
1). 把鄰接矩陣的列,按資料行儲存
鄰接矩陣
[,1] [,2] [,3] [,4][1,] 0.0375000 0.0375 0.0375 0.0375[2,] 0.3208333 0.0375 0.0375 0.8875[3,] 0.3208333 0.4625 0.0375 0.0375[4,] 0.3208333 0.4625 0.8875 0.0375
按行儲存HDFS
1 0.037499994,0.32083333,0.32083333,0.320833332 0.037499994,0.037499994,0.4625,0.46253 0.037499994,0.037499994,0.037499994,0.887500054 0.037499994,0.88750005,0.037499994,0.037499994
2). 迭代:求矩陣特徵值
map過程:
input: 鄰接矩陣, pr值
output: key為pr的行號,value為鄰接矩陣和pr值的乘法求和公式
reduce過程:
input: key為pr的行號,value為鄰接矩陣和pr值的乘法求和公式
output: key為pr的行號, value為計算的結果,即pr值
第1次迭代
0.0375000 0.0375 0.0375 0.0375 1 0.1500000.3208333 0.0375 0.0375 0.8875 * 1 = 1.2833330.3208333 0.4625 0.0375 0.0375 1 0.8583330.3208333 0.4625 0.8875 0.0375 1 1.708333
第2次迭代
0.0375000 0.0375 0.0375 0.0375 0.150000 0.1500000.3208333 0.0375 0.0375 0.8875 * 1.283333 = 1.64458330.3208333 0.4625 0.0375 0.0375 0.858333 0.73791670.3208333 0.4625 0.8875 0.0375 1.708333 1.4675000
… 10次迭代
特徵值
0.15000001.49557210.82550341.5289245
3). 標準化PR值
0.150000 0.03750001.4955721 / (0.15+1.4955721+0.8255034+1.5289245) = 0.37389300.8255034 0.20637591.5289245 0.3822311
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1762/viewspace-2810611/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PageRank演算法概述與Python實現演算法Python
- 【大創_社群劃分】——PageRank演算法MapReduce實現演算法
- PageRank演算法初探演算法
- 排名演算法(一)--PageRank演算法
- PageRank演算法和HITS演算法演算法
- 機器學習之PageRank演算法應用與C#實現(1):演算法介紹機器學習演算法C#
- Machine Learning:PageRank演算法Mac演算法
- 谷歌PageRank演算法詳解谷歌演算法
- 【大創_社群劃分】——PageRank演算法的解析與Python實現演算法Python
- 張洋:淺析PageRank演算法演算法
- 用vc執行緒模擬實現並行演算法 (轉)執行緒並行演算法
- 任務排程並行演算法的Java簡單實現並行演算法Java
- PageRank 演算法-Google 如何給網頁排名演算法Go網頁
- 並查集的概念與演算法實現並查集演算法
- 任務排程並行演算法的Python簡單實現並行演算法Python
- 基於圖的推薦演算法之Personal PageRank程式碼實戰演算法
- 並行Louvain社群檢測演算法並行AI演算法
- 多流向演算法GPU並行化演算法GPU並行
- PARL1.1一個修飾符實現並行強化學習演算法並行強化學習演算法
- 機器學習之PageRank演算法應用與C#實現(2):球隊排名應用與C#程式碼機器學習演算法C#
- 10行實現最短路演算法——Dijkstra演算法
- 任務排程的並行演算法並行演算法
- 演算法-排序演算法思想及實現演算法排序
- micropather實現A*演算法演算法
- 演算法strstr實現演算法
- LFU演算法實現演算法
- ARC演算法實現演算法
- 排序演算法-Java實現快速排序演算法排序演算法Java
- 並查集演算法Union-Find的思想、實現以及應用並查集演算法
- Go 實現雪花演算法Go演算法
- 排序演算法 Java實現排序演算法Java
- php演算法實現(一)PHP演算法
- 排序演算法Java實現排序演算法Java
- 雪花演算法的實現演算法
- golang洗牌演算法實現Golang演算法
- Mahout實現的演算法演算法
- java實現Bitmap演算法Java演算法
- KMP演算法 Java實現KMP演算法Java