最近,小编在公司接手了一个项目,涉及随机过程和马可夫链。这几天,文献、博客看了很多相关内容。这篇文章我们主要阐述一下随机过程和马可夫链。
面试问题小编之前面试银行,被问过一道面试题,题干如下:
一个醉汉的家离悬崖有10米远。一天,醉汉站在了离家6米远的地方,身后4米既是悬崖。每次醉汉都会随机的往家的方向或者往悬崖的方向走一米,往前往后概率均为50%。最后,醉汉坠崖的概率是多少呢?
大家先思考一下这个问题,我们先讲讲随机过程和马可夫链。
醉汉
随机过程在概率论概念中,随机过程是随机变量的集合。 ------ 维基百科
维基百科固然很好,但是有很多概念说的太不具体,有时候让人很难理解。
举个例子:
掷骰子、投硬币都是随机事件。比如掷骰子,1到6点。每次掷骰子,每个面是随机出现的(假设筛子没有被做过手脚)。那么,当我们每次追筛子的时候,就会产生一个随机变量X。我们不停的掷骰子,就会产生一系列的随机变量,X1, X2 ... Xn。而这些随机变量序列的集合,便组成了一个随机过程。
随机过程
马可夫链前面介绍的随机过程,每一次掷骰子都是独立存在的。也就是说,我现在掷骰子的行为和点数和之前之后掷筛子都没关系。每次抛掷的结果相互独立。
但是现实中,真正的随机变量之间,往往存在着互相依赖的关系。
马可夫链 - 熊市、牛市和平稳市场
我们已股票市场举例,牛市、熊市和之间的平稳市场都不会突然来临和随机变换。比如这周是牛市,突然下周就变成熊市,再下周又牛市了。这种频繁突变基本不可能出现。今天是牛市,大多数情况下,明天还是处在牛市之中。
什么是马可夫链呢?
马尔科夫链是一个随机过程,同时马尔科夫链的记忆类似于“金鱼的记忆只有3秒”,非常的健忘。
1 - 2 - 3 - 4 - 5 - 6
比如说,你现在站在5对6 进行预测,根据马尔科夫链,6的状态只和5有关,而前面1到2, 2到3, 3到4,4到5的整个过程无关。
马尔科夫链认为 过去所有的信息都被保存在了现在的状态下了。
马可夫链 - 熊市、牛市和平稳市场
从上面股市图中,假如今天是牛市(Bull Market),那么明天依旧是牛市的概率是0.9,是熊市(Bear Market)的概率是0.075,是平稳市场的概率是0.025。这样就形成了三种市场相互依赖、相互转变的随机过程 - 马可夫过程。
马可夫链应用
股市随机过程
理解马可夫链,首先要明确整个过程有几种状态,如股市随机过程中存在三种状态:‘Bull Market’, ‘Bear Market’和‘Stagnant Market’。而各个状态之间的相互转变概率如上图所示。注意,每一行的概率之和都为1。
各个状态之间的转变关系表一般叫做过渡矩阵(Transition Matrix)。
其次要明确的是现在的状态。因为马可夫随机过程所有的信息都存在于当前状态中。
假设,我们现在身处熊市。那么,怎么用向量表示呢?
当前状态 = [0, 1, 0]. 从左到右依次为牛市、熊市和平稳市场。1表示处在该状态。
那么,明天的状态就可以通过矩阵相乘:当前状态 * 过度矩阵。
明天有1.5%的可能性为牛市,80%概率是熊市,5%的概率是平稳市场。
如果我们需要预测100天之后市场的情况,只需要将当前状态 乘以 100次过渡矩阵。
具体代码如下:定义一个递归函数f_func
那么,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]
第三部:过渡矩阵:
过渡矩阵
怎么去理解这个过渡矩阵呢?比如:
第一行,0行。当前状态即为0,由于已经坠崖,醉汉不可能爬上来,那么醉汉会永远处于0的状态,也就是概率为1。0到其他状态的概率为0。
第二行,1行。当前状态为1,醉汉往前和往后的概率都是50%。也就是说下一个状态是0或者2的概率为0.5,其他状态为0.
依次类推。。。
如果想知道最终醉汉到家或者坠崖的概率分别为多少的话?同样可以使用上面的递归函数f_func将当前状态同过渡矩阵乘1000次或者更多。
醉汉坠崖
1000次后,醉汉坠崖概率是60%,而到家的概率是40%。
总结马可夫随机过程和马可夫链在金融、生物等都有着很广泛的应用。有兴趣的朋友可以自行阅读专业文章。
大家有没有发现,醉汉离家6米,离悬崖4米,悬崖离家10米。而坠崖的概率是60% = 6 /10,而回家的概率是40% = 4/10。
原来结果可以直接以距离的商计算出来。这个是可以通过公式推导出来的,有兴趣的朋友可以自行理解推导。推导的关键在于当前状态和下一状态直接的关系推导。
喜欢我的文章请点个赞或者转发。
,