DCEKit に今回追加したのは Variational Bayesian Gaussian Mixture Regression (VBGMR) と、GMR や VBGMR におけるクロスバリデーションによるハイパーパラメータ最適化です。
一般的な Gaussian Mixture Model (GMM) は Expectation-Maximization (EM) アルゴリズムで、GMM のパラメータである正規分布の重みや各正規分布の平均・分散共分散行列を計算します。
一方で Variational Bayesian GMM (VBGMM) は、変分ベイズ法でパラメータを計算する方法です。一般的な GMM と比較して安定的にパラメータを求めることができると言われています。GMM を GMR にしたように、VBGMM を VBGMR にしました。いくつかのデータセットを解析した中では、GMR と比べて VBGMR により予測精度が向上をすることを確認しています。もちろん VBGMR でも GMR と同様にして、直接的なモデルの逆解析ができたり、複数の目的変数を同時に考慮できたりします。
興味のある方は、VBGMR のデモンストレーション demo_vbgmr.py をご確認ください。
GMR でも VBGMR でも、事前にハイパーパラメータを最適化する必要があります。GMR のハイパーパラメータは以下のとおりです。
- 正規分布の数
- 正規分布における分散共分散行列の種類
- 予測値を計算する方法 (正規分布の平均値か代表値か)
VBGMR のハイパーパラメータ は以下の通りです。
- 正規分布の数
- 正規分布における分散共分散行列の種類
- 重みの事前分布の種類
- 重みの事前分布のパラメータ
- 予測値を計算する方法 (正規分布の平均値か代表値か)
GMR の 3 つと比べて VBGMR の 5 つは多いですね。とにかく、いずれにせよ 3 つもしくは 5 つを最適化する必要があります。そこで、それぞれクロスバリデーションで最適化する機能を付けました。以前も GMR では簡易的にクロスバリデーションで最適化する機能を搭載していましたが、今回はハイパーパラメータの種類を増やしたり候補を調整したり、機能を整理したりして使いやすくしました。GMR, VBGMR それぞれ、こちらのデモンストレーションのプログラムをご覧いただければと思います。
- demo_gmr_with_cross_validation.py
- demo_vbgmr_with_cross_validation.py
デモンストレーションとはいえ、プログラム中で用いられているデータセットを変えるだけで、わたしも同じハイパーパラメータの候補で、実際に同様の使い方をしています。
上述したように GMR や VBGMR は直接的モデル逆解析ができたり、目的変数が複数の場合でも対応できたりします。さらに、適応的実験計画法でベイズ最適化を上回る性能を達成しています。
将来有望な手法です。ご興味ある方は、ぜひご確認いただければと思います。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。