最近,小编在公司接手了一个项目,涉及随机过程和马可夫链。这几天,文献、博客看了很多相关内容。这篇文章我们主要阐述一下随机过程和马可夫链。

面试问题

小编之前面试银行,被问过一道面试题,题干如下:

一个醉汉的家离悬崖有10米远。一天,醉汉站在了离家6米远的地方,身后4米既是悬崖。每次醉汉都会随机的往家的方向或者往悬崖的方向走一米,往前往后概率均为50%。最后,醉汉坠崖的概率是多少呢?

大家先思考一下这个问题,我们先讲讲随机过程和马可夫链。

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(1)

醉汉

随机过程

在概率论概念中,随机过程是随机变量的集合。 ------ 维基百科

维基百科固然很好,但是有很多概念说的太不具体,有时候让人很难理解。

举个例子:

掷骰子、投硬币都是随机事件。比如掷骰子,1到6点。每次掷骰子,每个面是随机出现的(假设筛子没有被做过手脚)。那么,当我们每次追筛子的时候,就会产生一个随机变量X。我们不停的掷骰子,就会产生一系列的随机变量,X1, X2 ... Xn。而这些随机变量序列的集合,便组成了一个随机过程。

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(2)

随机过程

马可夫链

前面介绍的随机过程,每一次掷骰子都是独立存在的。也就是说,我现在掷骰子的行为和点数和之前之后掷筛子都没关系。每次抛掷的结果相互独立。

但是现实中,真正的随机变量之间,往往存在着互相依赖的关系。

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(3)

马可夫链 - 熊市、牛市和平稳市场

我们已股票市场举例,牛市、熊市和之间的平稳市场都不会突然来临和随机变换。比如这周是牛市,突然下周就变成熊市,再下周又牛市了。这种频繁突变基本不可能出现。今天是牛市,大多数情况下,明天还是处在牛市之中。

什么是马可夫链呢?

马尔科夫链是一个随机过程,同时马尔科夫链的记忆类似于“金鱼的记忆只有3秒”,非常的健忘。

1 - 2 - 3 - 4 - 5 - 6

比如说,你现在站在5对6 进行预测,根据马尔科夫链,6的状态只和5有关,而前面1到2, 2到3, 3到4,4到5的整个过程无关。

马尔科夫链认为 过去所有的信息都被保存在了现在的状态下了

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(4)

马可夫链 - 熊市、牛市和平稳市场

从上面股市图中,假如今天是牛市(Bull Market),那么明天依旧是牛市的概率是0.9,是熊市(Bear Market)的概率是0.075,是平稳市场的概率是0.025。这样就形成了三种市场相互依赖、相互转变的随机过程 - 马可夫过程

马可夫链应用

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(5)

股市随机过程

理解马可夫链,首先要明确整个过程有几种状态,如股市随机过程中存在三种状态:‘Bull Market’, ‘Bear Market’和‘Stagnant Market’。而各个状态之间的相互转变概率如上图所示。注意,每一行的概率之和都为1。

各个状态之间的转变关系表一般叫做过渡矩阵(Transition Matrix)。

其次要明确的是现在的状态。因为马可夫随机过程所有的信息都存在于当前状态中。

假设,我们现在身处熊市。那么,怎么用向量表示呢?

当前状态 = [0, 1, 0]. 从左到右依次为牛市、熊市和平稳市场。1表示处在该状态。

那么,明天的状态就可以通过矩阵相乘:当前状态 * 过度矩阵。

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(6)

明天有1.5%的可能性为牛市,80%概率是熊市,5%的概率是平稳市场。

如果我们需要预测100天之后市场的情况,只需要将当前状态 乘以 100次过渡矩阵

具体代码如下:定义一个递归函数f_func

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(7)

那么,100天后市场有62.5%是牛市,31.25%是熊市,6.25%是平稳市场。

醉汉坠崖问题计算

第一步:整个过程有11个状态,0(坠崖),1,2,3,..., 10(家里);

第二步:当前状态,醉汉站在4的位置上,[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]

第三部:过渡矩阵:

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(8)

过渡矩阵

怎么去理解这个过渡矩阵呢?比如:

第一行,0行。当前状态即为0,由于已经坠崖,醉汉不可能爬上来,那么醉汉会永远处于0的状态,也就是概率为1。0到其他状态的概率为0。

第二行,1行。当前状态为1,醉汉往前和往后的概率都是50%。也就是说下一个状态是0或者2的概率为0.5,其他状态为0.

依次类推。。。

如果想知道最终醉汉到家或者坠崖的概率分别为多少的话?同样可以使用上面的递归函数f_func将当前状态同过渡矩阵乘1000次或者更多。

马尔可夫链与蒙特卡洛算法(你不可不知的随机过程和马可夫链)(9)

醉汉坠崖

1000次后,醉汉坠崖概率是60%,而到家的概率是40%。

总结

马可夫随机过程和马可夫链在金融、生物等都有着很广泛的应用。有兴趣的朋友可以自行阅读专业文章。

大家有没有发现,醉汉离家6米,离悬崖4米,悬崖离家10米。而坠崖的概率是60% = 6 /10,而回家的概率是40% = 4/10。

原来结果可以直接以距离的商计算出来。这个是可以通过公式推导出来的,有兴趣的朋友可以自行理解推导。推导的关键在于当前状态和下一状态直接的关系推导。

喜欢我的文章请点个赞或者转发。

,