らんだむな記憶

blogというものを体験してみようか!的なー

ぼんやりとPCA (Principle Component Analysis) を考える

某講座の、特徴量をPCAを用いて次元を減らすとかいう感じの部分の考察。
特徴量に一番フィットする超平面に射影して落とすイメージに見えるが、特異値分解で得た固有ベクトルで張られる線型空間(ベクトル空間)に射影しているように感じるので、そうなると、特徴量は原点を通るような超平面がフィッティングしやすいように分布していることが求められるだろう。
とすると、正則化ってやつ。平均値を引いて、標準偏差で割ってみる~みたいな。ここで平均値を引くことで、特徴量の集団の中心が原点になるようにmodifyする。これが重要と見た。

次に、正則化された特徴量から生成される対称正値行列Σを特異値分解しているが、これは対称正値行列という特徴から見て、Σの固有値に属する固有ベクトルの抽出を行っていると思う。(要は特異値分解というよりは本質的には対角化)
octaveのsvd()関数の動きを見ると、大きい固有値から並べるようなので、とすれば、固有ベクトルは順に大きい固有値に属しているものから並んでいるということになる。

これを頭から幾つか取り出して、それらベクトルが張る線型空間に特徴量を射影する、ということをしているようだ。

というイミフメイなメモを残しておく。

「PCAを用いた次元削減」は

(1)特徴量が原点を平均値として分布するように修正されている。
(2)特異値分解が大きい固有値の順に並び、従ってユニタリ行列も対応する大きい固有値に属する固有ベクトルから並んでいる。

という2つの大前提のもとに組まれたアルゴリズムのように見えるが、ここから先はちょっと紙に書かないと分からない。

とにかく某講座にて天下り的に出てくるアルゴリズムの通りに実装すると気持ち悪くてしかたないところがある。微積分を導入せずに物理をやっていた高校の頃のように、なんだかスッキリしないが、天下り的に提示される公式を用いると運動の軌跡が求まるには求まるんだがー... というのと似ているかもしれない。
広いターゲットに教えるには「コレを目をつぶって使いなさい」で良いけど、狭いターゲットに深く教えるにはやはり原理の提示も必要だとは思う。それは講座の方向性の問題だが。
原理ばかり追求してもアカデミックになりすぎて現実の問題になかなか対応できないので、そこはほどほどのバランス感覚で、必要な程度に背景を理解して、後はえいやっで活用するのが現実的ではあろう。エンジニアリングはそういう側面があるだろう。しかしそういうのがあまり好きになれない自分はエンジニアにはいまいち向いていないかもしれないと思いつつ、このメモは一旦ここまでで。