炼数成金-Hadoop数据分析平台-第1周-作业

来源:互联网 发布:买吉他去淘宝还是天猫 编辑:程序博客网 时间:2024/05/04 21:05

现假设有A,B,C,D,E五个网页,其中

1)A网页有链接指向B,C,D,E

2)B网页有链接指向A,D

3)C网页有链接指向A,D

4)D网页有链接指向C

5)E网页有链接指向A,C

A 请写出这个网页链接结构的Google矩阵,目测你认为哪个页面的重要性(PR值)最高?

5个网页之间的链接关系为: 

在得到初始矩阵后开始计算PR值。假设用户点击网页链接的概率为α,而用户跳到无关页面上的概率为1-α,而访问的页面恰好是这5个页面中A的概率只有(1-α)/5(α是阻尼系数,Google取α等于0.85)。

因此,取α=0.85,Google矩阵为:


特征向量的初始值 

将G代入公式p(n)=G*p(n-1)进行迭代计算,直到p(n)≈p(n-1),p(n)即为PR的值。

B(本题可选)手动或编程计算这5个页面的PR值,可以使用任何你熟悉的编程语言,欢迎在论坛上晒自己的程序和结果

答案:通过程序实现可知,页面C的PR值最高。

Java程序实现如下(需要导入Jama-1.0.2.jar包):


package hadoop;import Jama.Matrix;public class PageRank {        static double alpha =0.85;        public static void main(String[] args) {                double[][] arrayS ={                                {0d,1.0d/2,1.0d/2,0,1.0d/2},                                {1.0d/4,0,0,0,0},                                {1.0d/4,0,0,1,1.0d/2},                                {1.0d/4,1.0d/2,1.0d/2,0,0},                                {1.0d/4,0,0,0,0}                };                int length=6;//保存小数点后几位                double[][] arrayPR={{1},{1},{1},{1},{1}};                int n = arrayS.length;                Matrix s = new Matrix(arrayS);//初始矩阵                System.out.print("初始矩阵S:");s.print(5, length);                Matrix pageRank = new Matrix(arrayPR);//page rank初始值                System.out.print("特征向量:");pageRank.print(5, 0);                Matrix u=new Matrix(n,n,1.0d);//单元矩阵                Matrix g=s.times(alpha).plus(u.times((1-alpha)/n));                System.out.print("Google矩阵G:");g.print(5, length);                /*                 * 开始迭代计算适合的pageRank值。(也就是求矩阵g,特征值为1 的特征向量pageRank。ps:近似值)                 * p(n)=g*p(n-1)                 */                Matrix pageRankPre = pageRank;//P(0)                int iterator =0;                while(iterator<20){                pageRankPre = pageRank;                    pageRank = g.times(pageRank);                    iterator ++;                    System.out.println("迭代次数:"+iterator);                  pageRank.print(2, length);                    }                } }

输出结果如下:

初始矩阵S: 0.000000 0.500000 0.500000 0.000000 0.500000 0.250000 0.000000 0.000000 0.000000 0.000000 0.250000 0.000000 0.000000 1.000000 0.500000 0.250000 0.500000 0.500000 0.000000 0.000000 0.250000 0.000000 0.000000 0.000000 0.000000特征向量:      1      1      1      1      1Google矩阵G: 0.030000 0.455000 0.455000 0.030000 0.455000 0.242500 0.030000 0.030000 0.030000 0.030000 0.242500 0.030000 0.030000 0.880000 0.455000 0.242500 0.455000 0.455000 0.030000 0.030000 0.242500 0.030000 0.030000 0.030000 0.030000迭代次数:1 1.425000 0.362500 1.637500 1.212500 0.362500迭代次数:2 1.154063 0.452813 1.637500 1.302813 0.452813迭代次数:3 1.230828 0.395238 1.695074 1.283621 0.395238迭代次数:4 1.206359 0.411551 1.670605 1.299934 0.411551迭代次数:5 1.209826 0.406351 1.686204 1.291268 0.406351迭代次数:6 1.212035 0.407088 1.677365 1.296424 0.407088迭代次数:7 1.208905 0.407558 1.682530 1.293450 0.407558迭代次数:8 1.211499 0.406892 1.679537 1.295180 0.406892迭代次数:9 1.209661 0.407444 1.681275 1.294176 0.407444迭代次数:10 1.210869 0.407053 1.680266 1.294759 0.407053迭代次数:11 1.210108 0.407310 1.680852 1.294420 0.407310迭代次数:12 1.210575 0.407148 1.680512 1.294617 0.407148迭代次数:13 1.210293 0.407247 1.680709 1.294503 0.407247迭代次数:14 1.210462 0.407187 1.680595 1.294569 0.407187迭代次数:15 1.210362 0.407223 1.680661 1.294530 0.407223迭代次数:16 1.210421 0.407202 1.680623 1.294553 0.407202迭代次数:17 1.210386 0.407214 1.680645 1.294540 0.407214迭代次数:18 1.210406 0.407207 1.680632 1.294547 0.407207迭代次数:19 1.210395 0.407211 1.680640 1.294543 0.407211迭代次数:20 1.210401 0.407209 1.680635 1.294546 0.407209



1、对于硬件的要求;  2、计算所需的时长;  3、可能需要投入的成本(硬件成本、人力成本、时间成本、边际成本、各种不确定的成本要求)

0 0
原创粉丝点击