Hadoop案例:网页评价PageRank

本文介绍了PageRank算法,它是Google衡量网页重要性的关键。PageRank通过链接价值来评估网页,初始值为1,通过迭代计算趋于稳定。在MapReduce中,通过映射和归约步骤处理页面链接关系和PR值,实现PR的计算。文章提供了一个使用MR实现PageRank的案例,并解释了整个计算过程。
摘要由CSDN通过智能技术生成

首先不说别的,各位新年好昂,都给我暴富!下面还有最后一个hadoop案例,需要更,内容如下:

网页评价PageRank案例

1、PageRank是什么

PageRank是Google提出的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度,是 Google 对网页重要性、价值的评估。
是Google创始人拉里·佩奇和谢尔盖·布林于1997年创造的。
PageRank实现了将链接价值概念作为排名因素。
在这里插入图片描述

扩展:
PR值的提高可有效提升你的网页在Google搜索引擎中的页面排名,但并不是说PR越高则排名越靠前。有一些网站尽管PR不算高,但却较一些PR高的网站排名还要靠前。所以你应该在对网站优化的同时,也要努力提高网站的PR值。提高PR最佳和最简单的办法在于:
   1. 提供有趣、有价值的网站内容,这样站长们会主动和你进行友情链接,从而提高你的外部链接值。
   2. 将网站提交到各大搜索引擎,这样可显著改善你的网站在Google上的排名。
   3. 可将网站添加到行业门户站点、网上论坛、留言簿等等各种允许添加网址链接的地方。
   4. 与其他网站交换链接来提高链接权值。
   5. 与其他网站交换链接时首先要查看对方站点是否被Google删除,或是否被Google收录,没有被Google收录的站点最好不要做连接。
   为什么不说百度嘞,因为吧,这个给q就可以

2、PR计算逻辑

1)算法原理(1)

思考超链接在互联网中的作用?
入链 ====给?的投票
PageRank让链接来“投票“,到一个页面的超链接相当于对该页投一票。
入链数量
如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。
入链质量
指向页面A的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高的页面指向页面A,则页面A越重要。

网络上各个页面的链接图:
在这里插入图片描述
站在A的角度:
需要将自己的PR值分给B,D。
站在B的角度:
收到来自A,C,D的PR值。
在这里插入图片描述

PR需要迭代计算:
其PR值会趋于稳定。
在这里插入图片描述

2)算法原理(2)

初始值:
Google的每个页面设置相同的页面价值,即PR值
pagerank算法给每个页面的PR初始值为1。
迭代计算(收敛):
Google不断的重复计算每个页面的PageRank。那么经过不断的重复计算,这些页面的PR值会趋向于稳定,也就是收敛的状态。
在具体企业应用中怎么样确定收敛标准?
1、每个页面的PR值和上一次计算的PR相等。
2、设定一个差值指标(0.0001)。当所有页面和上一次计算的PR差值平均小于该标准时,则收敛。
3、设定一个百分比(99%),当99%的页面和上一次计算的PR相等。

3)算法原理(3)

站在互联网的角度:
只出,不入:PR会为0。
只入,不出:PR会很高。
直接访问网页:pagerank并不能百分百的表示页面价值,如果是直接访问某个网址的话,就不能像在a标签那样统计对它的点击,但是这种直接访问的方式,也会对页面价值产生影响,因此页面价值的计算不光要考虑入链出链,要考虑综合情况,要修正我们之前的计算方式
为修正PageRank计算公式,增加阻尼系数
在简单公式的基础上增加了阻尼系数(damping factor)d
一般取值d=0.85。
完整PageRank计算公式:
d:阻尼系数
M(i):指向i的页面集合,即给Pi页面做入链的其它页面集合
L(j):页面的出链数,即M(i)的某个页面的出链数
PR(pj):j页面的PR值
n:所有页面数
在这里插入图片描述
每一个给Pi页面投票(给它做入链的)的页面的页面价值除以出链数,
例如有3个页面A、B、C,页面价值分别为1、2、3,出链数分别为4、5、6
那么,整个公式结果就是
PR(Pi)=(1-0.85)/3+0.85*(1/4) + 0.85*(2/5)+0.85*(3/6)
前边乘以0.85的意思就是其它页面给它的投票只能起到它85%的比重,

3、使用MR(MapReduce)实现

解需求思路
PR计算是一个迭代的过程,首先考虑一次计算
思考:
页面包含超链接
每次迭代将pr值除以链接数后得到的值传递给所链接的页面
so:每次迭代都要包含页面链接关系和该页面的pr值
mr:相同的key为一组的特征
map:
1,读懂数据:第一次附加初始pr值
2,映射k:v
1,传递页面链接关系,key为该页面,value为页面链接关系
2,计算链接的pr值,key为所链接的页面,value为pr值
reduce:
*,按页面分组
1,两类value分别处理
2,最终合并为一条数据输出:key为页面&新的pr值,value为链接关系
文件准备

pagerank.txt

A	B	D
B	C
C	A	B
D	B	C

结果示例:
A 0.1948920382568876 B D
B 0.32924764374509896 C
C 0.3693890835802573 A B
D 0.12052995512620604 B C

表示A给B、D投票
A B D
B C
C A B
D B C
map:
A:BD
B:1/2
D:1/2
A:1/2
reduce:
A:1/2  B D 
map:
A:  1/2,  B  D 
B:1/4
C:1/4
A:3/4
reduce:
//A:  1/2,  B  D 
//A:3/4
A:  3/4,B,D

(1)Node

package com.four.pagerank;

import java.io.IOException;
import java.util.Arrays;

import org.apache.commons.lang.StringUtils;

public class Node {
   
	private double pr;
	private String [] adjactNodeNames;
	//分割
	private static final char fieldSeparator= '\t';
	public Node() {
   
		super();
	}
	public Node(double pr, String[] adjactNodeNames) {
   
		super();
		this.pr = pr;
		this.adjactNodeNames = adjactNodeNames;
	}
	public double getPr() {
   
		return pr;
	}
	public void setPr(double pr) {
   
		this.pr = pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值