关于马尔可夫链的困惑

马尔可夫链方法和条件概率这两者之间有关系吗?如果有,请解释它们之间的关系。


回答:

马尔可夫链和条件概率试图回答不同的问题。然而,它们在某种意义上是相关的。

在马尔可夫链中,我们研究一个具有状态和状态转换的系统。事件触发状态转换,而事件的概率可能取决于系统所处的状态——这就是条件概率发挥作用的地方。

让我们先通过以下示例来了解条件概率:

条件概率可以定义为:P(A|B) := P( A AND B ) / P(B)

用语言描述:假设事件B已经发生,那么事件A发生的概率有多大?

示例:盒子里的球:

假设盒子里有(R)红色、(B)蓝色、(L)轻和(H)重的球。一个球可以是重的或轻的,也可以是红色的或蓝色的。

    Balls  | Light | Heavy | Total   ------------------------------------   Red     | 10   |  20    |  30   Blue    | 30   |  40    |  70   Total   | 40   |  60    |  100

从中抽取P(X)的概率,其中X表示(R)红色、(B)蓝色、(H)重或(L)轻,红色和轻(RL)、红色和重(RH)等,如下所示:

    Event |  N | Total | P        ----------------------------      R   | 30 |  100  | 0.3         B   | 70 |  100  | 0.7        L   | 40 |  100  | 0.4      H   | 60 |  100  | 0.6      RL  | 10 |  100  | 0.1      RH  | 20 |  100  | 0.2      BL  | 30 |  100  | 0.3      BH  | 40 |  100  | 0.4

当我们遇到类似的问题时,我们会谈到条件概率:

如果我们已经抽取了一个重球,那么抽到蓝色球的概率是多少?

P(B|H) = P(B AND H) / P(H) = #BH / #H = 40 / 60 = 2/3

马尔可夫链有点不同:

对于马尔可夫链的示例,我们需要一个稍微不同的实验。

想象一下有两个盒子设置;一个装有(L)轻球,另一个装有(H)重球。

实验:

  • 抽取N个球,然后将它们放回盒子中。

  • 从装有轻球的盒子(L)开始。

  • 如果抽到(B)蓝色球,则从重球盒子中抽取一个球。

  • 如果抽到(R)红色球,则从轻球盒子中抽取一个球。

问题:第n个球是重球的可能性有多大?

在处理马尔可夫链时,我们首先试图构建一个状态机:状态(L)表示您正在从装有轻球的盒子中抽取球。抽取球的结果可能会导致转换到相同状态或不同状态。转换将标注为{R,B}及其概率用括号表示。

            +-----+    R(2/4)           +-----+            |     |<------------------- |     |  .-------->|     |                     |     | <------.  \R(1/4)   |  L  |    B(3/4)           |  H  |       /  B(4/6)   \--------|     | ------------------->|     | -----/            +-----+                     +-----+

现在我们可以将状态表示为向量,并将所有转换及其概率表示为矩阵。经过一步(N=1)后,我们将处于以下状态:

          ^N|1/4  2/6|    |1|    |1/4|    | L ||        | x  | |  = |   |  = |   ||3/4  4/6|    |0|    |3/4|    | H |

因此,处于状态L的可能性是1/4,状态H是3/4。如果N = 1000,我们只需将转换矩阵重新应用1000次,这与将矩阵升至其1000次幂并应用于状态向量相同。经过1000步后,处于状态L的概率将约为0.31,而H将约为0.69。

注意事项:

  • 按照设计,矩阵的条目是第一个问题的条件概率。

  • 矩阵的n次幂会收敛,因此在无限步后处于某个状态的概率也会收敛。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注