1. 序章

名前が示すように、主成分分析(PCA)は、モデルの主成分の側面を検出します。

このチュートリアルでは、3つの異なるレベルでPCAを提示します。 まず、PCAはどのような回答と情報を提供し、それらをどのように使用できるでしょうか。 次に、PCAのプログラミング方法とそれを実行するために必要なアルゴリズムの概要を説明します。 そして第3に、PCA法の背後にある直感と手法をもう少し詳しく調べます。

2. PCAの概要

モデル内の何かを説明する多くのパラメーターで構成される多くのデータがあるとします。 直感的には、一部のパラメーターが問題の原因となる可能性があり、一部のパラメーターはまったく効果がないことがわかっています。

たとえば、天気を予測する場合、曜日はおそらく重要ではありませんが、日付は重要である可能性があります。 ただし、おそらくより良いパラメータは月または季節でさえあり得ます。 もちろん、気温、気圧、風向、昨日の天気など、他のパラメータもあります。

肝心なのは、選択できるパラメータがたくさんあるということです。 直感的に「合理的な」ものを選びます。 しかし、より良いアプローチは、私たちにとって最良のを定量的に選択する方法を持つことです。

ここで主成分分析が役立ちます。 これは、システムを説明するための最適なパラメーターを見つけるために使用できる定量的な方法です。

3. オッカムの剃刀、PCA、および単純なモデル

オッカムの剃刀の原理はシンプルさです。 モデリングに関して、オッカムの剃刀の原理は、単純なモデルで十分なのに、なぜ複雑なモデルを使用する必要があるのかを問いかけます。

これはまさにPCAが推進していることです。 これは、モデリングしているデータを説明するのに「十分」な座標のセットを見つけるのに役立ちます。

シンプルさの原則は、見た目に美しいだけでなく、データ分析にも利点があります。 PCAによって提供されるものなどの主要なパラメーターに焦点を当てると、ほとんどすべてのデータ分析手法で、その効率と結果の品質が向上します。 モデルの動作に寄与しないパラメーターを含めると、計算の効率が低下するだけであり、他のパラメーターを含めると、問題のノイズに寄与するだけです。

これが何を意味するのかを詳しく見てみましょう。

4. 主成分

主成分とはどういう意味ですか? 2次元データの例を見てみましょう。

 

直感的にグラフを見ると、点の集まりが一種の長方形であることがわかります。 これは、私たちが持っているxyの座標がいくらか関連していることを意味します。 x の値が大きくなると、の大部分(キーフレーズ)のyの値が大きくなります。

長方形の点を通る線を引くことで、2つの座標がどのように関連しているかを確認できます。 これが主成分になります。 したがって、定性的には、yxとともに増加すると言えます。 この増加は主成分の傾きによるものであると定量的に追加できます。

4.1. 主成分は十分ですか?

次に、「主成分は十分ですか?」という定量的な質問をすることができます。 主成分に垂直な成分(または線形代数の言語では直交)は、主成分だけとの関係を記述する場合に発生するエラーを示します。

「はい、主成分で十分です」という答えがあるとします。 次に、2つではなく1つのパラメーターのみを使用してより単純なモデルを作成しました。 これはOccamを幸せにするでしょう。 ただし、さらに、この関係を使用した場合に予想されるエラーの定量的な見積もりがあります。

たとえば、エラーの絶対値の平均を取ることができます。 たとえば、垂直座標はエラーになります。 ただし、主成分分析では、コンポーネントが空間全体をどの程度適切に記述しているかを示すパラメーターも提供されます。

私たちの答えが「いいえ、主成分が十分ではありません」であると仮定します。 ここでは、少なくとも、特定の定量的基準があります。これは、2つのパラメーターを保持することを選択した理由について、主成分のエラーを意味します。

4.2. 主成分をどのように見つけましたか?

上の図から、最初に一連のポイントの中央を見つけることがわかります。 これは、両方の座標の平均です。 これを新しい座標系のoriginとして使用します。 次に、主成分から引かれた赤い線で表されるエラーが最小になるまで、これらの新しい座標を回転させます。

主成分が長方形の点のセットの長辺の中央を通過するとき、誤差が最小化され、主成分の位置が見つかりました。

4.3. 新しい座標系

上記からわかるように、PCAの結果、つまり主成分の検出には、データポイントの平均を中心とする新しい回転座標系の検出が含まれます。 2次元の例では、新しい x 軸が点の主軸に沿って回転します。これは、点のセットを通る「最良の」直線を意味します。

 

このグラフからわかるように、各ポイントの正確な座標は、元のxおよびy座標で表すか、同じポイントを回転したxおよびy座標で表すことができます。 ポイントは同じであると言えますが、元の座標系と新しい座標系のどちらの参照を使用するかによって、ポイントがどこで変わるかを示すために使用される数字です。

4.4. 座標の回転

ある座標系から別の座標系に回転すると、2つの間に正確な変換があります。 情報が失われることはなく、座標を表す2つの数字だけが変更されます。

y座標がx座標とほぼ同じ速度で成長する2次元の例をもう一度見てみましょう。 これは、主成分が元の座標に対して45度の角度にあることを意味します(直角三角形を考えてください。2つの垂直な辺が等しく、角度は45度です)。

これで、グラフを回転して、新しい座標が水平になり、古い座標が傾斜するようになります。

 

ここでも、情報が失われていないことがわかります。 元のグラフのポイントを見ると、xyの値は、ポイント(1,1)とまったく同じか、ほぼ同じであることがわかります。 これは、x座標とy座標が相関していることを意味します。

ただし、座標系を回転させると、新しい座標系になります。 この座標系では、x値は大きくなる可能性がありますが、y値はゼロまたはゼロに近い値です。たとえば、元のシステムの点(1,1)は(√ 2)です。 、0.0)新しい(後でこれがどのように計算されたかを確認します)。

4.5. 結果:PCA成分ベクトル

PCAアルゴリズムの結果は、直交 (2次元空間に垂直)単位ベクトルのセットであり、各コンポーネントに沿って指します。

図では、これらは青い線に沿ったベクトルです。 各コンポーネントは単位ベクトルであり、長さが1であることを意味します。 PCAコンポーネントの単位ベクトルのセットを行列Tの行として設定すると、元の座標を新しい座標に変換するための変換行列が得られます。

上記の2次元の例では、PCAアルゴリズムによって2つの単位ベクトルが得られました。

   

最初の点は主成分の方向に沿っており、2番目の点は主成分の垂線に沿っています。

これらの2つのベクトルを行列の行として設定すると、変換行列が得られます。 変換行列に元の座標を掛けると、新しい座標に同じ点が生成されます。

   

後で、この変換行列がどのように形成されたかについて詳しく説明します。

4.6. 次元削減

これらのPCA成分単位ベクトルを使用して、問題の次元を減らすにはどうすればよいでしょうか。

n 次元空間でPCAを使用すると、n次元空間でも「最適化」回転座標のコンポーネント単位ベクトルの別のセットが生成されます。 ただし、各PCAコンポーネントベクトル vi には、値λiが関連付けられており、そのコンポーネントがデータセットをどの程度説明しているかを定量的に示します

最初の主成分のλ値が最も高くなります。 この例のように、それでデータを説明するのに十分であれば、問題をn次元から1次元の問題に減らしたと言えます。

ただし、それだけでは不十分な場合は、 m コンポーネントの結果のセットが次のようになるまで、追加のコンポーネントを追加できます。私たちのシステムを説明するのに十分です。 このようにして、システムを n -次元システムから m -次元システム、ここで m

上記のより直感的な方法で機能しますが、これを実行して、データをどの程度記述したかを定量的に示すことができますか? 幸いなことに、答えは「はい」です。 各PCAベクトルコンポーネントに関連付けられたPCAコンポーネントのλ値は、そのコンポーネントベクトルがどれほど重要であるかを定量的に測定します

すべてのベクトルがすべてのデータを正確に記述していると考えると、PCAコンポーネントのλ値の合計はデータセットの100% ofを表します。 特定のコンポーネントが説明するデータの量を決定するには、それを合計で割るだけです。

   

したがって、コンポーネント値λを高いものから低いものの順に並べると、最初のmコンポーネントによって記述されるデータの部分は次のようになります。

   

この合計は定量的尺度であり、1.0は、データが100 % d記述されていることを意味し、縮小された次元空間がどれほど優れているかを示します。

5. PCAの計算

主成分分析アルゴリズムを計算するには、基本的に4つのステップがあります。

  1. データをマトリックスに設定します。各行はオブジェクトであり、列はパラメーター値です。欠測データはありません。
  2. データ行列から共分散行列を計算します
  3. 共分散行列の固有値と固有ベクトルを計算します
  4. 固有値を使用して、データの次元を縮小します

固有ベクトルと固有値を計算するコアステップを除けば、アルゴリズムのプログラミングは比較的簡単です。 しかし幸いなことに、ほとんどのプログラミング言語には、固有ベクトルと固有値を計算するための数値ルーチンが含まれています。

次のセクションでは、PCAアルゴリズムの手順について詳しく説明します。

5.1. マトリックスとしてのデータ

PCAは、オブジェクトのセットに由来するデータの最適な表現を見つけるのに役立ちます。

PCAを使用するには、データ内の各オブジェクトを一連の数値記述パラメーターで表す必要があります。 このタイプの表現の典型的な例は、機械学習用のいくつかの標準テストデータセットにあります(いくつかの例については、UCI機械学習リポジトリまたはKaggle を参照してください)。

パラメータのセットを注文すると、各オブジェクトに対応する数値をベクトルに入れることができます。 たとえば、UCI Machine Learning RepositoryIrisデータセットには、次の5つの属性があります。

  1. がく片の長さ(cm)
  2. がく片の幅(cm)
  3. 花びらの長さ(cm)
  4. 花びらの幅(cm)
  5. クラス(Setos、Versicolour、Virginica)

最初の4つは数値属性であり、直接使用できることがわかります。 ただし、5番目のクラスが3つの非数値クラスの1つであることも確認してください。 ただし、各クラスに番号を割り当てることで、これを簡単に解決できます。

  1. セトサ
  2. Versicolour
  3. ヴァージニカ

これで、データセット内の各虹彩オブジェクトをベクトルで表すことができます。たとえば、データセット内の最初のオブジェクトは次のとおりです。

5.1, 3.5, 1.4, 0.2, 1

データセットは、各クラス(属性5)からの50個の150個のオブジェクトで構成されています。 各オブジェクトベクトルをデータセットマトリックスの行として配置すると、最終的に、属性に対応する5つの列と、各データオブジェクトに対応する150の行を持つマトリックスが作成されます。 この図は、プロセスを要約したものです。

 

また、PCAに必要なデータは、各列の平均値を基準にして調整する必要があることにも注意してください。 私たちのデータでは、パラメータのそれぞれの平均は次のとおりです。

5.84, 3.05 , 3.76 , 1.20, 2

これは、最初のオブジェクトが次の値を持つことを意味します。

-0.74, 0.45, 2.36, -1, -1

次のセクションのアルゴリズムでは、この調整はアルゴリズムの一部として行われます。

5.2. プログラミングの概要

PCAメソッドをプログラムするには、一連の数値ルーチンが必要です。 より単純なものは簡単にプログラムでき、より複雑なものは標準のパッケージまたはライブラリにあります。 ここでは、PCA疑似コードで使用される疑似関数としてそれらをリストします。

  • FormDataAsMatrix(original、matrix):元のデータ構造からデータマトリックスを形成します(プログラミング言語とデータによって異なります)。 行列の各行は、各データポイントのベクトルです。
  • AdjustMatrixToMean(A):列の平均が検出され、列の値が平均に調整されます。 これは、各列の値から列の平均を差し引く必要があることを意味します。 この調整は、PCAアルゴリズムの要件です。
  • Mult(A、B、C):行列 A m行にk列)を行列B[で乗算しますX108X](k行×n列)結果を C m行×n列)。
  • TransposeMatrix(A、T):行列 A m行をn列)に転置し、結果をTに入れますn行×m列)。
  • EigenvectorsAndEigenvalues(A、E、V):正方行列 A n行とn列)が与えられた場合、[X133X ] n 固有ベクトルとそれぞれの固有値を、それぞれ行列 E (n行n列)とベクトル V n 値)に入れます。 これがPCAアルゴリズムの中心です。

5.3. PCAアルゴリズム

PCAアルゴリズムは、基本的に、前のセクションにリストされた関数を使用する一連の操作(ループまたは最適化なし)です。 示されているアルゴリズムは、何らかの表現でモデリングデータを入力として受け取ります。 これは、JavaやC ++のクラスなどのデータ構造、またはCのstructなどです。

アルゴリズムの重要なステップは、パラメーター間の相関行列を作成し、この行列の固有ベクトルと固有値を見つけることです。

ここにリストされているアルゴリズムは、出力として新しい座標のセットを返します。 固有値情報を使用して、「必須」座標のみが最終的な行列に与えられます。

完全な固有値行列のサイズは、n×nです。ここで、nはパラメーターの数です。 最終的な行列のサイズはm行です。ここで、km未満です。

6. メソッドの背後にある原則

6.1. ベクトル基底セット

PCAアルゴリズムのコアには、座標の変換が含まれます。 これは線形代数の基本原理であり、同じベクトルを異なる基本ベクトルの異なる線形結合、異なる基底ベクトルとして表すことができます。 必要な基底ベクトルの数によって、ベクトルシステムの次元が決まります。

元の例で使用されている元の座標系では、基底ベクトルは次のとおりです。

(1)  

したがって、(2,2)などのグラフ上の点は、次の2つの点の線形結合として表すことができます。

   

(2,2)を指すベクトルは、方向(1,0)の2倍と方向(0,1)の2倍になることによって求められます。

 

 

最初の例のように座標系を45度回転させると、基底ベクトルが変化します。 回転系では、まだ2つのベクトルが必要ですが、現在は次のようになっています。

   

したがって、元の座標の点(2,2)は、新しい座標では次のようになります。

   

なぜなら、基底ベクトルを掛けると:

   

このグラフでは、太い線で基底ベクトルが表示され、元の点(2,2)がどのように変換されるかがわかります。

 

6.2. 次元削減

前のセクションで、 n- 次元空間の座標( n が2の場合の例)は、さまざまな基底ベクトルを使用してさまざまな方法で表すことができることを確認しました。 元の空間または変換された空間では、すべての空間を正確に記述するために、 n ベクトル(例では2 )が必要です。

ただし、スペース内のすべてのポイントが線に沿っているという特殊なケースがある場合はどうなりますか。たとえば、次のようになります。

 

単一のパラメーターcと単一のベクトル(1,1)を使用して、すべての点を記述できます。

   

この場合、どの点にも2番目のベクトルは必要ありません。 線は二次元空間で描かれていますが、情報は一次元空間で記述できます。 この例では、これは(1,1)などの単一のベクトルです。 または、座標系を回転させると、1次元空間に点を描くことができます。

 

この例は、2次元から1次元に移行する際の次元削減のプロセスを示しています。 PCAの目的は、この最適縮小座標のセットを見つけることです。

最初の例をもう一度見ると、2次元空間が1次元空間に縮小されていることがわかります。

主成分に垂直な座標は、1つの次元のみを使用する場合に予想される誤差と見なすことができます。

6.3. ジオメトリと座標投影のビット

これらのコンポーネント単位ベクトルは、古い座標から新しい回転座標への変換を見つけるために使用されます。 これは、古い座標を新しいに投影することによって行われます。 つまり、ポイント x を元の方向に移動すると、新しい軸に沿ってどのくらい移動しますか。

 

数学的に言えば、一方のベクトルのもう一方への射影は、2つのベクトルの内積です。

この図は、ドット積射影の3つのケースを示しています。正確には、ある程度、相関関係はありません。

 

1つ目は、ベクトルが同じで、内積が1.0の場合です。 最後のベクトルは直交(垂直)であり、一方が他方に投影されていないため、内積はゼロです。 そして真ん中のものはその中間です。

6.4. 変換行列

PCAアルゴリズムの結果であるPCA成分単位ベクトルのセットは、変換行列を構成します。

直角三角形の斜辺は元の座標の投影であり、新しいx’座標になります。 y’コンポーネントがないため、ゼロです。

これらの引数を使用して、座標をθ(この場合は-45度(時計回りに回転))回転させると、次の式から一般的な変換行列Tを作成できます。元の座標(x、y)から回転した座標(x’、y’)

   

   

   

この変換行列は、この例でPCAを実行した結果とまったく同じです。

この変換行列に元の座標を掛けると、新しい座標が得られます。

   

したがって、たとえば(1,1)の新しい座標を取得するには、変換行列を乗算するだけで済みます。

   

しかし、ベクトル内の√ 2 / 2のような数字はどこから来たのでしょうか? これを定量的に理解するには、いくつかの非常に単純な三角形を見ると役立ちます。 古い座標の新しい座標への投影がどのように形成されるかを確認できます。

まず、回転した主座標が元の座標に対して角度θであることに注意してください。 元のxに対する新しい座標x’の長さは、余弦関数、つまり x´= x / cos(θ)[を介して行われます。 X141X]。

 

θが45度である特殊なケースでは、座標(1,1)が次のように変換されることがわかります。

   

6.5. 共分散行列

単一のパラメーターの分散は、そのパラメーターの値の広がりの尺度です。 NパラメーターのセットXiの分散は、以下を使用して計算されます。

Var( X )=Σ( X i mx 2 / N [X76X ]

ここで、 mx はすべての値の平均、 X iです。

2つのパラメーターの共分散は、2つのパラメーターが一緒に移動する範囲を測定します。 ポイントの広がりはどのくらい一緒ですか? 2つの変数XYの間の共分散を計算するには、次の式を使用します。

Cov( X Y )=Σ( X i mx )( Y [ X78X] i my )/ N

直感的に、PCA法で共分散が重要である理由がわかります。 PCAの目標は、一緒に移動する変数のセットをグループ化することです。 つまり、大きな共分散値がある場合は、同じコンポーネントに含まれている必要があります。

すべてのパラメーター間の共分散のすべての組み合わせを収集する場合は、共分散行列を作成します。 共分散行列の各要素cijは、XiXjの間の共分散を与えます。

行列を使用すると、共分散行列を計算するのは非常に簡単です。 基本的に3つのステップがあります。

  1. すべてのNオブジェクトi m について、各パラメーターjの平均mjを計算します。 ] j =(∑ i x ij )/ N
  2. 各オブジェクトi、の対応するパラメーター j からこの平均を減算して、平均調整済みデータマトリックス A aij=xijを形成します。 -mj。
  3. A の転置をそれ自体で乗算することにより、共分散行列Vを計算します。V=ATA。

PCA法は、共分散行列 V の固有ベクトルと固有値を見つけることにより、成分のセットを決定します。

6.6. 固有値と固有ベクトル

共分散行列の固有値と固有ベクトルを計算することは、データセットの主成分を見つけるための鍵です。

与えられたベクトルxを任意の変換行列Mで変換すると、通常、別の方向を指す別のベクトルyが得られます。 ただし、ベクトルのセット xi があり、 M を掛けると、ベクトルは係数λiでのみスケーリングされます。

Mx=λx

別の方向を指すベクトルyになる代わりに、結果は同じ方向 xi になりますが、パラメーターλiによってスケーリングされるだけであることがわかります。 。

任意のベクトルyの変換はどうですか? ベクトルyは、固有値のセット xi で表すことができます。これは、固有ベクトルが異なる基底を表すだけだからです。

y = ∑ i a i x i

したがって、変換を行うと、固有ベクトルの新しい線形結合が得られます。

M y = M(∑ i a i x i
= ∑ i M(a i x i )= ∑ i a i M x i
= ∑ i a iλi x i

さて、先に見たように、固有値のサイズは、データを説明する際の固有ベクトルの強さを反映しています。 合計の各項に固有値が乗算されるため、その項の寄与は固有ベクトルの強度に依存します。

したがって、固有値が小さい項は、ベクトル y にあまり寄与しないため、十分に小さい場合は無視できます。

7. 結論

このチュートリアルでは、主成分分析(PCA)の基本を3つの基本レベルで説明しました。

最初に、PCAがデータの理解に役立つ理由と、PCAを使用してデータの次元を削減する方法について概説しました。 次に、PCAのプログラミング方法の基本について説明しました。 最後に、PCAの背後にある基本的な概念についてさらに深く掘り下げました。