2016年8月28日

Principal Component Analysis; PCA (主成分分析)

  この投稿では,複数の画像データ間に対して,主成分分析を適用する場合における,数学的背景を示します.
MNISTのデータ (手書き数字の画像データ) の各画像間の変化に対して,PCAを適用した場合,下記のような式展開となります.
(画像1枚に対して,PCAを適用する場合は,また別の式展開となります.)

概要

  • 変数間に相関のある観測値を,相関の無い主成分に変換する直交変換手法
  • 特徴
  • データの特徴抽出
  • ばらつき (分散) が大きい部分,つまり,共通点の無い (変動する) 部分を抽出.

  • データの (次元) 圧縮
  • ばらつき (分散) が小さい部分,つまり,共通する部分を削除.
  • 画像データの圧縮や,文字の識別など

  • 多次元特徴量の可視化
  • 人間が認識できないデータの関係性の調査




  • 例: 次元圧縮 (MNIST) ≒ 特徴抽出


  • アルゴリズム
    1. 全データの重心を求める (平均)
    2. 重心を通り,分散が最大となる方向を見つける (固有値計算)
    3. 2の方向に,新しい軸を引く
    4. 3と直交する方向で,分散が最大となる方向を探す (固有値計算)
    5. 4の方向に,新しい軸を引く
    6. 次元数分だけ繰り返す

    数学的背景の概略
    1. NND pixel(次元)の画像データについて,n 枚目の第 d 主成分 zn,d を求める.
    2. zn,d=ld,1xn,1+ld,2xn,2++ld,Dxn,D

    3. ラグランジュの未定計数法より,zn,d の分散を最大にする問題は,以下の固有値問題に帰着する.
    4. Vl=λdl
      (V: X の分散共分散行列, X: DN 列の画像データ)

    5. 結局,PCA後の画像データ Z は以下のようにして求められる.
    Z=LTX
    (L: X の固有ベクトル行列)




    数学的背景: 証明
    • 1枚のサンプルが D 次元持つときの総合特性 z (の分散 (=情報量) を最大化するように,変換係数 ln を求めたい.)
    • z=l1x1+l2x2++lDxD
      ただし,l=(l1x1 l2x2lDxD)T: 未知の重み係数
      l2=lTl=l21+l21++l2D=1: 制約条件
      z の分散を最大化するように,l を定めたい
    • n 枚目のサインプルにおける第 d 主成分 (d 番目に主要な (寄与率の大きな) 特性) (を定義しておく.)
    • z1(ld)=l1,dx1,1+l2,dx2,1++lD,dxD,1zN(ld)=l1,dx1,N+l2,dx2,N++lD,dxD,N xn(x1 x2xD)T: サンプル1
      X(x1 x2xN): サンプルN




    • z(ld)=XTld の分散 Vz(ld)   (Vz(ld) はスカラ)
      (n 枚サンプル間の第 d 主成分得点 z(ld)=XTld の分散 Vz(ld) を最大化するために,まずは z(ld) を分散の定義に代入して,Vz(ld) を求める.)
    • Vz(ld)=1N(XTld¯XTld)T(XTld¯XTld)=1N(lTdXlTd¯X)(XT¯XT)ld=lTd1N(X¯X)(X¯X)Tld=lTdVld
      ただし, (AB)T=(BTAT),
      V1N(X¯X)(X¯X)T: 元データの分散共分散行列.
      このとき,Vは,下記のようになる.
      V=(1NNn=1(x1n¯xn)21NNn=1(x1n¯xn)(xDn¯xn)1NNn=1(xDn¯xn)(x1n¯xn)1NNn=1(xDn¯xn)2)



    • ラグランジュの未定係数法 (を用いて,Vz(ld) を最大化する.)
    • L: ラグランジュ関数, λd: 第d主成分のラグランジュ関数
      L(l,λd)=Vz(ld)λ(ld21)=lTdVldλ(lTdld1)
    • L 関数の偏微分が0となる条件で L 関数は極値をとる.
    • このとき,分散 VZ(ld) は最大となる. Lld=ld{lTdVldλd(lTdld1)}=Vld+lTdVλd(ld+ld)=2Vld2λdld=2(Vldλdld)=0 ただし,Vは実対象行列より, lTdV=VldLλd=λd{lTdVldλd(lTdld1)}=1(lTdld1)=0           したがって,PCAは次の固有値問題に帰着する. {Vld=λdldlTdld=1



    • ZL を次のように定義する.
    • Z(z(l1) z(l2)z(lD))L(l1 l2lD)X(x1 x2xN)xn(x1 x2xD)T
    • 結局,PCA後の画像データ Z は以下のようにして求められる.
    • Z=LTX

    数学的背景: 性質
    • 次の性質を利用して,PCAの性質を探る.
    • {Vld=λdldlTdld=1
    • d 番目に大きな固有値 λd 分散 VZ(ld)
    • VZ=lTdVld=lTd(Vld)=lTd(λdld)=λdlTdld=λd 結局,分散 VZ(ld) は,固有値 λ の大きな順に最大化される.
      (Z(ld)=XTld を,第 d 主成分と呼ぶ. また,V は実対象行列のため,l は互いに直交し,主成分同士は無相関.)



      定理 1.

      実対象行列は常に対角化可能.

      定理 2.

      行列が対角化可能なとき,固有値の和は元の行列の対角和に等しい.

      証明. A: 実対象行列 (今回は X の分散共分散行列 V )
      P: 固有ベクトル行列
      Λ: 固有値行列
      AP=PΛP1AP=Λ Tr(Λ)=Tr(P1AP)=Tr(AP1P)=Tr(A)
        補題.Tr(A)ni=1ai,iTr(AB)=Tr(BA)




    • このとき,第 d 主成分の寄与率 (情報量) は,次のように与えられる.
    • d()=/=/V=λd/Tr(V)
    • 元の行列 X を平均0,分散1に標準化した場合,V の対角成分は分散なので,全て1 (非対角成分は共分散)
    • したがって,
      d()=λd/Tr(V)=λd/D ただし,VD×D 行列.
    • "固有値の総和 =D "を用いれば,すべての固有値を求めずとも,寄与率を計算できる.

    終わりに
    下記のSlideShareにアップロードしたスライドを示す.(ただし,日本語が表示できなかったため,画像化済み.)
    手間を惜しんで作成したため,完成度は悪いです.手間を惜しまないと無限に時間が掛かる訳ではありますけれど.







    参考資料

    使用ソフト
    PDFの.png化: PDF PNG 変換
    画像のPDF化に使用したソフト: 画像梱包

    使用させていただいたBeamerのテンプレート


    0 件のコメント:

    コメントを投稿