ガジェット通信 GetNews

見たことのないものを見に行こう

日常に潜む数理計画☆マルコフモデルを理解すれば1年後の天気が分かる?

DATE:
  • ガジェット通信 GetNewsを≫

聞いたことない? でもとっても身近なマルコフモデル

実は、マルコフモデルはGoogle のPageRankにも応用されており、ここ最近至るところで話題になっている人工知能・機械学習という分野でも多くの応用がなされている数理モデルなのです。

マルコフモデルとは何かということを簡単に説明しろと言われたら、
「今の状態が発生する確率というのは直前の状態にのみ影響を受けると仮定して、現実世界をモデル化する手法」
こんな答えになるでしょうか。

天気予報が当たるのはマルコフ連鎖のおかげ?

「今の状態が発生する確率というのは直前の状態にのみ影響を受ける?」と疑問に思う方も多いと思うので、天気予報をテーマにしながら掘り下げていきましょう。

仮に過去100年間の天気を観察することで、

晴れの次の日がまた晴れる確率が50%
晴れの次の日がくもる確率が30%
晴れの次の日が雨の確率が20%

となることが分かっているとしましょう。

また同じように

くもりの次の日が晴れる確率が30%
くもりの次の日がまたくもる確率が30%
くもりの次の日が雨の確率が40%
雨の次の日が晴れる確率が20%
雨の次の日がくもる確率が60%
雨の次の日がまた雨の確率が20%

となることが分かっているとします。

ここで、1月1日の天気が晴れだとします。
そうすると上記のことから

1月2日が晴れる確率が50%
1月2日がくもりの確率30%
1月2日が雨の確率20%

と分かります。

50%の確率で1月2日が晴れたとすると

1月3日が晴れる確率は、50%(1月2日が晴れる確率)×50%(晴れの翌日が晴れる確率)=25%
1月3日がくもりの確率は、50%(1月2日が晴れる確率)×30%(晴れの翌日がくもる確率)=15%
1月3日が雨の確率20%は、50%(1月2日が晴れる確率)×20%(晴れの翌日が雨の確率)=10%

となります。

同様に30%の確率で1月2日がくもりだとすると

1月3日が晴れる確率は、30%(1月2日がくもる確率)×30%(くもりの翌日が晴れる確率)=9%
1月3日がくもりの確率は、30%(1月2日がくもる確率)×30%(くもりの翌日がくもる確率)=9%
1月3日が雨の確率20%は、30%(1月2日がくもる確率)×40%(くもりの翌日が雨の確率)=12%

20%の確率で1月2日が雨だとすると

1月3日が晴れる確率は、20%(1月2日が雨の確率)×20%(雨の翌日が晴れる確率)=4%
1月3日がくもりの確率は、20%(1月2日が雨の確率)×60%(雨の翌日がくもる確率)=12%
1月3日が雨の確率20%は、20%(1月2日が雨の確率)×20%(雨の翌日が雨の確率)=4%

これらを全て合計すると

1月3日が晴れる確率は25+9+4=38%
1月3日がくもりの確率は15+9+12=36%
1月3日が雨の確率は10+12+4=26%

という確率が導けました。
上記の1月3日の天気を元に同様の計算を行うと1月4日の天気の確率が分かります。

このように1月2日の天気の確率は1月1日の天気の結果にのみ影響を受けて、
1月3日の天気の確率は1月2日の天気の結果にのみ影響を受けて、
1月4日の天気の確率は1月3日の天気にのみ影響を……
と計算していくと1月1日の天気さえ分かれば年末の12月31日の天気が分かります!

このように、直前の結果のみから次の結果が確率的に求まるという「マルコフ性」を仮定して、様々な事象をモデル化するものをマルコフモデルと呼びます。

他にもこんな応用例が。

プロ野球の優勝チームが、去年のデータから分かる

野球において、ピッチャーの球種やバッターの打率や盗塁成功率などの情報から、次の瞬間にどのようなゲーム展開になるかの確率を計算していくことで、試合が始まる前に最終的な試合結果を求める。

そしてその試合結果からどのチームが優勝するかを導く。

Webサイトのパフォーマンスが分かる

webサイトにおいて、あるページAからあるページBへの推移する確率・あるページXからあるページYへと推移する確率……を全て計算することで最終的な問い合わせページや購入ページへの流入確率を求める。

などがあります。

隠れマルコフ連鎖って何が隠れている……?

マルコフモデルの一種で隠れマルコフモデルという数理モデルもあります。

なぜ「隠れ」なのかというと、先ほどの例での今日の天気が「晴れ・くもり・雨」のどれか分からない状態をモデル化しているからです。

隠れマルコフモデルがどのように用いられるか、英文を日本語に翻訳するという状況から説明したいと思います。

いま、「光陰矢の如し」ということわざを英文にした「Time flies like an arrow.」という英文の翻訳を例にします。

flyを動詞(飛ぶ・過ぎ去る)として捉えると、Time(名詞) flies(動詞) like(前置詞) an arrow(名詞).「時は矢のように過ぎ去る」=「光陰矢の如し」と訳せます。

しかし、flyを名詞(ハエ),likeを動詞として捉えると、Time(名詞) flies(名詞) like(動詞) an arrow(名詞).「時バエは矢を好む」といったヘンテコな文章ができ上がります。

このように品詞が名詞なのか動詞なのか前置詞なのか分からない状態からモデル化していきます。

状態が隠れているのですが、天気の例と同様に名詞の次にまた名詞がくる確率・動詞がくる確率・前置詞がくる確率などが分かっているとします。

すると、(名詞)(動詞)(前置詞)(名詞)という並びが起きうる確率と、(名詞)(名詞)(動詞)(名詞)という並びが起きうる確率が計算できますね。

この二つ(実際の翻訳ではもっと多くのパターン)の確率を比較し、大きい方を選択すれば良い翻訳が実現できるという訳です。

機械学習の分野でも大きく活躍する隠れマルコフ

確率から状態の推移を考えることが(隠れ)マルコフモデルでは重要です。

しかし、この確率の精度が低いものであったら良いモデル化ができているとは言えませんね。機械学習によってこの推移確率を更新していくことで、精度を上げることができます。

例えば100年前の天気の推移の仕方が現在にも当てはまるとは限りませんし、野球における打者の打率や盗塁確率が1年間を通じて同じとは限りません。

常にデータを蓄積し、機械学習によって精度を上げていくことで、マルコフモデルを実データにより良く応用できます。

話題の機械学習、マルコフ連鎖から勉強してみるのはいかがでしょうか?

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。