初步认识马尔可夫链与马尔可夫链的简单应用

讲马尔可夫链不得不提到 随机过程,它本身就是随机过程课本中的重要内容,犹如牛顿定律在力学中的地位。作为概率论的一个重要分支, 随机过程撑起了概率论的半壁江山,如今,它广泛使用在诸如天气预报、统计物理、天体物理、运筹决策、经济数学、安全科学、人口理论、可靠性及计算机科学等领域。

自然中存在的随机过程非常广泛,利用随机过程的理论建模,就总也逃不开 马尔可夫链,比如我们熟知的液体中颗粒所做的布朗运动、商业活动中索要研究的每天销售情况、在数字通信中的语音信号、视频信号等等。 它可以将无规则的运动用数学描述出来,对现实生产生活有着巨大的指导意义!

马尔可夫是谁

初步认识马尔可夫链与马尔可夫链的简单应用

安德雷·马尔可夫

1856年出生的马尔可夫是俄国非常有名的数学家,他和切比雪夫、李雅普诺夫一起,将概率论从濒临衰亡的边缘拯救出来。三人中以马尔可夫的贡献尤为重要,潜心向学的马尔可夫,年仅40岁就被选为科学院院士,一生中发表的概率论方面的文章或专著共有二十五篇(部)之多。

他研究并提出一个用数学方法就能解释自然变化的一般规律模型,后人将其命名为马尔可夫链(Markov Chain)。

马尔可夫链是什么

随机过程描述的是一个量随时间可能的变化。在这个过程里,每一个时刻变化的方向都是不确定的,随机过程就是由这一系列不确定的随机变量组成的。每一个时刻系统的状态都由一个随机变量表述,整个过程则构成一个随机过程的实现。

知道了什么是随机过程后,我们可以试想一个最简单的随机过程,这个过程由N步组成,每一步都有两个选择(0,1),那么可能的路径就有2的N次方个,这个随机过程就要由2^N这个指数级别个数的概率来描述,我们一看指数级别!?维度这么大岂不直接爆炸???此刻, 马尔可夫过程(Markov Processes)被推了出来:随机过程的每一步的结果与且仅与上一步有关,与其它无关。

马尔可夫性:过程或(系统)在时刻t0所处的状态为已知的条件下,过程在时刻t>t0所处状态的条件分布过程在时刻t0之前所处的状态无关的特性成为马尔科夫性或无后效性。具有马尔可夫性的随机过程成为马尔可夫过程。

马尔可夫链:时间和状态都是离散的马尔科夫过程。

一句话描述:状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备 无记忆的性质:下一状态的概率分布 只能由当前状态决定,在时间序列中它前面的事件均与之无关。

也就是说,马尔可夫链是一个随机系统,它必须满足两个条件:

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

总结:马尔可夫链就是这样一个任性的过程,它将来的状态分布只取决于现在,跟过去无关!
就把下面这幅图想象成是一个马尔可夫链吧。实际上就是一个随机变量随时间按照Markov性进行变化的过程。

初步认识马尔可夫链与马尔可夫链的简单应用

马尔可夫链的数学表达

状态向量

初步认识马尔可夫链与马尔可夫链的简单应用

转移概率矩阵

初步认识马尔可夫链与马尔可夫链的简单应用

假设进进每天有三个状态:玩耍,学习,睡觉(这就是 状态分布)。已知他今天在玩儿,那他明天学习、玩耍、睡觉的概率是多少?后天乃至N天后学习、玩耍、睡觉的概率是多少?

初步认识马尔可夫链与马尔可夫链的简单应用

当然,想要知道N天后学习、玩耍、睡觉的概率是多少,我们需要有两个条件:

一个预知条件:知道进进第一天的状态( 状态分布矩阵S),

初步认识马尔可夫链与马尔可夫链的简单应用

上面这个矩阵就是确定的 转移概率矩阵P,它是时间齐次性的,换句话说,也就是转移概率矩阵P它是保持不变的,第一天到第二天的转移概率矩阵跟第二天到第三天的转移概率矩阵是一样的。

有了这个转移概率矩阵P,再加上已知的第一天的状态分布矩阵(进进第一天在 玩 or 学 or 睡的概率),就可以计算出进进第N天的状态分布了(进进第N天在 玩 or 学 or 睡的概率)。

ok,我们现在已经拥有了测算进进n天后,是在玩还是在学,还是在睡的所有条件了,也就是 初始状态分布矩阵S转移概率矩阵P。假设进进第一天的 状态分布矩阵 S1 = [0.3, 0.4, 0.3],里面的数字分别代表第一天这天进进在玩的概率,学的概率,和睡的概率。

那么

第二天进进玩学睡的状态分布矩阵 S2 = S1 * P (俩矩阵相乘)。

第三天进进玩学睡的状态分布矩阵 S3 = S2 * P (只和S2有关)。

第四天进进玩学睡的状态分布矩阵 S4 = S3 * P (只和S3有关)。

第n天进进玩学睡的状态分布矩阵 Sn = Sn-1 * P (只和Sn-1有关)。

马尔可夫链的收敛性

在刚才的例子中,初始状态分布矩阵S1 = [0.3, 0.4, 0.3],即第一天进进在玩的概率是30%,在学的概率是40%,在睡觉的概率是30%,我们以此来计算100天后,也就是第一百天进进在玩or学or睡觉的概率分布。

代码如下:

import numpy as np

matrix = np.matrix([[0.05, 0.75, 0.2],
                    [0.8, 0.05, 0.15],
                    [0.25, 0.5, 0.25]])
vector1 = np.matrix([[0.3, 0.4, 0.3]])

for i in range(100):
    vector1 = vector1 * matrix
    print('第{}轮'.format(i+1))
    print(vector1)

运行结果:

...

第96轮
[[0.39781591 0.41341654 0.18876755]]
第97轮
[[0.39781591 0.41341654 0.18876755]]
第98轮
[[0.39781591 0.41341654 0.18876755]]
第99轮
[[0.39781591 0.41341654 0.18876755]]
第100轮
[[0.39781591 0.41341654 0.18876755]]

由此我们得到一个非常重要的性质: 马尔可夫链模型的状态转移矩阵收敛到的稳定概率分布与初始状态概率分布无关。也就是说,在上面的那个例子中的初试状态矩阵,可以用任意的概率分布样本开始,只要马尔可夫链模型的状态转移矩阵确知,在一定规模的转换之后,我们就可以得到符合对应稳定概率分布的样本。

马尔科夫链要能 收敛,需要满足以下 条件

  1. 可能的状态数有限。
  2. 状态间的转移概率固定不变。
  3. 能从任意状态转变到任意状态。
  4. 不能是简单的循环,例如从x到y再从y到x。

马尔可夫链的例子和应用

随机漫步

马尔可夫链的一个典型例子。随机漫步中每一步的状态是在图形中的点,每一步可以移动到任何一个相邻的点,在这里移动到每一个点的概率都是相同的(无论之前漫步路径是如何的)以下是随机漫步程序的python语言实现:

from random import choice
import matplotlib.pyplot as plt

class RandomWork():
    def __init__(self, num_points=5000):
        self.num_points = num_points

        self.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_distance

            y_direction = choice([1, -1])
            y_distance = choice([1, 2, 3, 4])
            y_step = y_direction * y_distance

            next_x = self.x_values[-1] + x_step
            next_y = self.y_values[-1] + y_step

            self.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()

结果如下:

初步认识马尔可夫链与马尔可夫链的简单应用

看似简单的马尔科夫链,在现实生活中已经无孔不入了!

语音识别

让机器”听懂”人类的语言,两个马尔科夫模型就解决了:

声学模型:利用HMM建模(隐马尔可夫模型),HMM是指这一马尔可夫模型的内部状态外界不可见,外界只能看到各个时刻的输出值。对语音识别系统,输出值通常就是从各个帧计算而得的声学特征。
语言模型:N-Gram最简单有效,所以应用的也最广泛。它基于独立输入假设:第n个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。

简单来说,人们利用马尔科夫模型,来计算事件的状态转移概率矩阵,除了语音识别,只要随机过程具有马尔科夫性,都少不了应用马尔科夫链。

拿最常见的天气预报来说,就可以利用马尔科夫链建立 天气预测模型。运用马尔可夫链,只需要最近或现在的动态资料则可按转移概率可预测将来,这样就可以很方便地达到预测天气变化的目的。

初步认识马尔可夫链与马尔可夫链的简单应用

博彩领域,马尔科夫链的 应用同样普遍。比如 足球博彩,可以应用加权马尔科夫链对结果进行预测,使投资者取得正收益的概率大于50%。

初步认识马尔可夫链与马尔可夫链的简单应用

在金融领域,利用马尔科夫链可以进行股指建模、时间序列分析、组合预测模型。甚至著名的BS公式(期权定价),也用到了马尔科夫链(维纳过程)。

在这个科技发达,信息泛滥的年代, 个体的主观判断已经不足以击败科技,在看似无规则的变化中,马尔科夫链为我们揭开了随机过程的神秘面纱,从简单的拼音输入法,到复杂的预测建模,处处都离不开它的应用。

参考文章:

预测未来的神技——有趣的马尔科夫链 写给小白看的马尔科夫链(Markov Chain)最佳入门教程

一文搞懂马尔可夫链 (Markov Chain)数学模型——初步理解马尔可夫链(Markov chain)

Original: https://blog.csdn.net/dreamlee97/article/details/122026235
Author: dreamlee97
Title: 初步认识马尔可夫链与马尔可夫链的简单应用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/528176/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球