書籍「見えないものをさぐる ―それがベイズ」のご紹介

●書籍「見えないものをさぐる ―それがベイズ」のFAQ を作成しました。

こんにちは。
今回は、書籍「見えないものをさぐる ―それがベイズ」について、本の目次を中心に、内容を少しご紹介したいと思います。

「ベイズには興味はあるけど、とっても難しそうで、どんな所で役立っているのかもよくわからない」という方も多いと思います。
そのような方が、ノートパソコンを片手に気軽に読んで、「面白いなー」と思っていただける本を目指しました。

第1章 宇宙から届いた箱の中身をさぐる - これがベイズの考え方

第1章では、ベイズの定理の考え方や、この書籍の全体像について説明しています。

宇宙から届いた箱の中身を、箱に手を差し込んで探ってみようという内容です。

ベイズの定理の式はでてきませんが、手を差し込む、つまり観測で得た情報をもとに、隠れている、「見えない状態」を探るという考え方について述べています。

第2章 病気の検査 - ベイズの定理

第2章でやっと、ベイズの定理がでてきます。

ベイズの定理で例題によくあげられる「病気の確率」を例に、ベイズの定理がどのように使われているかを述べています。

「病気の確率」では、『検査で陽性と判定されても、病気の確率は意外に低い』と説明している例が多く、ベイズの定理そのものよりも、「陽性でも病気の確率が低いこと」に驚き、そこで終わってしまいがちです。

ここでは、さらにもう一度検査を行って陽性と判定されたらどうなるか?を考えていきます。

またWekaというツールを用いると、ベイズの定理の計算を手軽に行うことができることを紹介しています。
次の図は、Wekaでベイジアンネットワークを利用した場合の例です。2回検査を行った時の「病気の確率」をWekaで求めています。パソコンで簡単に計算ができます。

Wekaで求めた病気の確率

第3章 オオカミ少年とベイズ - Wekaでベイズ決定

第3章では、イソップ寓話の「嘘をつく子供」を題材にしています。いわゆる「オオカミ少年」ですね。

嘘をつき続ける少年に対して、村長が「少年は嘘つきだ」と思う心(確率)の変化を、ベイズを利用して説明しています。

少年は嘘をつき続けるわけですが、もし最初の1回目が「本当」だったとしたら、その効果はどれくらいでしょうか?

そんなこともベイズを使って考えてみました。

これは、ビギナーズラック、例えば、友人に誘われて初めてパチンコをやったら大勝ちしたという状況と似ていますね。当然パチンコが大好きになるわけですが、その後負け続けた場合に、どの時点で我に返るか、ということです。

イソップ寓話の「嘘をつく子供」は、一般的には子供への道徳的な教訓と言われていますが、見方を変えると、これは村長の判断ミスが原因で、村の羊をすべて失ってしまった物語とも言えます。村長の責任は大きいですね。

村長は、少年の何回目の嘘で、どのような判断を本来すべきだったのか。。。

それをベイズ決定という手法を利用して考えていきます。

第4章 複数の因果関係を表す ―Wekaでベイジアンネットワーク

ベイズの定理を利用した「ベイジアンネットワーク」を中心に話を進めていきます。

ある観測、例えば「車のエンジンがかからない」ということがわかった場合、その原因、可能性はおそらく数百通りあるでしょう。その複雑な状況を、1つ1つ確率で表現して、原因、可能性を探ろうというのがベイジアンネットワークを利用した試みです。

ここでは、アメリカの別荘の「芝の状態」から「天気を推測」する例をあげています。しかし、これだけでは複雑さに欠ける、少し物足りないので、イギリスにも別荘を増やしたり、気圧センサーをさらに追加しようとしています。

さて、イギリスの天気はわかるでしょうか?

第4章では、「行方不明の潜水艦をベイズで探す」方法も紹介しています。ベイズ更新の醍醐味を味わうことができます。

この方法は、1968年5月に、アメリカの原子力潜水艦スコーピオン号が行方不明となった時、潜水艦捜索の有効な方法として採用された方法です。また、2009年に大西洋上に墜落し、乗客乗員228名全員が消息不明となったエールフランス447便の捜索でも使用されました。

潜水艦が行方不明になった状況

潜水艦が行方不明になった状況

第5章 確率の確率 ―確率分布の導入

第5章ではWekaから離れ、いよいよ確率分布をベイズで扱います。確率分布を「スリッパ」を使って説明していきます。

最初はスリッパではなく、「歪んだコイン」を使って説明しようとしたのですが、「歪んだコイン」での説明が社内であまり評判がよくなかったので、スリッパにしました。

確率分布を導入したおかげで、「予測分布」というものが利用できるようになります。

ここでは「ラーメンの食べ比べ」という例題で、「予測分布」を紹介しています。50票中30票とれば勝ちですが、15票の開票が終わった時点で、勝ち負けを判定してしまおうという内容です。

選挙で開票率5%程度でも当選速報をテレビではだしていますが、そのカラクリを垣間見ることができます。

第6章 小さい村への対応 ―事前分布の上手な利用

厚生労働省が公開している平成22年の市区町村別生命表で平均寿命をみると、
男性では、
     ○長野県 北安積郡 松川村  の 82.2歳
女性では、
     ○沖縄県 中頭郡  北中城村 の 89.0歳
がトップで、いずれの村も住みやすい、環境の良いところと言えそうですね。

しかし、村の人口が少ないと数値があばれ、結果として無意味な比較になってしまいます。

そこで、厚生労働省は、ベイズを使って、事前分布を上手に利用しながら平均寿命を求めています。

第6章では、この方法を紹介しています。

第7章 見えない状態を推測する ―ベイズの定理と発展

いよいよ最後の章です。

第7章は、登山でいえば、頂上の手前100m、最後の一番きつい上り坂です。

ここでは、ベイズを利用した推測の応用として、状態空間モデルを扱います。

最初に、状態空間モデルの代表例であるカルマンフィルターを用いて、ロケットを上手に飛ばす方法を考えていきます。カルマンフィルターは、人類初の月への有人宇宙計画である「アポロ計画」にも使用されました。

カルマンフィルターによるロケットの推定高度

第7章の最後には、この状態空間モデルをさらに発展させた考え方をいくつか紹介しています。

たとえば、、、

①隣の町の雨の量を推測

隣り合った3つの町A、B、Cがあって、A町とC町には雨センサーがあるとします。このとき、雨センサーのないB町の雨の量を推測しようとしても、このままではできません。そこで、雨を降らせる源、上空の雲の量をB町について予測し、その雲の量でB町の雨の量を推測しようというものです。

状態空間モデルを用いた雨量の推測

②小動物の生息数を推測

この広い海の中でウミガメは何匹いるのか? 増えているのか? 減っているのか?

イノシシは日本に今何頭生息しているのか?

一頭一頭数えるわけにはいきませんよね。わかっているのは観測された数です。この観測された数から、大まかに生息数を推定しようというものです。
ここでは階層ベイズモデルを使った推定例を紹介しています。

実際、これに類する方法で、環境省は日本国内の動物の個体数の推測を行っています。例えばニホンジカの場合、2011年時点で、約260万頭(北海道除く)、イノシシは約88万頭が日本国内に生息していたと推定しています。

付録

付録では、シミュレーションソフト「OpenBUGS」を利用した計算例などを紹介しています。

①どちらのラーメンがおいしいか -予測分布で推定

これは第5章で行った「ラーメンの食べ比べ」の計算を、OpenBUGSで行った場合の例です。

②隣の町の雨の量を推測 -CAR modelを利用

③小動物の生息数を推測 -階層ベイズモデルを利用

④カルマンフィルター  -多変数への適用


書籍「見えないものをさぐる ―それがベイズ」は、オーム社の書籍紹介ページ、本の通信販売サイト、および全国の書店等からご購入いただくことができます。

978-4-274-21819-4


書籍「見えないものをさぐる ―それがベイズ」 FAQ

 このFAQは、書籍「見えないものをさぐる ―それがベイズ」(2015、オーム社)に対し、読者からいただいた「お問い合わせ」の内容を基に作成しました。
 いくつかの「お問い合わせ」の内容は、他の読者の皆様にも有益だと思いますので、FAQとして公開させていただきました。(更新日 2017年6月13日)


<No.1>
 Wekaのベイズネットワークエディター上で、マウスでノードを動かすと、あるいは新しいノードを作成すると、ノードが1か所に集まってしまう。
 


<回答>
 執筆当時のWekaのバージョンは3.6、現在(2017年6月)のWekaの最新バージョンは3.8ですが、バージョン3.8はベイズネットワークエディターの動きが、やや不安定のようです。マウスでノードを動かしたり、新しいノードを作成すると、ノードが1か所に集まってしまう場合があるようです。

 執筆当時のWekaのバージョン3.6は、下記のサイトからダウンロードできますので、Wekaのバージョン3.6をインストールして使用することをお薦めいたします。
 
    https://sourceforge.net/projects/weka/files/
    
 例えば、ご利用のパソコンが windows 64bit パソコンで、あれば、
 
    weka-3-6-windows-jre-x64 (Java VM付)
    
 をダウンロードします。