DCEKit に搭載されている Generative Topographic Mapping (GTM) や Generative Topographic Mapping Regression (GTMR) について、
クロスバリデーションとベイズ最適化によってハイパーパラメータを最適化する機能を追加しました。DCEKit における以下のデモンストレーションも実行していただければ、GTM, GTMR それぞれ最適化される様子をご覧いただけると思います。
- demo_opt_gtm_with_k3nerror_bo.py
- demo_opt_gtmr_with_cv_bo_multi_y.py
GTM には以下のハイパーパラメータはあります。
- 2次元平面上のグリッド点の数 (マップサイズ)
- 放射基底関数 (Radial Basis Function, RBF) の数
- RBF の分散
- 正則化項
GTMR も GTM モデルを構築するまでは GTM と同じなので、上のハイパーパラメータがあります。さらに予測値を決定するときに、一つ以下のハイパーパラメータがあります (Gaussian Mixture Regression (GMR) や Variational Bayesian Gaussian Mixture Regression (VBGMR) と同じです)。
- mode を用いて予測するか、meanを用いて予測するか
回帰分析手法である GTMR におけるハイパーパラメータをベイズ最適化で決める方法は、こちらに書いた方法と同じです。
クロスバリデーション後の r2 を目的変数、ハイパーパラメータを説明変数として、ベイズ最適化をすることでクロスバリデーション後の r2 が大きくなるハイパーパラメータを効率的に探索できます。
一方、GTM は可視化手法で教師なし学習であり、基本的には目的変数になる指標がありません。ただ、以前に可視化手法の指標を提案しましたので、
今回は k3n-error を目的変数にして、ベイズ最適化するコードにしました。
GTM, GTMR はハイパーパラメータが多く、また一回ごとの計算時間も結構かかるため (クロスバリデーションするともっとかかります)、ハイパーパラメータのすべての組み合わせをグリッドサーチで探索するのはかなり時間がかかっていました。しかし今回、DCEKit のベイズ最適化により、かなり効率的にハイパーパラメータを決定できるようになりました。ぜひご活用いただきますと幸いです。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。