系列データの統計モデリング 〜ハイパーパラメータの推定〜
【概要】
- パーティクルフィルタを利用して系列データのモデリングと状態推定をやってみます
- 今回は、前回既知としていたモデルのハイパーパラメータを直接法を利用して推論してみます
- 直接法ってこういう理解であってるのかしら??
【目次】
はじめに
統計モデリングを行うにあたって、独立同分布(i.i.d; independent and identically distributed)を仮定することが多いと思います。
しかし、i.i.dを仮定できないケースはよくあります。時系列などの系列データが代表的です。また、i.i.dを仮定することが多い対象でも、計測対象や計測装置の経時的な変化(劣化)など本来的には系列を考慮しないといけない場面はあると思います。
系列データの解析について、主に「予測にいかす統計モデリングの基本」を参考に確認しましたので、数回に分けてまとめていこうと思います。なお、状態空間モデル(State Space Model)を使ったモデリングが対象です。私個人的には状態空間モデルでのモデリング経験はあるのですが、平滑化やパラメータ推論の理解が曖昧でしたので、このあたりの整理をメインに考えています。
第1回では、状態空間モデルを使って、時系列データの状態推定をパーティクルフィルタを利用して行ってみました。状態推定までは容易に行うことができましたが、その精度は事前に設定するパラメータに依存します。
そこで第2回では、パーティクルフィルタのハイパーパラメータを単純な方法(直接法)で推論してみます。
間違いや勘違いなど、なにかありましたら指摘いただけるとすごく助かります。
モデルの学習
モデルが既知の場面というのはそうそうありません。なので、データに基づいてモデルを学習させたいです。 第1回で構築した状態空間モデルでも、観測モデルやシステムモデルに設定したガウス分布の分散は本来は未知のパラメータでした。
ここでは、どのように未知のパラメータを学習していくかを考えます。
学習
モデルには、情報が処理される「構造」と、具体的に情報の処理の仕方を決める「パラメータ」の大きく二つの要素があります。モデルの「構造」は、当ブログでいつも書いている「同時確率」で表現されます。モデルの「構造」は分析者が任意に決めるものです。
モデルの構造が決まっても、具体的な情報の処理のされ方は「パラメータ」に依存します。 機械学習全般において「学習」とは、このモデルパラメータをデータに基づいて調整する行為と捉えられると思います。(モデルの複雑さや設計の違いで、この未知のパラメータが解釈可能なのか複雑で解釈することに意味がないかという違いはありますが)
パラメータを調整するにあたって、どのように調整するか?や、調整が良かったのか?を測るための指標が必要です。多くの場面では、パラメータを評価する指標として「尤度(Likelihood)」が用いられます。なお、実際に計算として出てくるのは尤度の対数をとった「対数尤度」が多いです。(「対数尤度」の符号反転を誤差関数と呼んだりもします)
最尤法(直接法)
尤度とは、データをモデルに当てはめたときの当てはまりの良さを表します。基本的には、データYに対しての同時確率となります。
はパラメータです。データYは与えられるものなので、上記はパラメータの関数になります。
同時確率が最大になるは、評価指標が最大ということで、これが求めたいということになります。
尤度の最大化を考える際に、勾配法などを利用することが多いと思います。今回は、もっと簡単な「直接法」を試してみます。
直接法とは、その名の通り尤度を直接計算してより良いパラメータを探索します。まず、を適当に離散化します。そして、離散化されたそれぞれの値で尤度を計算します。そして、計算された尤度が最も高くなるパラメータをとしようという方法です。(という理解で良いですよね??)
いわゆるグリッドサーチですね。
簡単でわかりやすいですが、パラメータが増えれば問題が出てくることが明らかですね。「予測にいかす統計モデリングの基本」でも次元数が多い場合は現実的じゃないと書かれています。なんですが、より洗練された方法は次回に回すとして、ここではこの直接法を扱ってパラメータを推論してみます。
パーティクルフィルタにおける尤度
パーティクルフィルタを使った場合の尤度の具体的な計算方法です。
パーティクルフィルタを利用して状態推定すると、パーティクルの重みの平均が時刻tにおける尤度となります。これを利用すると、Y全体の尤度(対数尤度)は次のようになります。
上記の通りは、
となります。毎時刻の重み平均の総和ということです。
直説法による最適化の実装
問題設定
前回と同じ問題設定を扱うことにします。
これは、次の状態空間モデル(1階差分モデル)から生成した系列データです。
はパラメータで、設定値は以下の通りです。
図のデータが観測されているという条件で、さらに、状態空間モデルの構造もわかっているという前提でパラメータを推論してみようというのが問題です。
実装例
を直接法を使って推論します。具体的なコード全体は、下に添付してあるので、そちらを参照してください。パーティクルフィルタクラスは前回添付しているものを利用しています。
まず、探索範囲を決めます。「予測にいかす統計モデリングの基本」では、2の冪乗の乗数を設定していたので、ここでもそれに倣います。が、直接値を設定しても良いはずです。
あとは愚直に組み合わせを計算するだけです。
推論結果
notebookを見てもらえば良いですが、結果は次のようになりました。
この図から、a, bの最適値として、が推論されました。
ということで、だいたい設定値を推論できました。
おわりに
ということで、状態空間モデルのハイパーパラメータの推定をやってみました。
直感的な方法で実装も簡単ですけど、繰り返し多数の計算が必要なので、計算効率はだいぶ悪いです。これはパーティクルフィルタの実装の問題もあるのですが、私の環境では8分もかかってしまいました。
ということで、次回はより効率の良い推論を実装します。平滑化分布を応用したパラメータ推論で、状態推定と同時にハイパーパラメータの推論も行うという手法です。
参考資料
[1] 樋口(著), 予測にいかす統計モデリングの基本―ベイズ統計入門から応用まで, 講談社, 2011
予測にいかす統計モデリングの基本―ベイズ統計入門から応用まで (KS理工学専門書)
- 作者:樋口 知之
- 発売日: 2011/04/07
- メディア: 単行本
[2] Sebastian Thrun(著), Probabilistic Robotics, MIT Press, 2005
Probabilistic Robotics (Intelligent Robotics and Autonomous Agents series)
- 作者:Thrun, Sebastian,Burgard, Wolfram,Fox, Dieter
- 発売日: 2005/08/19
- メディア: ハードカバー