hatunina’s blog

メモと日記です

主成分分析いろいろ

主成分分析について色々調べて試したのでざっくりまとめます。

雰囲気で理解しているので間違った解釈をしている可能性あり

 

データセットに対する固有値問題を解けばいいよ!ってノリだけどそもそも、

 

① データセットの共分散行列を求める

② 共分散行列の分散を最大にするようなベクトルを見つけたい

ラグランジュの未定乗数を使って解く!!

 

っていう過程があって、③を解いてたら、あれ?これ固有値問題やんけ!!ってなったから固有値問題を解けばいい感じになってるんですか?そうなんですか?

 

で、jupyter notebookにsklearnでPCAした場合とnumpyで固有値問題を解いてみた場合を描画してみました。

 

f:id:hatunina:20180201203514p:plain

 

左がsklearnでPCAしたデータの先頭の特徴量と2番目の特徴量を使って描画した図で、

右がnumpyで固有値問題を解いて固有ベクトルを元データにかけたものから先頭の特徴量と2番目の特徴量使って描画した図です。

 

まあ、若干ずれてる箇所もあるけどその辺は許容誤差だよね!ですよね?わからん!

とりあえず今回は主成分分析の理論部分の確認がしたかったので、numpyで実装したものがsklearnと同じように動いているということで終わりです。

 

ソースはこちら

github.com

 

たくさん参考にさせていただきました。 

ありがとうございます。

 

https://www.sit.ac.jp/user/konishi/JPN/L_Support/SupportPDF/Eigenvalue.pdf

 

mathtrain.jp

 

yusuke-ujitoko.hatenablog.com

 

blog.aidemy.net

 

ksmzn.hatenablog.com