从马尔科夫链到吉布斯采样与PageRank
马尔科夫链表示state
的链式关系,下一个state
只跟上一个state
有关。
吉布斯采样通过采样条件概率分布得到的样本点,近似估计概率分布P(z)P(z)。PageRank通过节点间的连接,估计节点的重要程度rr。吉布斯采样中,state
代表不同的样本点,state
的分布就是P(z)P(z)。PageRank中,state
代表不同节点的分数,state
的分布就是要求的rr。不论吉布斯采样还是PageRank,state
的分布本质上都是马尔科夫链,而最后都希望state
的分布是独一并且稳定的。
Markov Chain
介绍
上图表示了一个典型的马尔科夫链,每个城市A、B、C代表不同的state
。该图描述了不同state
间的转移变化关系。并且下一个时间的state
只和上一个时间的state
有关。
稳定态
想象上述的马尔科夫链,state
不停的变化,我们可以求出不同state
的概率,也就是state
的概率分布。
最简单的办法是列出不同state
的概率公式,然后解线性方程组求解,如下:
可是,单一稳定的state
不一定存在,例如下面两种情况:
-
Spider trap
,a⇔ba Leftrightarrow b,相当于状态被困在某区域(多个状态)。 -
Dead End
,a⇒ba Rightarrow b,相当于状态被困在单个状态中。
那么,什么情况下才有单一稳定的state
的存在呢?
单一稳定的state
分布的存在的充分条件是:对于任意两个state
s1,s2s_1,s_2,它们之间的状态转移概率不为0。也就是p(s1|s2)>0p(s_1|s_2)>0。也就是说,state
间(包含自身)都有连接,这样的话便存在单一稳定的state
分布。
Gibbs Sampling
介绍
Gibbs Sampling遇到的问题是:在已知P(zi|z1,...,zi−1,zi+1,...zN)P(z_i|z_1,...,z_{i-1},z_{i+1},...z_{N})分布的情况下,求变量P(z)(z=z1,...,zN)P(z) (z = {z_1,...,z_N})的分布。
Gibbs Sampling的解决办法是:设置外循环tt,遍历采样点数;设置内循环kk,遍历特征数,对于每一个特征值ztkz_k^t,根据分布ztk∼P(zk=ztk|z1=zt1,z2=zt2,...)z_k^t sim P(z_k = z_k^t | z_1 =z_1^t, z_2 =z_2^t,...)采样ztkz_k^t。最后,根据z1,z2,z3,...{z^1,z^2,z^3,...}得到P(z)(z=z1,...,zN)P(z) (z = {z_1,...,z_N})的分布。
Gibbs Sampling与Markov
吉布斯采样的数据z1,z2,z3,...{z^1,z^2,z^3,...}相当于马尔科夫链中不同的state
(因为ztz^t只和zt−1z^{t-1}有关)。如果马尔科夫链存在单一且稳定的状态分布,那么就可以通过采样求出P(z)(z=z1,...,zN)P(z) (z = {z_1,...,z_N})。
下面,分两个步骤证明:
- Gibbs Sampling存在单一且稳定的状态分布。
- Gibbs Sampling单一且稳定的状态分布就是P(z)P(z)。
Gibbs Sampling中条件概率没有0值确保了Gibbs Sampling存在单一且稳定的状态分布。
根据概率公式,可推导Gibbs Sampling单一且稳定的状态分布就是P(z)P(z)。
Page Rank
介绍
Page Rank的哲学是:一个点的重要性跟这个点的in-link有关,不同的in-link权重不一样,score越大的节点对应的in-link也就越重要。 令节点的score向量为rr,节点的邻接矩阵为MM。那么,rr和MM的关系可写作:
r=Mr
r = Mr
示例如下:
这个例子中,可以把矩阵MM和向量rr相乘当做MM的列以向量rr为权重进行线性组合,矩阵MM同一列的不同行代表该节点向其他节点的分发连接。这样理解起来就比较清晰了。
rr的求解可以使用特征值-特征向量分解,最大特征值对应的特征向量即是rr。
稳定性
rr的值在满足特定情况下才是单一且稳定的。
实际计算Page Rank中,需要增加一个条件:每个节点都有1Nfrac{1}{N}的概率变换到任何其他节点状态。
原来的式子是:
r=Mr
r = Mr
考虑稳定性后的式子是:
Ar=βM+(1−β)1N11T=Ar
begin{split} A &= beta M + (1-beta) frac{1}{N} mathbf{1} mathbf{1}^T \ r &= Ar end{split}
示例如下:
稀疏计算
在上面的计算公式中,矩阵AA是稠密的,空间复杂度是O(N2)O(N^2),占得空间很大。
因此,改进计算如下:
Arr=βM+(1−β)1N11T=Ar=βMr+1−βN
begin{split} A &= beta M + (1-beta) frac{1}{N} mathbf{1} mathbf{1}^T \ r &= Ar \ r &= beta M r + frac{1-beta}{N} end{split}
- MongoDB初探第二篇 (r4笔记第82天)
- Spring思维导图,让Spring不再难懂(cache篇)
- 曲折的10g,11g中EM的安装配置过程(r4笔记第98天)
- Linux 学习记录 一(安装、基本文件操作).
- 实用的位运算应用(r4笔记第97天)
- 关于date格式的两个案例(r4笔记第96天)
- 【新技术分享】C++17 最新进展
- Ant + Jenkies +Tomcat 自动构建部署Web项目
- 博客项目Tale思维导图,让项目不再难懂
- 关于权限管理的实用脚本(r4笔记第94天)
- Ant学习笔记
- 清理session的小插曲(r4笔记第95天)
- CVE-2017-16943 Exim UAF漏洞分析
- Java泛型学习
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 简单谈谈centos7中配置php
- Linux动态链接库的使用
- Linux下部署springboot项目的方法步骤
- Linux、CentOS下安装zip与unzip指令功能(服务器)
- Linux上查看用户创建日期的几种方法总结
- 详解基于Linux的LVM无缝磁盘水平扩容
- CentOS平台实现搭建rsync远程同步服务器的方法
- CentOS 8设置自动更新的完整步骤
- linux 网络编程 socket选项的实现
- Ubuntu16.04安装Jenkins的方法图文详解
- leetcode树之对称二叉树
- linux 上在指定时间段内每隔多少分钟自动执行任务计划crontab
- 详解如何使用Spark和Scala分析Apache访问日志
- Centos 7.4中的远程访问控制的实现方法
- Linux查找特定程序whereis实例详解