Python
PCA

PCAはいろいろ使える

PCA(Principal Component Analysis)は、いろいろ使えます。

まず、2次元座標サンプルから中心となる線(主軸)を求めるのに使えます。

主軸が得られれば、2次元サンプル座標から主軸へおろした垂線と主軸の交点が得られます。主軸を基準とした場合、それら交点座標は1次元座標というわけで、2次元から1次元へ次元圧縮したことになります。

また、元の2次元座標サンプル群を主軸が垂直になるまで回転させれば、主軸が垂直な2次元サンプル座標が得られます。

例えば、顔認識して、そのLandmarkをサンプル座標とすれば、顔の中心線を求めて、傾いた顔を垂直にすることに使えます。

3次元での例としては、3次元空間の座標点サンプルから、それらが最もよく収まる2次元平面を求めるのに使えます。

例えば、指を机の上で動かし、手首に加速度センサーとジャイロスコープをつけているとします。この2つのセンサーの値からセンサー装着部位が地球の重力方向を基準として、どう動いたかの、3次元空間内軌跡が得られます。それらからサンプルを取り、PCAで2次元へ圧縮すると、指でなぞった机と平行な平面(机はたまたま重力と直角に交わりますが、机でなく壁でもいい)を得ることができます。さらに、その平面上での2次元軌跡が得られます。(これは、以前、特許出願した発明の実施形態の一部)。

PythonでPCAを使うのは簡単です。

from sklearn.decomposition import PCA

sample = 例えば2次元座標列
pca = PCA(n_components=2) #入力が2次元であることを指示
pca.fit(sample)
if DEBUG: print("pc {}".format(pca.components_)) #主軸等をダンプ
主軸を基準にした2次元座標列 = pca.transform(sample)