Python機械学習プログラミングの5.1 主成分分析による教師なし次元削減 に、主成分分析について記載されており、ステップがわかりやすかったため、メモしておきます。
主成分分析の効能
主成分分析は教師なし線形変換法の1つで、最も用いられるタスクは次元削減。
データセットを変換し、元の次元よりも低い次元の新しい特徴量空間を作成する。
その際に、元の高次元データにおいて分散が最大となる方向を見つけ出すことで、次元を削減しつつも、情報量を残しやすくなる。
次元削減することで、計算効率を改善することができる。
主成分分析のステップ
下記の6つがある。
- d次元のデータセット(1×d)を標準化する
- 標準化しないと、100cmか1mか、単位の違いなどによって重要度がブレてしまう。
- 標準化したデータセットの共分散行列を作成する。
- 共分散行列を固有ベクトル、固有値に分解する。
- 最も大きいk個の固有値に対応するk個の固有ベクトルを選択する。このkが新しい特徴部分空間の次元数を表す。
- 2で作成した共分散行列は、固有値が大きい順に並ぶわけではないので、固有値でソートしベクトルを選ぶ必要がある。
- 上位k個の固有ベクトルから射影行列W(d×k)を作成する
- 射影行列Wを使ってデータセットXを変換し、新しいk次元の特徴部分空間を作成する。(1×dのベクトルに、d×kの行列をかけると、1×kのベクトルになる。)
参考書籍
-
上のステップで、共分散行列や固有ベクトル、固有値、行列とベクトルの掛け算などがとっつきにくい場合は、下記がおすすめです。下記を読んでからPython機械学習を読んだら、すんなり読み進められるようになりました。