GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 1660|回复: 22
收起左侧

[技术交流] 【Python】【原创】马尔可夫链与马尔可夫性质

[复制链接] |关注本帖

邪恶的面具海盗弯钩神秘的红茶冒险用绷带魔法石碑箭术卷轴质量效应三部曲

     楼主| 白冥 发表于 2025-1-30 03:02:06 | 显示全部楼层 |阅读模式 <
    本帖最后由 白冥 于 2025-2-10 05:55 编辑

    目录      
    • 概述
    • 主要功能
    • 类结构与方法
    • 源代码
    • 主要方法
    • 示例代码

    概述      

            马尔科夫链(Markov Chain)是一种数学模型,描述了一个系统在离散时间内从一个状态转移到另一个状态的过程。在马尔科夫链中,每个状态的转移概率仅与当前状态有关,而与过去的历史无关。
            本帖所提供的代码均由本人编写。

    主要功能      
            1)路径生成(随机游走):基于当前状态和转移概率进行多次随机游走,生成可能的状态转移路径。可以用于模拟随机过程,如网页浏览的跳转行为、社交网络的传播过程等。
            2)状态预测:根据初始状态和时间步数,预测马尔科夫链在未来某个时间点可能处于的状态分布。可以用于金融市场预测、天气预测等问题,通过预测未来状态的概率分布来制定决策。


    类结构和方法      修改次数1
             Markov_chain
                ├ __init__ 方法
                ├ _add_states 方法
                ├ _build_P 方法
                ├ random_walk 方法
                └ predict 方法
            Matrix_Operations
                ├ _mul 方法
                └ _pow 方法

    源代码      修改次数5
        Markov_chain 类:Markov_chain 类

        Matrix_Operations类:Matrix_Operations 类

    主要方法      修改次数2
    1)__init__(self, edges: List[Tuple[str, str, float]])
            此方法用于初始化一个马尔科夫链对象。它接收一个包含转移概率的边列表  edges ,并根据该列表构建状态集合和转移矩阵。
            ○ edges :一个列表,包含若干元组  (state_0, state_1, cpd) ,其中  state_0  和  state_1  是状态, cpd  是从  state_0  转移到  state_1  的条件概率。


    2) _build_P(self, edges, states)
            此方法用于根据边列表和状态集合构建转移矩阵  P 。在此过程中,方法还会检查每个状态的出度和条件概率的有效性。

            ○ P : 转移矩阵描述了在一个N项有限状态空间 S 上的马尔可夫链 {Xₜ},它的每一项都是一个表示概率的非负实数,其中每一行求和为1。即如果在一个时间步长t→t+1内,Xₜ=sᵢ,sᵢ,sⱼ∈S,从sᵢ转移到sⱼ的条件概率pᵢⱼ = p(Xₜ₊₁=sⱼ | Xₜ=sᵢ),则P₍ₜ₎₍ₜ₊₁₎(以下简写为P)的第i行第j列由p(Xₜ₊₁=sⱼ | Xₜ=sᵢ)给出。
            ○ 无记忆性(马尔可夫性质):
                    如果学过我上一贴关于贝叶斯网络的坛友都知道,若一个随机变量X的父级变量Pa(X)存在,那么它与它的非后代变量Non-desc(X)条件独立,即X⊥Non-desc(X) | Pa(X)。马尔可夫链{Xₜ}可以看作一种特殊的贝叶斯网络,任意一个随机变量Xₜ₊₁∈{Xₜ},它的父级Pa(Xₜ₊₁)=Xₜ,它的非后代Non-desc(Xₜ₊₁)=Xₜ₋₁, Xₜ₋₂…, X₀。
    (马尔可夫链可以看作一种单链贝叶斯网络)
                    即在一个时间步长t→t+1内,在链中给定随机变量Xₜ,则Xₜ₊₁与Xₜ之前的所有变量F(Xₜ)都是条件独立的,记作Xₜ₊₁⊥F(Xₜ) | Xₜ,其中F(Xₜ)=Non-desc(Xₜ₊₁):
    P(Xₜ₊₁ | Xₜ, F(Xₜ)) = P(Xₜ₊₁ | Xₜ)。
                    由于马尔可夫链过于出名,这种无记忆性也被称为马尔可夫性质。


    3) random_walk(self, state: str, time: int)
            ○ 随机游走:随机游走是由一连串轨迹(trajectory)组成,它的每一个微小轨迹都是随机的。因此,绝大多数可见的随机游走,都可以看成马尔可夫链模型或具有马尔可夫性质的类似模型,比如动物的觅食路径、天气的连续变化、股票的涨跌趋势、赌徒的钱包状况,乃至无处不在的布朗运动也是马尔可夫性质的(扩散作用的布朗运动除外)。


    4) predict(self, state: str, time: int)
            ○ 状态分布:
                    由于随机游走是马尔可夫性质的,因此事实上我们无从同时知道当前状态与将来状态,即当前状态与将来状态是条件独立的。
                    然而我们确实需要做到对将来状态的预测,就如古人所说的“未雨绸缪”一样,我们需要知道未来大概率要发生什么。
                    任何状态开始,随机游走一步,都相当于一个状态的One-hot向量右乘一个转移矩阵,结果是它的状态分布,即vₛₜₐₜₑP=b₁。因此,对它的每一次随机游走,都等价地右乘一个P,则对于任意k(k∈N*),都有bₖ=vₛₜₐₜₑPᵏ,代表k步随机游走后它的状态分布,||bₖ||=0,bₖ=(x₁,x₂,x₃,…xɴ),0≤xᵢ≤1(i=1,2,3,…,N)。


    示例代码      



    1. edges = [
    2.         ("A", "A", 0.9),
    3.         ("A", "B", 0.1),
    4.         ("B", "A", 0.5),
    5.         ("B", "C", 0.5),
    6.         ("C", "D", 0.8),
    7.         ("C", "G", 0.2),
    8.         ("D", "E", 0.4),
    9.         ("D", "F", 0.6),
    10.         ("E", "B", 0.2),
    11.         ("E", "C", 0.4),
    12.         ("E", "D", 0.4),
    13.         ("F", "G", 1.0)
    14. ]

    15. # 创建马尔科夫链对象
    16. markov_chain = Markov_chain(edges)

    17. # 执行随机游走
    18. path = markov_chain.random_walk("A", 10)
    19. print("Random walk path:", path)

    20. # 进行状态预测
    21. prediction = markov_chain.predict("A", 5)
    22. print("Prediction after 5 steps:", prediction)
    复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    评分

    参与人数 1堕落 +1 收起 理由
    三分春色描来易 + 1 很给力!

    查看全部评分

      收起(4)

    本帖被以下淘专辑推荐:

    • · 技术|主题: 5, 订阅: 0
    回复

    使用道具 举报

    月亮提灯骑兽之子炼金之心达拉然最终幻想XVI荒野大镖客:救赎 II黑神话:悟空莱因哈特·威尔海姆

      zhnlwwdzz 发表于 2025-3-2 13:54:31 | 显示全部楼层 <
      回复

      举报

      万众瞩目神奇宝贝大师球神奇宝贝图鉴『搓粉团珠』雪王的心脏肉垫手套『落樱缤纷』里昂‧S‧甘乃迪小小安全帽丹雀衔五穗,人间始丰登

        zhuovboyan 发表于 2025-2-9 21:27:58 | 显示全部楼层 <
        回复

        举报

        裸体克里斯位于左侧的随从已派遣远征永远的克叔【夏日限定】夏日的泰凯斯猫咪点唱机【新春限定】果体 隆新神的赐福業火死鬥传奇亚瑟‧摩根

          大河内太 发表于 2025-2-6 04:26:18 | 显示全部楼层 <
          回复

          举报

          【圣诞限定】心心念念小雪人吃饱金币的Doge被释放的灵魂【新春限定】果体 隆業火死鬥男巫之歌虚空之海的鲸卡利亚权杖诺曼底号

            折木 发表于 2025-2-1 17:52:47 | 显示全部楼层 <
            现在各种专业都有计算机相关的必修或者选修课程惹
            回复

            举报

            凯登‧阿兰科位于左侧的随从已派遣远征炙热的格拉迪欧拉斯【夏日限定】夏日的泰凯斯新神的赐福死灵之书灵魂之椅

              cdcai 发表于 2025-2-1 14:47:20 | 显示全部楼层 <
              这次真的是连标题都没看懂了
              回复

              举报

              卢西亚诺‧科斯塔位于左侧的随从已派遣远征『搓粉团珠』【新春限定】果体 隆『落樱缤纷』里昂‧S‧甘乃迪闪耀的魔仙棒岛田源氏杰西·麦克雷

                boshen 发表于 2025-1-31 23:42:46 | 显示全部楼层 <
                回复

                举报

                裸体克里斯圣甲虫秘典【新春限定】果体 隆新神的赐福永远的克叔亚瑟‧摩根業火死鬥Forever Titanic虚空之海的鲸史莱姆牧场

                  星之子 发表于 2025-1-31 01:56:27 | 显示全部楼层 <
                  回复

                  举报

                  钢铁勇士弯刀红龙幼崽山猫图腾寻觅牧羊人黑龙幼崽腐化龙蛋荒野大镖客:救赎 II

                    EngreenGreen 发表于 2025-1-30 16:49:24 | 显示全部楼层 <
                    哇塞,看不懂,但十分震撼,佩服,大佬!
                    回复

                    举报

                    恶魔城海盗弯钩永亘环森林羊男莱托·厄崔迪瑞雪兆丰年,生灵万物新模擬人生4

                      慕容家李观二 发表于 2025-1-30 14:07:30 | 显示全部楼层 <
                      回复

                      举报

                      炼金之心黑暗交易『住在GM村』召唤古代战士『道具超市』雷霆晶球神秘商店贵宾卡黑神话:悟空perrito『不败之花』

                        黑夜下的灯光 发表于 2025-1-30 13:36:24 | 显示全部楼层 <
                        回复

                        举报

                        『居住证: Lv2~6』自定义男从Homunculus迷拟QDrover『不败之花』汤姆·赫兰德赫敏·格兰杰

                          不知述 发表于 2025-1-30 13:16:28 | 显示全部楼层 <
                          大学选修过python课但是完全不懂,痛苦的复习记忆涌了上来,还好最后被捞低分飘过
                            收起(5)
                          回复

                          举报

                          丛林露出来的鸟最终幻想XIV驯化红龙幼崽香喷喷的烤鸡社畜专用闹钟人鱼之泪阿帕茶GM論壇進階勛章

                            呆萌De小受受 发表于 2025-1-30 12:12:50 | 显示全部楼层 <
                            回复

                            举报

                            GM論壇進階勛章永亘环

                              布卜 发表于 2025-1-30 12:06:41 | 显示全部楼层 <
                              回复

                              举报

                              最终幻想XIV瑞雪兆丰年,生灵万物新腐化龙蛋森林羊男GM論壇進階勛章守望者指挥官徽章牧羊人

                                Miyo·Grevin 发表于 2025-1-30 11:45:43 | 显示全部楼层 <
                                我的妈,看到代码之后感觉基因被唤醒了(头大)
                                楼主好厉害,感觉IT行业内卷的风浪已被证实.jpg
                                回复

                                举报

                                艾吉奥位于左侧的随从已派遣远征

                                  万俟 发表于 2025-1-30 10:38:48 | 显示全部楼层 <
                                  还记得乌克兰战争刚开始的时候,隔壁一个老师为了抵制俄罗斯拒绝讲马可夫链,我怀疑他只是懒
                                  回复

                                  举报

                                  裸体克里斯位于左侧的随从已派遣远征超人丹·雷诺斯【夏日限定】夏日的泰凯斯托尼·史塔克『落樱缤纷』自定义男从Homunculus街头霸王

                                    huakaiwusheng 发表于 2025-1-30 09:47:23 | 显示全部楼层 <
                                    回复

                                    举报

                                    John Reese裸体克里斯位于左侧的随从已派遣远征虚空之海的鲸黄粱一梦【新春限定】果体 隆新神的赐福都市:天际线2永远的克叔業火死鬥

                                      娱乐法师火布偶 发表于 2025-1-30 09:07:41 | 显示全部楼层 <
                                      回复

                                      举报

                                      岛田半藏位于左侧的随从已派遣远征『不败之花』『眼榴』冬之歌『搓粉团珠』『落樱缤纷』『道具超市』黄粱一梦

                                        三分春色描来易 发表于 2025-1-30 09:04:09 | 显示全部楼层 <
                                        回复

                                        举报

                                        百相千面-戏艾吉奥岛田半藏诺克提斯·路西斯·伽拉姆岛田源氏BIG BOSS康纳/ConnorDoc普隆普特·阿金塔姆希德‧海温特

                                          2302594 发表于 2025-1-30 07:04:23 | 显示全部楼层 <
                                          回复

                                          举报

                                          蜘蛛侠位于左侧的随从已派遣远征40x43 隐形➀格拉迪欧拉斯40x43 隐形➁16x43 隐形➀【新春限定】果体 隆街头霸王

                                            莲一 发表于 2025-1-30 04:03:51 | 显示全部楼层 <
                                            我直接抄楼主的帖子拿去发论文
                                            回复

                                            举报

                                            您需要登录后才可以回帖 登录 | 立即注册

                                            本版积分规则

                                            文字版|手机版|小黑屋|GameMale

                                            GMT+8, 2025-5-8 20:26 , Processed in 0.211244 second(s), 155 queries , Redis On.

                                            Copyright © 2013-2025 GameMale

                                            All Rights Reserved.

                                            快速回复 返回列表