データ拡大はギブスサンプリングと比べて何が嬉しいのか
照井伸彦著「ベイズモデリングによるマーケティングデータ分析」をざっくりと読み終わりました。
感想としては
「数式が表す内容についてイメージが湧くか?そしてそれをアルゴリズムとして実装できるか?」という問いにYesが出た時点でその数式を理解したことにするので、ガチ研究者よりも本を速く読める。ただそれだと進歩がないので、Mathematicaで数式変形を自力で展開できるようになりたい
2014-04-09 17:24:46 via web
さて、この本のなかでデータ拡大というテクニックが出てきておおーって思ったのですがR勉強界隈の講師的存在である大仏様のエントリ
でうれしさがわからないという話があったので自分なりにうれしさを考えてみました。*1
データ拡大の嬉しさ
データ拡大はf(x)のxがデータなのかパラメータなのかを問わないサンプラーという視点で見るとあんまりうれしくない気がしますけど、確率変数それぞれにパラメータと観測データの区別があるときにうれしいのかなって思います。
例えば、パラメータがΘでデータがxだとしてベイズ推定によって事後分布P(Θ|x)を構成してサンプリングしたいときにΘを直接サンプリングするのが難しいケースがあるとします。
もちろん、Θが多変数で、Θ内部で変数群を分割することによってギブスサンプリングができるケースであればそうすればいいですが、Θに含まれる変数はもっとガッチリこんがらがっていて条件付き分布にバラせないとします。
そういうときに拡大データyを用意して、P(Θ,y|x)として上記の本や大仏様の記事にあるようにP(Θ|x,y)とP(y|Θ,x)という条件付き分布でギブスサンプリングっぽくやればOKというのは大仏様の説明のとおりです。
で、その条件付き分布ですが、典型的には簡単になるというところがポイントだと思います。まぁ、変数を増やしたのだから増やした分ともとの分は条件付き確率がばらせるというのは当然といえば当然だとは思いますけれど。
いちおう、その当然と思われることを念のため確かめておきましょう。
もともとデータxは目的変数x1と説明変数x0にばらして「x1=すごく複雑な関数f(Θ,x0)」みたいになっているとして、yのモデルのほうはΘをパラメータとする単純な回帰「y=Θ*x0+誤差(*)」にするとします。そうすると、求めたい条件付き分布のP(y|Θ,x)とP(Θ|x,y)は、いずれもベイズ回帰モデルのサンプリングそのものになります。ここで仮導入した回帰モデル(*)においてyはあたかも観測データであるかのように扱えることがポイントで、前者のP(y|Θ,x)は、パラメータが分かっていればそのモデルで説明変数から目的変数をサンプリングできて当然ですし、後者のP(Θ|x,y)は観測データからパラメータの事後分布を求める普通のベイズ推定です。またこのとき、後者のP(Θ|x,y)はもとの複雑な関数を考慮せず(*)だけを使って計算できる、つまりP(Θ|x,y)=P(Θ|x0,y)となるところもポイントでしょう。
そういう風にして、パラメータの事後分布を構成しても複雑で直接サンプリングできないようなときに、より単純なモデルでデータを増やすと、その増やしたデータで「パラメータ→データ」と「データ→パラメータ」は簡単にできて、それがもとの複雑なモデルにおけるギブスサンプラーとみなせる(拡大したデータはもとのモデルの隠れパラメータという位置づけになる)、ということだと思います。
まぁそういう意味では大仏様のいうとおり新しい理論構成を導入したというものではないですけど、既存のものの組み合わせですごく嬉しいテクニックがあるので名前がついている、みたいなノリなんじゃないでしょうかね。