前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >复现经典:《统计学习方法》第21章 PageRank算法

复现经典:《统计学习方法》第21章 PageRank算法

作者头像
黄博的机器学习圈子
发布于 2020-06-11 07:28:56
发布于 2020-06-11 07:28:56
75300
代码可运行
举报
运行总次数:0
代码可运行

第21章 PageRank算法

本文是李航老师的《统计学习方法》一书的代码复现。作者:黄海广 备注:代码都可以在github中下载。

在实际应用中许多数据都以图(graph)的形式存在,比如,互联网、社交网络都可以看作是一个图。图数据上的机器学习具有理论与应用上的重要意义。pageRank算法是图的链接分析 (link analysis)的代表性算法,属于图数据上的无监督学习方法。

pageRank算法最初作为互联网网页重要度的计算方法,1996年由page和Brin提出,并用于谷歌搜索引擎的网页排序。事实上,pageRank可以定义在任意有向图上,后来被应用到社会影响力分析、文本摘要等多个问题。

pageRank算法的基本想法是在有向图上定义一个随机游走模型,即一阶马尔可夫链,描述随机游走者沿着有向图随机访问各个结点的行为。在一定条件下,极限情况访问每个结点的概率收敛到平稳分布, 这时各个结点的平稳概率值就是其 pageRank值,表示结点的重要度。 pageRank是递归定义的,pageRank的计算可以通过迭代算法进行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#https://gist.github.com/diogojc/1338222/84d767a68da711a154778fb1d00e772d65322187

import numpy as np
from scipy.sparse import csc_matrix


def pageRank(G, s=.85, maxerr=.0001):
    """
    Computes the pagerank for each of the n states
    Parameters
    ----------
    G: matrix representing state transitions
       Gij is a binary value representing a transition from state i to j.
    s: probability of following a transition. 1-s probability of teleporting
       to another state.
    maxerr: if the sum of pageranks between iterations is bellow this we will
            have converged.
    """
    n = G.shape[0]

    # transform G into markov matrix A
    A = csc_matrix(G, dtype=np.float)
    rsums = np.array(A.sum(1))[:, 0]
    ri, ci = A.nonzero()
    A.data /= rsums[ri]

    # bool array of sink states
    sink = rsums == 0

    # Compute pagerank r until we converge
    ro, r = np.zeros(n), np.ones(n)
    while np.sum(np.abs(r - ro)) > maxerr:
        ro = r.copy()
        # calculate each pagerank at a time
        for i in range(0, n):
            # inlinks of state i
            Ai = np.array(A[:, i].todense())[:, 0]
            # account for sink states
            Di = sink / float(n)
            # account for teleportation to state i
            Ei = np.ones(n) / float(n)

            r[i] = ro.dot(Ai * s + Di * s + Ei * (1 - s))

    # return normalized pagerank
    return r / float(sum(r))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Example extracted from 'Introduction to Information Retrieval'
G = np.array([[0,0,1,0,0,0,0],
              [0,1,1,0,0,0,0],
              [1,0,1,1,0,0,0],
              [0,0,0,1,1,0,0],
              [0,0,0,0,0,0,1],
              [0,0,0,0,0,1,1],
              [0,0,0,1,1,0,1]])
print(pageRank(G,s=.86))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[0.12727557 0.03616954 0.12221594 0.22608452 0.28934412 0.03616954
 0.16274076]

本章代码来源:https://github.com/hktxt/Learn-Statistical-Learning-Method

下载地址

https://github.com/fengdu78/lihang-code

参考资料:

[1] 《统计学习方法》: https://baike.baidu.com/item/统计学习方法/10430179

[2] 黄海广: https://github.com/fengdu78

[3] github: https://github.com/fengdu78/lihang-code

[4] wzyonggege: https://github.com/wzyonggege/statistical-learning-method

[5] WenDesi: https://github.com/WenDesi/lihang_book_algorithm

[6] 火烫火烫的: https://blog.csdn.net/tudaodiaozhale

[7] hktxt: https://github.com/hktxt/Learn-Statistical-Learning-Method

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习初学者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
复现经典:《统计学习方法》第13章 无监督学习概论
无监督学习是指从无标注数据中学习模型的机器学习问题。无标注数据是自然得到的数据,模型表示数据的类别、转换或概率无监督学习的本质是学习数据中的统计规律或潜在结构,主要包括聚类、降维、概率估计。
黄博的机器学习圈子
2020/06/09
4420
复现经典:《统计学习方法》第13章 无监督学习概论
复现经典:《统计学习方法》​第16章 主成分分析
PCA(principal components analysis)即主成分分析技术旨在利用降维的思想,把多指标转化为少数几个综合指标。
黄博的机器学习圈子
2020/06/09
7290
复现经典:《统计学习方法》第18章 概率潜在语义分析
1.概率潜在语义分析是利用概率生成模型对文本集合进行话题分析的方法。概率潜在语义分析受潜在语义分析的启发提出两者可以通过矩阵分解关联起来。
黄博的机器学习圈子
2020/06/11
8080
复现经典:《统计学习方法》第18章 概率潜在语义分析
资源 | 《统计学习方法》的Python 3.6复现,实测可用
项目地址:https://github.com/fengdu78/lihang-code
zenRRan
2019/01/02
5600
复现经典:《统计学习方法》​第17章 潜在语义分析
为输入,其中每一行对应一个单词,每一列对应一个文本,每一个元素表示单词在文本中的频数或权值(如TF-IDF)
黄博的机器学习圈子
2020/06/09
6640
复现经典:《统计学习方法》第19章 马尔可夫链蒙特卡罗法
随机抽样是蒙特卡罗法的一种应用,有直接抽样法、接受拒绝抽样法等。接受拒绝法的基本想法是,找一个容易抽样的建议分布,其密度函数的数倍大于等于想要抽样的概率分布的密度函数。按照建议分布随机抽样得到样本,再按要抽样的概率分布与建议分布的倍数的比例随机决定接受或拒绝该样本,循环执行以上过程。
黄博的机器学习圈子
2020/06/11
1.1K0
复现经典:《统计学习方法》第19章 马尔可夫链蒙特卡罗法
复现经典:《统计学习方法》第15章 奇异值分解
本章代码来源:https://github.com/hktxt/Learn-Statistical-Learning-Method
黄博的机器学习圈子
2020/06/09
3670
复现经典:《统计学习方法》第20章 潜在狄利克雷分配
(1)话题的单词分布:随机生成所有话题的单词分布,话题的单词分布是多项分布,其先验分布是狄利克雷分布。
黄博的机器学习圈子
2020/06/11
7460
复现经典:《统计学习方法》第20章 潜在狄利克雷分配
复现经典:《统计学习方法》第12章 监督学习方法总结
监督学习可以认为是学习一个模型,使它能对给定的输入预测相应的输出。监督学习包括分类、标注、回归。本篇主要考虑前两者的学习方法。
黄博的机器学习圈子
2020/06/09
7290
李航老师《统计学习方法》及相关资源最全汇总
关注数据派THU(DatapiTHU)后台回复“20200618”获取《统计学习方法》相关资料
数据派THU
2020/06/28
1.7K0
复现经典:《统计学习方法》第14章 聚类方法
1.聚类是针对给定的样本,依据它们属性的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。一个类是样本的一个子集。直观上,相似的样本聚集在同类,不相似的样本分散在不同类。
黄博的机器学习圈子
2020/06/09
7380
建议初学者收藏的机器学习初学者手抄本:数学基础、机器学习经典算法、统计学习方法等
机器学习手册分为三个部分,数学基础、机器学习经典算法、统计学习方法。建议有时间的同学可以这三个部分按照顺序学习,时间少的同学,我建议直接看机器学习经典算法,遇到问题查一下数学基础,也可以一边看机器学习经典算法,一边看统计学习方法,查漏补缺。
黄博的机器学习圈子
2021/07/07
7380
建议初学者收藏的机器学习初学者手抄本:数学基础、机器学习经典算法、统计学习方法等
PageRank算法原理与实现
假设一个由4个网页组成的群体:A,B,C和D。如果所有页面都只链接至A,那么A的PR(PageRank)值将是B,C及D的Pagerank总和。
致Great
2018/08/02
1.3K0
PageRank算法原理与实现
复现经典:《统计学习方法》第22章 无监督学习方法总结
第2篇详细介绍了八种常用的统计机器学习方法,即聚类方法(包括层次聚类与k均值聚类)、奇异值分解(SVD)、主成分分析(PCA)、无监督学习方法总结 22.1无监潜在语义分析(LSA)、概率潜在语义分析(PLSA)、马尔可夫链蒙特卡罗法(CMC,包括 Metropolis-Hastings-算法和吉布斯抽样)、潜在狄利克雷分配(LDA)、 PageRank算法。此外,还简单介绍了另外三种常用的统计机器学习方法,即非负矩阵分解(NMF)变分推理、幂法。这些方法通常用于无监督学习的聚类、降维、话题分析以及图分析。
黄博的机器学习圈子
2020/06/11
5990
复现经典:《统计学习方法》第22章 无监督学习方法总结
PageRank算法原理与实现
PageRank,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。
用户1332428
2018/07/30
5500
PageRank算法原理与实现
学它!李航《统计学习方法》课件,清华大学深圳研究院教授制作
李航是日本东京大学计算机科学博士,曾任微软亚洲研究院高级研究员及主任研究员、华为诺亚方舟实验室首席科学家,现任字节跳动人工智能实验室总监。他的研究方向包括信息检索、自然语言处理、统计机器学习及数据挖掘等。
机器之心
2019/11/12
1.6K0
学它!李航《统计学习方法》课件,清华大学深圳研究院教授制作
《统计学习方法》第 2 章 感知机
Statistical Learning Method 统计学习方法 https://pypi.org/project/slmethod/
iOSDevLog
2019/06/11
4060
《统计学习方法》第 2 章 感知机
机器学习算法(五)之隐马尔可夫算法代码
在上一次写完了隐马尔科夫模型的算法理论部分,总结而言,隐马尔科夫是用来研究隐藏的时序逻辑关系,在隐马尔科夫模型中,前后联系与关系要求比较严格,如果发生顺序的调换,则观测变量就会发生改变。
千与编程
2023/04/28
3170
机器学习算法(五)之隐马尔可夫算法代码
资源 | 《统计学习方法》的Python 3.6复现,实测可用
本文为你分享一个 GitHub 项目,其用 Python 复现了课程内容,并提供代码实现和课件。
数据派THU
2018/12/29
4990
资源 | 《统计学习方法》的Python 3.6复现,实测可用
提升方法(Boosting)
在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。
Michael阿明
2020/07/13
1.2K0
推荐阅读
相关推荐
复现经典:《统计学习方法》第13章 无监督学习概论
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验