確率・統計
記事内に商品プロモーションを含む場合があります

ベイズモデリングとは何か?初心者向け解説

確率・統計関連記事
tadanori

ベイズモデリングは面白い

最近、ベイズモデリングにハマっています。

ベイズモデリング(またはベイズ統計モデリング)とは、ベイズの定理を用いた統計手法のことです。この記事では、ベイズモデリングと呼ぶことにします。

ベイズモデリングにはベイズモデリングのためのライブライを使っています。

代表的なライブラリには、JAGS, Stanなどありますが、私は主にR言語からStanを呼び出すrstanを使用しています。このrstanのインストールの方法についてはRstan-Getting-Startedを参考にしてください。

近年、MCMC(マルコフ連鎖モンテカルロ)と呼ばれる手法を汎用的に扱えるソフトウェアが登場したことで、ベイズモデリングが非常に手軽に利用できるようになりました。

最近はPythonを多用するようになり、PyMCというライブラリを使うようになりました。PyMCについては以下の記事を参考にしてください。

PyMCを使って回帰問題を解いてみた|PyMC実践
PyMCを使って回帰問題を解いてみた|PyMC実践

これまではなかなか手が出せなかったベイズモデリングですが、パソコンの性能向上やライブラリの充実により、最近では頻繁に活用する機会が増えています。

興味がある方はぜひ試してみてください。次のセクションでは、ベイズモデリングの概要について解説します。

PCの性能がアップすると、これまでは計算量的に使えなかった技術や理論が使えるようになって面白いです。ディープラーニングとかもその1つですね。

統計モデリングって

統計モデリングとは、「確率モデルを用いてデータ生成のメカニズムを記述し、データを使ってパラメータを推定する」ことです。この統計モデリングにベイズ統計を用いるものが、ベイズモデリングとなります。

ベイズモデリング

ベイズモデリングを行うことで、従来では解けなかった複雑なモデルが扱えるようになると言われています。個人的には、非常に直感的にモデルを組み立てられる点が魅力だと感じています。

例えば、身長の分布を考えてみましょう。身長の分布は正規分布になると考えられるため、平均値を$\mu$、標準偏差を$\sigma$とした正規分布でモデル化できます。

$$
height \sim normal(\mu, \sigma)
$$

ここで、「体重と身長は比例するのでは?」と考えたとしましょう。従来の手法では、回帰分析を用いることが考えられます。まず、身長と体重の関係が線形であると仮定すると、次のような線形モデルを用いて回帰分析を行います。

$$
height = a + b \times weight
$$

ここまでは、高校生レベルの内容でしょうか。ベイズモデリングでも似たようなアプローチを取りますが、身長の平均値$\mu$に体重のモデルを代入します。イメージとしては、以下のような式になります。

$$
height \sim normal(a+b \times weight, \sigma)
$$

この式の解釈は、「身長の平均は体重に比例しており、$\sigma$のばらつきを持つ」ということです。直感的に理解しやすいのではないでしょうか。ちなみに、先ほどの線形回帰でもばらつきを定義でき、以下のように$\epsilon$で表すことができます。

$$
height = a + b \times weight + \epsilon
$$

どちらの式が直感的ですか?

個人的には、統計モデリングでの記述の方が直感的だと思います。

統計モデリングでは、さらに体重についてのばらつきを追加して表現することもできます。例えば、体重が平均$\mu_w$、標準偏差$\sigma_w$の正規分布に従うと考えられる場合、次のように記述できます。

$$
height \sim normal(a+b \times weight, \sigma)
$$

$$
weight \sim normal(\mu _w, \sigma_w)
$$

追加されたのは、体重が正規分布に従うという一文です。このように、それぞれの値に対してモデルを追加していくことで、より詳細にモデルを記述することができます。

ベイズモデリングのツールのすごいところは、こういった記述をほぼそのまま用いるだけで計算できる点です(表現が不十分かもしれませんが、ここでは「計算」と呼んでおきます)。

ここでは、プログラム例などは記載しませんが、興味がある方は調べてみてください。

プログラムに慣れている人でも、確率変数が入った文法にちょっと躓くかもしれません。

追記(ベイズらしい部分を忘れていました)

ここまで書いて、大切なことを書き忘れていたことに気づきました。実際には、ベイズの要素が欠けていました(汗)。

実際には、数人の体重と身長を計測し、そこから平均や偏差などのパラメータを推定します。回帰分析の場合は、係数$a$と$b$を推定します。計測したデータをそれぞれ$height_i$、$weight_i$とすると、次の確率を求めることになります。

$$
P(a,b | height _i, weight _i)
$$

これは以下のように書き直せます。

$$
P(a,b | height _i, weight _i)=\frac{P( height _i, weight _i | a,b)P(a,b)}{P( height _i, weight _i )}
$$

左辺の確率はそれぞれモデリングされており、そのモデルを適用します。ソフトウェアはこの計算を自動で行ってくれるので、とても便利です!!

ベイズモデリングに興味が湧いた方は、以下の記事も参考にしてください。

あわせて読みたい
PyMCを使って回帰問題を解いてみた|PyMC実践
PyMCを使って回帰問題を解いてみた|PyMC実践

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

記事URLをコピーしました