###### tags: `opendev` # マルコフ性(Markov property) ## マルコフ過程(Markov process) 未来の挙動が現在の値だけで決定され、過去の挙動と無関係であるという性質を**マルコフ性**と言う。 また、マルコフ性を持つ**確率過程**(時間とともに変化する確率変数)を**マルコフ過程**という。 --- 状態遷移図で表される↓ ![](https://i.imgur.com/VIaN5zP.png) よくある問題が、 ``` ある日の天気が雨のとき、2日後の天気が晴れになる確率は幾らか。 ``` 今日→明日→2日後 雨→ ? →晴れ 雨の日の2日後が晴れであるとき、$3$ 通りある。 雨→晴れ→晴れ $0.3×0.4=0.12$ 雨→曇り→晴れ $0.5×0.3=0.15$ 雨→雨 →晴れ $0.2×0.3=0.06$ $0.12+0.15+0.06=0.33$ ある日の天気が雨のとき、2日後の天気が晴れになる確率は ==$0.33$== :::info :book: Note: このように、ただ1つの状態から次に起こる事象が決定されるマルコフ過程を**単純マルコフ過程**という。 ::: ## マルコフ連鎖(Markov Chain) マルコフ過程のうち、とりうる状態が離散的(有限または可算)なものを言う(**有限状態マルコフ過程**, **離散状態マルコフ過程**) --- 文章生成の場合、 「`吾輩は猫である。`」 という文章を 単語ベース(分かち書き) 「吾輩」→「は」→「猫」→「で」→「ある」→「。」 「吾輩」→「は」 のように文章は単語が遷移することで構成されている。 出現する単語がどのように出現するか(遷移確率)を蓄積させていくで、様々な文章を生成することができる。 **N階マルコフ連鎖**では、N個にまとめた単語の遷移確率を求める。 $N=2$ の場合、 「吾輩は」→「猫で」→「ある。」 単語を2つにまとめ、それぞれの遷移確率を求める。 $N=1$ の場合、**単純マルコフ連鎖**という。 [N階マルコフ連鎖のリンク(colab)](https://colab.research.google.com/drive/1JrWNBFD10UpwOYR4sITUN1YE14aeozp1?usp=sharing) :::info :book: Note: **分かち書き**(文章を語の区切りで空白を挟み分割すること)↓ ``` import sys import MeCab mecab = MeCab.Tagger ("-Ochasen") text = mecab.parse ("吾輩は猫である") print(text) ``` ``` 吾輩は猫である 吾輩 名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 猫 名詞,一般,*,*,*,*,猫,ネコ,ネコ で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル EOS ``` :::