主成分分析(PCA)(主成分分析)

この記事では、主に PCA の数学的導出について説明します。PCA の数学的導出は、線形代数の知識で行うことができます。

deeplearningbook.org の書籍 2.12 を参照してください。例: 主成分分析

第 16 章 Li Hang の統計的学習法の主成分分析を参照してください。

この記事の内容は次のとおりです。

目次

使用した知識ポイント

PCA の数学的導出

PCA 分散化

特異値分解による計算方法

結論は


最初に、使用される 2 つの線形代数の知識ポイントについて話しましょう。

使用した知識ポイント

1. 行列の対角要素の合計 (トレース演算子)

Tr として示される行列の対角要素 (トレース演算子) の合計は、次のように定義されます。

次のプロパティがあります。

1 行列のトレースは、その転置のトレースに等しい

2 循環交換

 

 2. 行列のフロベニウス ノルム:

 次のプロパティがあります。

 さて、2つの小さな知識ポイントを終えたら、PCAを開始します〜

PCA の数学的導出

\mathbb{R}^{n} 空間に m 個の点があり \{\boldsymbol{x}^{(1)},\boldsymbol{x}^{(2)},\cdot \cdot \cdot ,\boldsymbol{x}^{(m)} \}、各点は n 次元のベクトルです。m\times n これらのポイントを保存するには、メモリ空間の単位を使用する必要があります. スペースが限られている場合は、元の情報と同じ情報を保存するために使用するスペースを減らして、情報の削減をできるだけ小さくすることができます1 つの方法は次元削減です. 各点 について \boldsymbol{x}^{(i)}\in \mathbb{R}^{n}, 対応する点 を見つけます \boldsymbol{c}^{(i)}\in \mathbb{R}^{l}l < nこのようにして, 元のデータの格納スペースを減らすことができます. 数式でf(\boldsymbol{x})=\boldsymbol{c}表現 する と ,\boldsymbol{x}\approx g(f(\boldsymbol{x})) です.を見て、任意の点の元のベクトルと次元削減後のベクトルを表現するために と を後で使用します 。関数はエンコード関数 (エンコード関数) であり、  関数はデコード関数 (デコード関数) です。\boldsymbol{x}\boldsymbol{x}^{(i)}c\boldsymbol{c}^{(i)}\boldsymbol{x}\boldsymbol{c}へg

PCA は、このような次元削減方法を提供します。

公式導出開始~

PCA の導出は、復号化関数から始まります. 復号化関数をできるだけ単純にするために、行列乗算の方法は、その中g(\boldsymbol{c})=\boldsymbol{D}\boldsymbol{c}\boldsymbol{D}\in \mathbb{R}^{n\times l}. 制限がないと\boldsymbol{D}最適な値を計算するのが難しいので、 \boldsymbol{D} 何らかの制限を加えることで、期待する効果が得られるかどうかを確認します。実際、 \boldsymbol{D} 各列は直交であり、各列は単位ベクトルであると仮定できます.\boldsymbol{D}この制限 を作成した後、\boldsymbol{D}最適なものを計算するのははるかに簡単になり、これを得ることができます\boldsymbol{D}.

1. 目的関数:

その中f(\boldsymbol{x})=\boldsymbol{c}g(\boldsymbol{c})=\boldsymbol{D}\boldsymbol{c}、私たちの目標は、最適な を見つけることであるとします \boldsymbol{D}

2.  関数\boldsymbol{D} を表すために使用します。つまり、次を表すために使用します 。へf(\boldsymbol{x})=\boldsymbol{c}\boldsymbol{D}\boldsymbol{c}

上記の最初のステップの式は、最適値を解くための式です。最良のものを求めているので、式には既知 と未知\boldsymbol{D}しか存在できませんが 、式には未知の関数があるので 、その関数、つまり既存の和を表現する 必要があります。\boldsymbol{x}\boldsymbol{D}へへ\boldsymbol{c}\boldsymbol{x}\boldsymbol{D}

どのように表現しますか?目標は変わっていません。ステップ 1 の式を各サンプルに分解できます。次に、それぞれの最適なものを見つけ、\boldsymbol{c} 最適なものを解決する\boldsymbol{c}過程で、\boldsymbol{x}合計\boldsymbol{D}がわかっていると考えます。解くための最適な\boldsymbol{c}式は次のとおりです。  

行列形式に変換できます。

次に展開します。

\boldsymbol{x}^{T}g(\boldsymbol{c}) と は等しいのでg(\boldsymbol{c})^{T}\boldsymbol{x} 、どちらも実数であり、次のように簡略化できます。

1 つの項目を省略すると\boldsymbol{x}^{T}\boldsymbol{x}(最適化とは関係がないため)、次のようになります。

g(\boldsymbol{c}) に置き換えられ ます \boldsymbol{D} :

 単位行列による行列の乗算は変わらないため、次のようになります。

 行列計算演算を使用して を \boldsymbol{c} 微分し、導関数を 0 に設定すると、次のようになります。

 

最適なものを見つけて \boldsymbol{c} 、その式を目的関数に代入します。

 3. ステップ 1 の目的関数に戻る

ノルムをノルムの 2 乗に変換し、 このときベクトルになるl=1と 仮定し\boldsymbol{D}  て書き留める\boldsymbol{d} と、

(l=1ここで最初に証明した状況、l\geq 2導出はこれに似ています)

\boldsymbol{d}^{T}\boldsymbol{x}^{(i)}  これは実数な ので 、ベクトルの左\boldsymbol{d}^{T}\boldsymbol{x}^{(i)} にシフトできます。\boldsymbol{d}

\boldsymbol{d}^{T}\boldsymbol{x}^{(i)} これは実数である ため、その転置はそれ自体です。

キャンセルできます \和  。 前に説明したフロベニウス ノルム\boldsymbol{X}\in \mathbb{R}^{m\times n}を使用しましょ う\boldsymbol{X}_{i,:}=\boldsymbol{x}_{(i)}^{T}

制限を無視して\boldsymbol{d}^{T}\boldsymbol{d}=1、前に説明した最初の知識ポイントを使用して、前の式を行列形式に単純化しましょう。

次に、行列の乗算を展開します。

 前に述べたことTr(\boldsymbol{AB})=Tr(\boldsymbol{BA}) ( take \boldsymbol{X}^{T}\boldsymbol{X}as \boldsymbol{A}\boldsymbol{d}\boldsymbol{d}^{T}as \boldsymbol{B}) を使用して、以下を取得します。

同様に、今回は を利用可能として扱い\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d}\boldsymbol{d}^{T}ます\boldsymbol{A}\boldsymbol{d}\boldsymbol{d}^{T}\boldsymbol{B}

別の制約 があることを忘れないでください。\boldsymbol{d}^{T}\boldsymbol{d}=1これは次のように代入できます。

 

 

  前述のようにTr(\boldsymbol{AB})=Tr(\boldsymbol{BA}) 、 (take \boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d}as \boldsymbol{A}, \boldsymbol{d}^{T}as \boldsymbol{B}) は以下を取得できます。

\boldsymbol{d}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d} これは実数なので 、前のものを削除できますTr

=argmax_{d} (\boldsymbol{d}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d})  の対象となる \boldsymbol{d}^{T}\boldsymbol{d}=1

これまでのところ、私たちが望む形に単純化されています.\boldsymbol{X}^{T}\boldsymbol{X}これは実対称行列であるため、  最大の固有値に対応する固有ベクトルを\boldsymbol{d}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d} 最大化 できます.具体的な証明はここには書きませんが、インターネットで検索できます〜\boldsymbol{d}

私たちが証明するの は、  、 、簡単に推測できる特殊l=1なケースです。l = 2\boldsymbol{D}=[\boldsymbol{d}_{1},\boldsymbol{d}_{2}]

\boldsymbol{D}^{*}=argmax_{d1,d2} (\boldsymbol{d}_{1}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d}_ {1} + \boldsymbol{d}_{2}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d}_{2} )

\boldsymbol{d}_{1}^{T}\boldsymbol{d}_{1}=1 、  \boldsymbol{d}_{2}^{T}\boldsymbol{d}_{2}=1 、 \boldsymbol{d}_{2}^{T}\boldsymbol{d}_{1}=0対象 \boldsymbol{d}_{1}^{T}\boldsymbol{d}_{2}=0

の最大固有値を \boldsymbol{d}_{1}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d}_{1} 最大化する  固有ベクトル は\boldsymbol{d}_{1} です。\boldsymbol{X}^{T}\boldsymbol{X}

\boldsymbol{d}_{1}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d}_{1}最大値 に達することを基準として\boldsymbol{d}_{2}最適なものは に直交する単位ベクトル\boldsymbol{d}_{2} であり、 最大値に達する\boldsymbol{d}_{1}ものは2 番目に大きい固有値の固有ベクトル です。\boldsymbol{d}_{2}^{T}\boldsymbol{X}^{T}\boldsymbol{X}\boldsymbol{d}_{2}\boldsymbol{d}_{2}\boldsymbol{X}^{T}\boldsymbol{X}

 その時はl>22 の時と同じでした。

PCA 分散化

数学的証明のプロセスでは、必要な\boldsymbol{X}^{T}\boldsymbol{X}最初の 大きな固有値l に対応する固有ベクトルのみが必要です。しかし、考慮しなければならない問題があります。それは、各次元データの次元の大きな違いです。データ内の特定の特徴 (行列の列) の値が特に大きい場合、誤差計算全体で大きな割合を占め、新しい次元空間に射影されたベクトルは最大値に近づこうとします。比較的小さな値を持つ機能を無視する一方で、PCA の前に各機能の重要性がわからないため、大量の欠落情報が発生する可能性があります。したがって、分散化が必要です。

分散化後、マトリックスの各列のデータをこの列の平均値から差し引く必要があることを意味します。

分散化後の行列を とすると\boldsymbol{Y}、PCA は \boldsymbol{Y}^{T}\boldsymbol{Y} 前の l 大きな固有値に対応する固有ベクトルです。

実際、  これはの共分散行列\frac{1}{m-1}\boldsymbol{Y}^{T}\boldsymbol{Y} です。\boldsymbol{X}

特異値分解による計算方法

従来の主成分分析は、データの共分散行列の固有値分解によって実行されます。一般的に使用される方法は、データ行列の特異値分解です。

データの共分散行列の固有値分解によって主成分を見つけることについてはあまり説明しませんが、特異値分解の方法によって主成分を見つけることについて話しましょう。特異値分解は、Singular Value Decomposition (SVD) (Singular Value Decomposition)を参照できます

m\times n 実数行列 の場合\boldsymbol{A} 、そのランクが であると仮定する とr 、0<k<r行列は \boldsymbol{A} 切り捨てられた特異値分解であることがわかります 。

\boldsymbol{A_{m\times n}} \approx \boldsymbol{U}_{m\times k}\boldsymbol{D}_{k\times k}\boldsymbol{V}_{n\times k}^ {T}

 新しい m\times n マトリックス  を定義する\boldsymbol{X}^{'} 

\boldsymbol{X}^{'}=\frac{1}{\sqrt{m-1}}\boldsymbol{Y}  (\boldsymbol{Y}は分散化後のマトリックス)

それで \boldsymbol{X}^{'T}\boldsymbol{X}^{'}=(\frac{1}{\sqrt{m-1}}\boldsymbol{Y})^{T}(\frac{1 }{\sqrt{m-1}}\boldsymbol{Y})=\frac{1}{m-1}\boldsymbol{Y}^{T}\boldsymbol{Y}

の共分散行列である\boldsymbol{X}^{'T}\boldsymbol{X}^{'} こと がわかります \boldsymbol{X}S_{\boldsymbol{X}}

主成分分析は、S_{\boldsymbol{X}}共分散行列の\boldsymbol{X}^{'T}\boldsymbol{X}^{'}固有値。

\boldsymbol{X}^{'}切り捨てられた特異値分解が であると仮定すると\boldsymbol{X}^{'}\approx \boldsymbol{U}_{m\times k}\boldsymbol{D}_{k\times k}\boldsymbol{V}_{n\times k}^{T } 、 \boldsymbol{V} の列ベクトルは の \boldsymbol{X} 最初の k 主成分です。したがって、\boldsymbol{X}得られた主成分は\boldsymbol{X}^{'}、得られた特異値分解によって実現できる。

結論は

PCA は次元削減手法です。\boldsymbol{X}共分散行列 の\frac{1}{m-1}\boldsymbol{Y}^{T}\boldsymbol{Y} 最初のl 大きな固有値に対応する固有ベクトルを取得し、これらの固有ベクトルを各列としてまとめて復号化行列を取得します\boldsymbol{D} 。エンコーディング マトリックスは\boldsymbol{D}^{T}.

実装方法は、元のデータ行列の共分散行列の固有分解を計算することができ、また、分散された元のデータ行列の特異値分解を計算することもできます。

はぁ~やっと終わった~

おすすめ

転載: blog.csdn.net/qq_32103261/article/details/120592736