北野坂備忘録

主にインストールやプログラミングのメモを載せています。

機械学習(カーネル法)におけるグラム行列

 数学的(線形代数学的)にはグラム行列とは正方行列Aが与えられたときに、その随伴行列A*とAを掛け合わせたA*A(この*は掛け算ではなく随伴行列記号)のことをAのグラム行列と言います。
 随伴行列とは複素数を成分にとる m×n 行列 A に対して、

1) 転置して
2) その成分の複素共軛(実部はそのままで虚部の符号を反転する)をとった

n×m 行列 A* のことです。
 ただし、グラム行列の場合はAが正方行列(n×n 行列)という制限がかかりますので、随伴行列もn×n 行列になります。


 これに対し、機械学習の分野でグラム行列とは単に

{ x_n , x_m }カーネル{ k(x_n , x_m) } を n,m 成分とする行列のこと

であり、「{ k(x_n , x_m) }を要素に持つグラム行列」と表現されることもあります。
 イメージ的にはカーネル関数を行列で表したもの」と思えばいいでしょう。
 具体的には「n個のデータに対する全相互カーネル値の一覧」です。
 こう言われると、

「ああ、いかにもカーネル法のいろんなところで出てきそうな行列だなあ」
「n(データ数)が増えたら計算が大変だろうなあ」

ということが一発で分かると思います。

 グラム行列を使うと何がうれしいかと言うと、元の空間の次元が高くても(無限次元でも)計算量があまり増えないということです。逆にデータ数が多いほど計算に時間がかかります。
 となると、今度は効率化として

・近似
・データ量を減らす

などが出てくるわけです。
 グラム行列計算の効率化についてはこれまた巨大な分野なので今回はここまで。