#Level4.機械学習講座(理論と実践)
##4-4.主成分分析
###4-4-1.主成分分析とは
●予測や分類とは異なるタスクで「次元圧縮」をする。
●多変量データの持つ構造をより少数個の指標に圧縮する
要するに高次元のものを、なるべく情報量を減らさずに低次元に圧縮すること。
⇒ 1000次元のものを10次元にする。
⇒ 高次元のものを目で見て傾向をつかむことができる。
●少数変数を利用した分析や可視化(2・3次元まで)が可能。
4次元以上になると人間が理解できない。
###4-4-2.主成分分析の式
【学習データ】
i番目のデータの1個目の要素、2個目の要素・・・とm次元まである。
x_i=(x_{i1},x_{i2},・・・,x_{im}) \in \mathbb R^m
【平均(ベクトル)】
\bar x = \frac{1}{n}\sum^{n}_{i=1} x_i
【データ行列】
原点まわりで分散するようにしてあげる。
\bar X=(x1 - \bar x,・・・,x_n - \bar x)^T \in \mathbb R^{n×m}
【分散共分散行列】
$\bar X$さえ求まれば計算できる。
\sum = Var(\bar X) = \frac{1}{n}\bar X^T \bar X
【線形変換後のベクトル】
jは射影軸のインデックスであり、3次元を2次元に圧縮ならj=2
3次元を1次元に圧縮ならj=1となる。
s_j = (s_{1j},・・・,s_{nj})^T = \bar X a_j a_j \in \mathbb R^m
###4-4-3.線形変換後の分散
●係数ベクトルが変われば線形変換後の値が変化する。
●情報量を分散の大きさと捉える。
●線形変換後の変数の分散が最大となる射影軸を探索すること。
s_j = (s_{1j},・・・,s_{nj})^T = \bar X a_j a_j \in \mathbb R^m
で、元の空間にある分散$\bar X$に対して、$a$で線形結合する。
$a$が変われば線も変わる。
【線形変換後の分散】
$s_j$を最大にしたい。
Var(s_j) = \frac{1}{n}s_j^Ts_j = \frac{1}{n}(\bar Xa_j)^T(\bar Xa_j)=\frac{1}{n}a_j^T\bar X^T\bar Xa_j = a_j^TVar(\bar X)a_j
###4-4-4.制約付き最適化問題を解く
●ノルムが1となる制約を入れる。⇒そうしないと無限に解が出てくる。
例えば、ベクトル(1,1)とベクトル(2,2)は同じ向きなので解が無限に出る。
【目的関数】
arg \ max_{a \in \mathbb R^m} \ a_j^T Var(\bar X)a_j
【制約条件】
ノルムが1になるもののみを考える。
a_j^Ta_j = 1
●制約付き最適化問題の解き方
ラグランジュ関数を最大にする係数ベクトルを探索(微分して0になる点)
【ラグランジュ関数】
目的関数 - 制約条件
E(a_j) = a^T_jVar(\bar X)a_j - λ(a^T_ja_j - 1)
やることは、ラグランジュ関数が作れたら微分し、=0を解いてあげる。
$a$という式があって、$\hat a$という解が1つ出てくる。
$\hat a$という解は、上記のような制約付き最適化問題の解と同じになっている。
###4-4-5.最適解を求める
●ラグランジュ関数を微分して最適解を求める。
⇒ 元のデータの分散共分散行列の固有値と固有ベクトルが、制約付き最適化問題の解となる。
【ラグランジュ関数の微分】
計算方は復習しておこう。ベクトル微分をする。
\frac{\partial E(a_j)}{\partial a_j} = 2Var(\bar X)a_j - 2λa_j = 0\\
解は・・・ \ Var(\bar X)a_j = λa_j
●射影先の分散は固有値と一致する。
Var(s_1) = a^T_1Var(\bar X)a_1 = λ_1a^T_1a_1 = λ_1 (a^T_1a_1=1)
⇒応用数学の固有値、固有ベクトルと同じ形である。
$a$は元のデータの分散共分散行列の固有値と固有ベクトルを求めてあげれば、
分散を最大にする軸になっている。主成分分析の結果である。
###4-4-6.寄与率
「分散共分散行列を計算」⇒「固有値問題を解く」
⇒「最大m個の固有値と固有ベクトルのペアが出現」
●圧縮した結果、どれだけ情報がロスしたのかを知りたい!!
●第1~xx次元分の主成分の分散は、元のデータの分散と一致する。
⇒ 固有値を全て足したものは、元の空間の分散と一致する。
分散を全部足し合せたmのが全情報量である。
●2次元のデータを2次元の主成分で表示した時、固有値の和と元のデータの分散は一致する。
●第k主成分の分散は、主成分に対応する固有値である。
Var_{(total)} = \sum_{i=1}^m \ λ_i
【寄与率】
第k主成分の分散の全分散に対する割合のこと。(第k主成分が持つ情報量の割合)
c_k = \frac{λ_k}{\sum_{i=1}^m \ λ_i} 「第k主成分の分散 / 主成分の総分散」
【累積寄与率】
第1~k主成分まで圧縮した際の情報損失量の割合のこと。
r_k = \frac{\sum_{j=1}^kλ_j}{\sum_{i=1}^m \ λ_i} 「第1~k主成分の分散 / 主成分の総分散」