本文内容主要参考:李航老师的《统计学习方法》
还有看看马尔科夫链

一、马尔可夫链在统计学中的定义


马尔可夫链(Markov Chain),描述了一种状态序列,其每个状态值取决于前面有限个状态。

二、如何通俗理解马尔可夫链

马尔可夫链指的是在已知现在的条件下,过去的信息与未来是独立的,这个独立是条件独立性。
最简单的例子就是:
已知父母具有某项特长天赋的条件下,孩子也拥有的概率。与已知祖宗十八代和父母的信息的条件下,孩子拥有这项天赋的概率,是一样的。
若要用人生的例子来讲,已知你大学学习情况下和已知你在幼儿园小学初中高中大学的所有学习情况下,考研能不能考上的概率是一样的。
但是,也不一定有道理:
考研考不考得上取决于学习的能力,而这种能力,其实是从小学初中高中大学的一个知识和学习能力的积累,尤其是复试考察的素质教育方面。
所以要要弄清适用情况
一、连续性的
1)生活中,无数的人,都是通过改变现在而改变未来的啊,非常正确啊!
2)但是,实际中,没有你的过去,怎么又有你的现在呢。这是个相互因果的链条啊!
3)所谓“链”,就是一环扣一环,环环有关才能称其为“链”。如果仅与临近的环有关,还能有链的概念吗?如从这个角度来说,马尔科夫链(难道定义错了,请看第4点)的这个举例,就是准确的。
4)但是,马尔科夫链的概念就是:数学中具有马尔可夫性质的离散时间随机过程。描述了一种状态序列,其每个状态值只取决于该状态值的前面的有限个状态,与再之前的状态无关。显然,按照这个定义的内涵,上面“你的未来只与你现在有关,而无关你的过去”又是错误的。即拿持续诸如生命过程、事物发展的过程来描述马尔科夫链概念,是不准确的
上面,3与4的结合,似乎辩证法、相对论的哲学问题出现了,且悖论也似乎形成了!!!
二、离散型的
比如:
丢出一个骰子,确定了结果后,丢下一次骰子的结果和上一次骰子的结果没有关系,同样和之前任何一次丢骰子都没关系,每个点均是1/6。
一个小孩子,他正在学习,下一刻继续学习的概率是一个固定数值,因为他的日常行为习惯通常都会固定,正在学习,下一刻转而去玩手机的概率也是某个固定数值,那么,只要时间足够长,比如一个暑假,他总计花费在学习上的时间和玩手机上的时间比例就会固定。
上面的例子满足1.每次事件发生概率固定;2.相互独立

三、马尔可夫链简单来说

一句话描述
状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备无记忆的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。
也就是说,马尔可夫链是一个随机系统,它必须满足两个条件:

  • 系统任意时刻可以用有限个可能状态之一来描述
  • 系统无后效性,即某阶段的状态一旦确定,则此后过程的演变不再受此前各种状态及决策的影响

在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率随机漫步就是马尔可夫链的例子。随机漫步中每一步的状态是在图形中的点,每一步可以移动到任何一个相邻的点,在这里移动到每一个点的概率都是相同的(无论之前漫步路径是如何的)
数学模型——初步理解马尔可夫链(Markov chain)
以下是随机漫步程序的python语言实现:

from random import choice
import matplotlib.pyplot as pltclass RandomWork():def __init__(self, num_points=5000):self.num_points = num_pointsself.x_values = [0]self.y_values = [0]def fill_walk(self):while len(self.x_values) < self.num_points:x_direction = choice([1, -1])x_distance = choice([0, 1, 2, 3, 4])x_step = x_direction * x_distancey_direction = choice([1, -1])y_distance = choice([1, 2, 3, 4])y_step = y_direction * y_distancenext_x = self.x_values[-1] + x_stepnext_y = self.y_values[-1] + y_stepself.x_values.append(next_x)self.y_values.append(next_y)rw = RandomWork()
rw.fill_walk()
plt.plot(rw.x_values, rw.y_values)
plt.show()

结果:

四、离散状态马尔可夫链

4.1、转移概率矩阵和状态分布

离散状态马尔可夫链X = {X0,X1,……,Xt,……},随机变量Xt(t = 0,1,2,……)定义在离散空间S,转移概率分布可以由矩阵表示。

马尔可夫链的转移概率矩阵:

考虑马尔可夫链X = {X0,X1,……,Xt,……}在时刻t(t = 0,1,2,……)的概率分布,称为时刻t的状态分布,记作:

特别地,马尔可夫链的初始状态分布可以表示为:

有限离散状态的马尔可夫链可以由有向图表示。结点表示状态,边表示状态之间的转移,边上的数值表示转移概率。从一个初始状态出发,根据有向边上定义的概率在状态之间随机跳转(或随机转移),就可以产生状态的序列。马尔可夫链实际上是刻画随时间在状态之间转移的模型,假设未来的转移状态只依赖于现在的状态,而与过去的状态无关。


下面看一个马尔可夫链应用的例子。
自然语言处理、语音处理中经常用到语言模型(language model),是建立在词表上的n阶马尔可夫链。比如,在英语语音识别中,语音模型产生出两个候选:“How to recognize speech”与“How to wreck a nice beach”,要判断哪个可能性更大。显然从语义的角度前者的可能性更大,语言模型可以帮助做出这个判断。


语言模型的学习等价于确定马尔可夫链中的转移概率值,如果有充分的语料,转移概率可以直接从语料中估计。直观上,“wreck a nice”出现之后,下面出现“beach”的概率极低,所以第二个语句的概率应该更小,从语言模型的角度看第一个语句的可能性更大。

这是因为



用python写这个晴雨天模型

概率:

转移矩阵P:

初始状态分布:

根据这个马尔可夫链模型,用Python计算出第二天、第三天甚至一个月后的天气概率分布(状态分布):

#离散状态马尔可夫链
from numpy import *#今天是晴天,那么明天是晴天的概率是0.9,雨天的概率是0.1。
#今天是雨天,那么明天是晴天的概率是0.5,雨天的概率是0.5。P = array([[0.9, 0.5], [0.1, 0.5]])    #转移矩阵#假设第一天是晴天
Init_State = array([[1], [0]])   #初始状态分布n = 30    #预测n天的事件发生概率
for i in range(n):S = dot(P, Init_State)    #dot()是点乘函数print(f'第{i+2}天天气概率分布:{S.T}')    #T的作用是将矩阵转置,将n*1变为1*nInit_State = S

结果:

第2天天气概率分布:[[0.9 0.1]]
第3天天气概率分布:[[0.86 0.14]]
第4天天气概率分布:[[0.844 0.156]]
第5天天气概率分布:[[0.8376 0.1624]]
第6天天气概率分布:[[0.83504 0.16496]]
第7天天气概率分布:[[0.834016 0.165984]]
第8天天气概率分布:[[0.8336064 0.1663936]]
第9天天气概率分布:[[0.83344256 0.16655744]]
第10天天气概率分布:[[0.83337702 0.16662298]]
第11天天气概率分布:[[0.83335081 0.16664919]]
第12天天气概率分布:[[0.83334032 0.16665968]]
第13天天气概率分布:[[0.83333613 0.16666387]]
第14天天气概率分布:[[0.83333445 0.16666555]]
第15天天气概率分布:[[0.83333378 0.16666622]]
第16天天气概率分布:[[0.83333351 0.16666649]]
第17天天气概率分布:[[0.8333334 0.1666666]]
第18天天气概率分布:[[0.83333336 0.16666664]]
第19天天气概率分布:[[0.83333334 0.16666666]]
第20天天气概率分布:[[0.83333334 0.16666666]]
第21天天气概率分布:[[0.83333334 0.16666666]]
第22天天气概率分布:[[0.83333333 0.16666667]]
第23天天气概率分布:[[0.83333333 0.16666667]]
第24天天气概率分布:[[0.83333333 0.16666667]]
第25天天气概率分布:[[0.83333333 0.16666667]]
第26天天气概率分布:[[0.83333333 0.16666667]]
第27天天气概率分布:[[0.83333333 0.16666667]]
第28天天气概率分布:[[0.83333333 0.16666667]]
第29天天气概率分布:[[0.83333333 0.16666667]]
第30天天气概率分布:[[0.83333333 0.16666667]]
第31天天气概率分布:[[0.83333333 0.16666667]]

例子

参考这篇文章马尔科夫链(Markov chain)5分钟简单入门中的例子

有一个大的汽车租赁公司,有三家门店,你租的时候可以选择任何一个门店,还的时候也可以选择任何一家门店, 从不同门店借出和归还的概率如下:

假设用户最开始从2号店借出车,十五次借还以后,这辆车最可能在哪个门店呢?
用python实现15次借还后的预测:

#离散状态马尔可夫链
from numpy import *P = array([[0.5, 0.3, 0.3], [0.2, 0.1, 0.6], [0.3, 0.6, 0.1]])    #转移矩阵Init_State = array([[0], [1], [0]])   #初始状态分布n = 15    #预测n天的事件发生概率
for i in range(1,n):S = dot(P, Init_State)    #dot()是点乘函数print(f'第{i}次借还后该车在某号店的概率分布:{S.T}')    #T的作用是将矩阵转置,将n*1变为1*nInit_State = S

结果:

第1次借还后该车在某号店的概率分布:[[0.3 0.1 0.6]]
第2次借还后该车在某号店的概率分布:[[0.36 0.43 0.21]]
第3次借还后该车在某号店的概率分布:[[0.372 0.241 0.387]]
第4次借还后该车在某号店的概率分布:[[0.3744 0.3307 0.2949]]
第5次借还后该车在某号店的概率分布:[[0.37488 0.28489 0.34023]]
第6次借还后该车在某号店的概率分布:[[0.374976 0.307603 0.317421]]
第7次借还后该车在某号店的概率分布:[[0.3749952 0.2962081 0.3287967]]
第8次借还后该车在某号店的概率分布:[[0.37499904 0.30189787 0.32310309]]
第9次借还后该车在某号店的概率分布:[[0.37499981 0.29905145 0.32594874]]
第10次借还后该车在某号店的概率分布:[[0.37499996 0.30047435 0.32452569]]
第11次借还后该车在某号店的概率分布:[[0.37499999 0.29976284 0.32523717]]
第12次借还后该车在某号店的概率分布:[[0.375      0.30011858 0.32488142]]
第13次借还后该车在某号店的概率分布:[[0.375      0.29994071 0.32505929]]
第14次借还后该车在某号店的概率分布:[[0.375      0.30002965 0.32497035]]
第15次借还后该车在某号店的概率分布:[[0.375      0.29998518 0.32501482]]

4.2 平稳分布


直观上,如果马尔可夫链的平稳分布存在,那么以该平稳分布作为初始分布,面向未来进行随机状态转移,之后任何一个时刻的状态分布都是该平稳分布。


引理19.1给出一个求马尔可夫链平稳分布的方法。

例题


from sympy import *
x1, x2, x3 = symbols('x1, x2, x3')
I = x1 + x2 + x3 -1
P = Matrix([[1/2, 1/2, 1/4], [1/4, 0, 1/4], [1/4, 1/2, 1/2]])
S = Matrix([[x1], [x2], [x3]])print(solve([P*S-S, I],[x1,x2,x3]))

结果:

{x3: 0.400000000000000, x2: 0.200000000000000, x1: 0.400000000000000}



from sympy import *
x1, x2, x3 = symbols('x1, x2, x3')
I = x1 + x2 + x3 -1
P = Matrix([[1, 1/3, 0], [0, 1/3, 0], [0, 1/3, 1]])
S = Matrix([[x1], [x2], [x3]])print(solve([P*S-S, I],[x1,x2,x3]))

结果:

{x2: 0.0, x1: 1.0 - x3}

由上面这个例子可知:
马尔可夫链可能存在唯一平稳分布,无穷多个平稳分布,或不存在平稳分布。

五、连续状态马尔可夫链

连续状态马尔可夫链 X = {X0,X1,……,Xt,……},随机变量Xt(t=0,1,2,……)定义在连续状态空间S,转移概率分布由概率转移核或转移核(transition kernel)表示。


马尔可夫链(Markov chain)的基本认识相关推荐

  1. 马尔可夫链(Markov chain)的性质

    本文内容主要参考:李航老师的<统计学习方法> 以下介绍离散状态马尔可夫链的性质.可以自然推广到连续状态马尔可夫链. 一.不可约 直观上,一个不可约的马尔可夫链,从任意状态出发,当经过充分长 ...

  2. 马尔可夫链(Markov Chain)是什么?通俗易懂

    马尔可夫链(Markov Chain) 马尔可夫链经常出现在机器学习的概念中,因为生活中很多情况都可以用马尔可夫链建模,我们先给出数学化的定义,然后再举个生活化的例子与数学公式相对应,就可以理解马尔可 ...

  3. 马尔可夫链(Markov Chain),隐马尔可夫模型

    马尔可夫链: 参考链接: https://blog.csdn.net/weixin_42509541/article/details/123332839 我对它的理解就是: 针对的数据是一组离散随机变 ...

  4. R语言使用马尔可夫链Markov Chain, MC来模拟抵押违约

    这篇文章的目的是将我在夜班学习的材料与我的日常工作和R相结合. 如果我们有一些根据固定概率随时间在状态之间切换的对象,我们可以使用马尔可夫链 * 来模拟该对象的长期行为. 一个很好的例子是抵押贷款.在 ...

  5. Probability, Matringale,Markov Chain, MCMC

    一.基本知识 1. 条件概率 条件概率是指在某件事情已经发生的前提下,另一件事情在此基础上发生的概率,举例来说P(A丨B)表示B发生的基础上,A也发生的概率,基本公式为: 2. 条件期望 在上述概率下 ...

  6. martingale、markov chain、Monte Carlo、MCMC

    文章结构如下: 1: MCMC 1.1 MCMC是什么 1.2 为什么需要MCMC 2: 蒙特卡罗 2.1 引入 2.2 均匀分布,Box-Muller 变换 2.3 拒绝接受采样(Acceptanc ...

  7. 马尔可夫链 (Markov Chain)是什么鬼

    作者:红猴子 链接:https://www.zhihu.com/question/26665048/answer/157852228 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  8. 马尔可夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)

    文章目录 1. 蒙特卡罗法 2. 马尔可夫链 3. 马尔可夫链蒙特卡罗法 4. Metropolis-Hastings 算法 5. 吉布斯抽样 蒙特卡罗法(Monte Carlo method),也称 ...

  9. 对马尔可夫链(Markov Chain, MC)的学习

    满足当前时间之后的状态只与当前有关,与过去无关的性质称为马尔可夫性. 随机过程满足马尔可夫性则称为马尔可夫过程.   当了解完马尔可夫性后,下面来说说马尔可夫链.马尔可夫链(Markov Chain, ...

  10. [work]马尔可夫链 (Markov Chain)是什么鬼

    "随机过程随机过,实变函数学十遍,微机原理闹危机,汇编语言不会编" 1. 唯一让我彻底蒙圈的课程 这些课程真的太难了,大学里无数人为此伤透了脑筋,挂科率杠杠的.我当初也是的,特别是 ...

最新文章

  1. left join 和inner join关联查询区别
  2. html5自动生成图片,HTML5拖放API如何实现自动生成相框功能 HTML5拖放API实现自动生成相框功能代码...
  3. 如何得到当前程序执行的堆栈
  4. ICCV2019论文题目中文列表
  5. Sdk4J.jar安装到本地maven仓库
  6. AI:人工智能领域之AI发展史(人工智能发展历史)之详细攻略
  7. UC浏览器如何开启html5,如何开启手机uc浏览器中的极速模式
  8. 小码哥《恋上数据结构与算法》笔记(十五):哈希表(Hash Table)
  9. 新周刊:放弃北上广的10个理由
  10. android 修改应用权限设置在哪里,Android在应用设置里关闭权限,返回生命周期处理...
  11. postman的批量传送数据和接口关联
  12. 通信专业实务(四)——互联网
  13. 泛泰binx一键式离线刷机(可断网刷机,可刷任意版本)(官网脚本更新7.30)
  14. android源生Browser分析---APP层基本架构
  15. 百度开发平台api有哪些
  16. 英伟达FXAA抗锯齿性能实测、画质对比
  17. 011 Towards Byzantine-Resilient Federated Learning via Group-Wise Robust Aggregation(群体鲁棒聚合、拜占庭)
  18. amd显卡没有屏幕旋转快捷键,自己写一个
  19. Windows8简体中文 旗舰版 专业版 64位 32位 全系列 及win8 神key
  20. 佳能Canon i6100 打印机驱动

热门文章

  1. 腾讯云支付平台配置掌优云音响
  2. 手机哔哩哔哩缓存的m4s格式的视频转换成mp4
  3. python3 爬虫 HTTP Error 403:Forbidden
  4. html打印成pdf页面大小,pdf页面大小调整 pdf打印页边距怎么设置
  5. 当你灵感枯竭的时候,如何深挖客户需求?采用曼陀罗思考法(5W1H模式),相信你会找到出路
  6. JAVA多线程之状态转换图
  7. HP WebInspect 软件 简介
  8. 安川机器人示教器按键功能介绍
  9. 【Windows10】利用分区助手扩展C盘分区
  10. 利用PS和抠图软件轻松换证件照背景