当前位置 博文首页 > F~C~H的博客:小白都能看懂的马尔可夫链详解

    F~C~H的博客:小白都能看懂的马尔可夫链详解

    作者:[db:作者] 时间:2021-09-17 15:14

    在机器学习算法中,马尔可夫链(Markov chain)是个很重要的概念。马尔可夫链(Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain),因俄国数学家安德烈·马尔可夫(俄语:Андрей Андреевич Марков)得名,为状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性”称作马尔可夫性质。马尔科夫链作为实际过程的统计模型具有许多应用。
    在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。随机漫步就是马尔可夫链的例子。随机漫步中每一步的状态是在图形中的点,每一步可以移动到任何一个相邻的点,在这里移动到每一个点的概率都是相同的(无论之前漫步路径是如何的)。
    (来自参考文献1)

    2.一个经典的马尔科夫链实例

    用一句话来概括马尔科夫链的话,那就是某一时刻状态转移的概率只依赖于它的前一个状态。举个简单的例子,假如每天的天气是一个状态的话,那个今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系。这么说可能有些不严谨,但是这样做可以大大简化模型的复杂度,因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络RNN,隐式马尔科夫模型HMM等。
    假设状态序列为 ? x t ? 2 , x t ? 1 , x t , x t + 1 , x t + 2 , ? ? x t ? 2 , x t ? 1 , x t , x t + 1 , x t + 2 , ? ? x t ? 2 , x t ? 1 , x t , x t + 1 , x t + 2 , ? ?xt?2,xt?1,xt,xt+1,xt+2,??xt?2,xt?1,xt,xt+1,xt+2,? \cdots x_{t-2}, x_{t-1}, x_t, x_{t+1}, x_{t+2}, \cdots ?xt?2,xt?1,xt,xt+1,xt+2,??xt?2,xt?1,xt,xt+1,xt+2,??xt?2?,xt?1?,xt?,xt+1?,xt+2?,?t0?=[0.1,0.2,0.7],然后算之后的状态。

    def markov():
        init_array = np.array([0.1, 0.2, 0.7])
        transfer_matrix = np.array([[0.9, 0.075, 0.025],
                                   [0.15, 0.8, 0.05],
                                   [0.25, 0.25, 0.5]])
        restmp = init_array
        for i in range(25):
            res = np.dot(restmp, transfer_matrix)
            print i, "\t", res
            restmp = res
    

    markov()

    cs