使用scala实现pageRank算法

本文介绍了如何使用Scala编程语言实现PageRank算法。通过加载链接数据,进行多次迭代更新页面排名,并最终保存结果。代码中利用Spark进行分布式计算,提高效率。
摘要由CSDN通过智能技术生成
1、数据格式
links 的数据结构是 (pageId, linkList)元素组成; ranks 的数据结构是 (pageId , rank)组成 。 

2、算法逻辑
(1) 每个页面rank值初始化 位 1 
(2) 针对page m页 面 .,向其每个邻页面发送一个 贡献值c,贡献值 c = rank(p) /numberneighbors(p)  
(3) 将每个页面的排序值 计算值设置为 0.15 + 0.85 * 贡献值 c

针对 (2)和(3)步骤进行无限迭代,最终每个页面的排序值 rank是收敛的,此时认为该值是 页面的排序值 rank


3、PageRank算法原理 
PageRank的计算充分利用了两个假设:数量假设和质量假设。步骤如下:       1)在初始阶段:网页通过链接关系构建起Web图,每个页面设置相同的PageRank值,通过若干轮的计算,会得到每个页面所获得的最终PageRank值。随着每一轮的计算进行,网页当前的PageRank值会不断得到更新。       2)在一轮中更新页面PageRank得分的计算方法:在一轮更新页面PageRank得分的计算中,每个页面将其当前的PageRank值平均分配到本页面包含的出链上,这样每个链接即获得了相应的权值。而每个页面将所有指向本页面的入链所传入的权值求和,即可得到新的PageRank得分。当每个页面都获得了更新后的PageR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值