TECH BLOG
ワクチン接種後の体温変化をガウス過程回帰してみた
始めに
はじめまして、2022年4月に新卒として入社した Customer Analytics Division / DX Technology Unit の日比です。弊社では、より高性能なAIを開発するためのスキル研鑽として社内ブログでのアウトプットが盛んに行われています。本日はその中で私が執筆した「ワクチン接種後の体温変化をガウス過程回帰してみた」という記事について共有させていただきます。
0. 概要
今回はタイトルにもあるようにガウス過程回帰について自分の理解を書こうと思います。「ガウス過程ってなに?」って人も多いかと思いますが、「ベイズ最適化は知っているよ」って人は多いのではないでしょうか? ベイズ最適化はガウス過程回帰の結果を用いてパラメーターの最適値を探すチューニング手法になっており、実は知らない間にガウス過程回帰にお世話になっているのです。少しガウス過程回帰について興味が出てきましたか?
この記事では、始めに前提知識として必要な多変量ガウス分布およびリッジ回帰について説明した後、本題であるガウス過程回帰の話に移ります(リッジ回帰は重み
1. 多変量ガウス分布
1-1 概要
始めに多変量ガウス分布について確認しておきます。皆さんご存知1次元のガウス分布は以下の通りです。
これを
この時
と表す事が出来ます。名前からも察しがつくように
多変量正規分布 - 機械学習に詳しくなりたいブログ より引用
左から,
としたときの2次元ガウス分布を示しています。
1-2 条件付き分布
さて、多変量ガウス分布のイメージ着いたところで、次に条件付き分布について考えていきます。ここでいう条件付きとは、多変量ガウス分布からサンプリングされる ベクトル
と
で?に当てはまる平均値や共分散行列について考えてみます。イメージとしては以下の図のようになっています。 2次元ガウス分布に対して
条件付き正規分布(Conditional Gaussian distributions)|改めて理解する多次元正規分布 #2 - Liberal Art’s diary より引用
これを具体的に頑張って計算してみると、結果として以下を得ます。
具体的な証明は示しませんが、
2. 線形回帰とリッジ回帰
次に、リッジ回帰について知っておいた方がガウス過程回帰のイメージが付きやすいと思うのでリッジ回帰について説明します。また、リッジ回帰は線形回帰が解けない(逆行列が存在しない)場合などに有用な手法なので、線形回帰についても簡単に復習しておきます。
2-1 線形回帰
線形回帰とは、例えば
のように係数
のように任意の関数
ここで、
線形回帰では、あるデータセット
つまり、
2-2 正則化としてのリッジ回帰
線形回帰では
リッジ回帰ではいわゆるL2ノルムを考えることでこの問題を回避します。
回帰ではよく二乗誤差の最小化を考えて
を考えます。これを
結果的には、線形回帰の解の時と比べて
2-3 ベイズ的観点で見るリッジ回帰
正則化として導入した
ある
なお、分母成分は定数であり、今回の問題には影響しないので省略しました。また、
と書くことが出来ます。
です。なお、
得られた結果と、前節で導入したリッジ回帰の式(2-2.1)を比較すると完全に一致しています。すなわち、正則化として
3. ガウス過程回帰
ようやく本題であるガウス過程回帰に移ります。
3-1 ガウス過程
ここでも、式(2-3.3) と同様に
すなわち,
ここで注目すべき点は、
なお、
3-2 カーネルトリック
次に
したがって、
一つ例としてガウスカーネルは以下の式で与えられます。
実はこのカーネルの元になっている基底関数を考えると、平均の値が異なる無限個のガウス分布で回帰するモデルになっています。本来の線形回帰であれば無限個の基底関数で回帰することなどできませんが、カーネルを使うことによって非常に高い表現が得られたのです。まさにトリックですね!
3-3 予測値の計算
最後に予測値の計算ですが、1-2章で説明した式を用いれば、既にあるデータセットを用いた条件付き多変量ガウス分布を計算できますし、あたらしい
4. ワクチン接種後の体温変化をガウス過程回帰
基本的なガウス過程回帰のプロセスが理解できたので、実際に使ってみました。今回は、2回目のワクチン接種をした際の体温変化を回帰してみました。使用したツールはpythonでbayse_optというモジュールのBaysianOptimaizationという関数を使用しています。 青い点が測定点、オレンジのバンドが
5. 終わりに
ガウス過程回帰のイメージが理解できたでしょうか? 結局のところ、ガウス過程回帰では各データ点のyの値はある相関を持った多変量ガウス分布からサンプリングされた値であり、その相関はx方向の値とカーネル関数を用いて定義されているのでした。
色々省略して説明したところもあるので、少しわかりづらかったかもしれませんが、これで興味を持った人は是非勉強してみてください。基本的にこの記事は参考文献に記載した本を参考に執筆しているので、詳細を知りたい人はこちらをご購入下さい。また、ベイズ最適化はガウス過程が分かってしまえばイメージは割とすぐに理解できるかなと思います。
以上ガウス過程回帰を使ってみた話でした。次回ワクチンを打つ機会があれば是非ガウス過程回帰を試してみてください。寝ている間に体温がどこまで上がったのかわかるかもしれません。