固有値分解から共分散行列へ: PCA アルゴリズムの詳細な分析と実装

固有値分解から共分散行列へ: PCA アルゴリズムの詳細な分析と実装

この記事では、まず固有ベクトルと行列との関係を簡潔かつ明確に紹介し、次にそれを基に共分散行列と主成分分析の基本概念を説明します。最後に、共分散行列と主成分分析を組み合わせて、データの次元削減を実現します。この記事では、さまざまな重要な概念を理論的に説明するだけでなく、Python を使用してデータの次元削減を段階的に実現します。

まず、この記事の固有ベクトルは数学的な意味での固有ベクトルであり、入力固有値で構成されるベクトルではありません。数学的には、線形変換の固有ベクトルは、変換によって方向が変化しない非退化ベクトルです。この変換によってこのベクトルが拡大縮小されるスケールは、その固有値と呼ばれます。線形変換は通常、その固有値と固有ベクトルによって完全に記述できます。行列を物理的な動きとして考える場合、最も重要なのは動きの方向 (固有ベクトル) と速度 (固有値) です。物理的な動きは方向と速度だけで記述できるため、行列も固有ベクトルと固有値だけで記述できます。

実際、線形代数では、行列はさまざまなスカラーまたは変数で構成される表です。Excel テーブルと本質的な違いはありません。行列間の一部の演算が数学的に定義されているだけです。行列演算のルールは、実際の内部値とは関係ありません。計算中にどの位置でどの演算を実行する必要があるかを定義するだけです。行列は一連の動作規則を定義するテーブルに相当するため、実際には変換に相当します。この変換(物理的な動き)は、固有ベクトル(方向)と固有値(速度)によって完全に記述できます。

線形変換

線形変換を説明する前に、行列演算とは何かを理解する必要があります。行列は、行列内の値に対して加算や乗算などの演算を均一な方法で実行できるため、非常に効率的で便利です。以下に示すように、ベクトル v を左側の行列 A で乗算すると、新しいベクトル b が得られます。これは、行列 A が入力ベクトル v に対して線形変換を実行し、線形変換の結果が b であることを意味します。したがって、行列演算 Av = b は、ベクトル v が変換 (行列 A) によって変換され、ベクトル b が得られることを意味します。次の例は、行列の乗算 (このタイプの乗算はドット積と呼ばれます) がどのように実行されるかを示しています。

したがって、行列 A はベクトル v をベクトル b に変換します。次の図は、行列 A が、より短くて低いベクトル v をより長くて高いベクトル b にマッピングする方法を示しています。

他の正のベクトルを行列 A に入力すると、入力された各ベクトルは新しい空間に投影され、右方向に高く長くなります。

すべての入力ベクトル V を標準テーブルに配置できると仮定します。つまり、

行列は、すべての入力ベクトル V を、以下に示すように、すべての出力ベクトルで構成される B である新しい空間に投影できます。

次の図は、入力ベクトル空間と出力ベクトル空間の関係を示しています。

マトリックスを突風と仮定すると、それは具体的な力を通じて目に見える結果を生み出します。風が吹く方向は固有ベクトルなので、固有ベクトルは行列を変換する必要がある方向を示します。

上の図からわかるように、固有ベクトルの方向は変化せず、すでに行列がすべての入力ベクトルを向かせたい方向を指しています。したがって、固有ベクトルの数学的定義は次のようになります。非ゼロ行列 A とスカラー λ がある場合、ベクトル x が存在し、それが次の関係を満たす場合、x は固有ベクトルであり、λ は固有値です。

固有ベクトルは線形変換の不変軸でもあり、これに沿ってすべての入力ベクトルが圧縮または伸張されます。線形変換における線形性とは、直線軸に沿った変換の特性を指します。一般的に、正方行列の各次数には複数の固有ベクトルがあります。たとえば、3*3 行列には 3 つの固有ベクトルがあり、n 次正方行列には n 個の固有ベクトルがあります。各固有ベクトルは、1 次元での線形変換の方向を表します。

固有ベクトルは行列変換に関する主要な情報を抽出するため、行列分解、つまり固有ベクトルに沿って行列を対角化する場合に非常に重要です。これらの固有ベクトルは行列の重要な特徴を特徴付けるため、ディープ ニューラル ネットワークのオートエンコーダーと同様のタスクを実行できます。ヨシュア・ベンジオの言葉を引用します。

多くの数学的対象は、より基本的な構成要素に分解することによって、よりよく理解できるようになります。なぜなら、それらを特徴付けるために選択した特性以外に、それらの一般的な特性がいくつか発見されるからです。たとえば、整数は素因数に分解できます。整数の表現方法は 2 進数を使用するか 10 進数を使用するかによって異なりますが、整数は常に複数の素因数 (12 = 2 × 2 × 3 など) で表現できるため、この分解の特性はまさに必要な安定性特性です。

整数を素因数に分解してその自然な特性を得ることができるのと同様に、行列を分解してその機能的な特性を得ることもできますが、この特性情報は、行列が要素の配列として表される場合は明らかではありません。最も一般的な行列分解は固有分解です。つまり、行列を一連の固有ベクトルと固有値に分解します。

主成分分析(PCA)

PCA は、高次元データ (画像など) 内のパターンを見つけるためのツールです。 PCA は、機械学習の実践において、ニューラル ネットワークへの入力用にデータを前処理するためによく使用されます。 PCA アルゴリズムは、データを集約、回転、スケーリングすることで、分散の低い次元をいくつか削除し、次元削減を実現できます。これにより、ニューラル ネットワークの収束速度と全体的な効果が向上します。

PCA アルゴリズムをさらに理解するには、平均、標準偏差、分散、共分散といった基本的な統計概念も定義する必要があります。

サンプル平均は、以下に示すように、すべてのサンプル X の平均値として簡単に表すことができます。

サンプル標準偏差はサンプル分散の平方根です。つまり、各サンプル ポイントとサンプル平均の間の平均距離です。 n 個のサンプルの分散は n-1 でのみ除算されます。これは、サンプルが真の分布の推定値にすぎず、サンプル分散が真の分散の推定値にすぎないためです。大学の確率論と数理統計の教科書では、標本分散を n (2 次中心モーメント) で割ると、真の分散の一貫した推定値になりますが、不偏推定値ではない、つまり標本分散には体系的な偏りがあることが証明されています。したがって、系統的偏差を排除するには、2 次中心モーメントを調整する必要があります。以下に示すように、サンプル標準偏差 s と分散 var(X) はどちらも不偏推定値です。

サンプル標準偏差と分散はどちらも、まず距離を二乗し、次に平方根を取ることによって得られるため、距離は正でなければならず、打ち消されることはありません。次のデータ ポイント (散布図) があるとします。

PCA は線形回帰と同様に、すべてのデータ ポイントを通る解釈可能な直線を構築しようとします。各直線は「主成分」、つまり独立変数と従属変数の関係を表します。データの次元数は主成分の数、つまり各データ ポイントの特徴的な次元です。 PCA の役割は、これらの特徴を分析し、最も重要なものを選択することです。 PCA は基本的に、最大分散の方向を主な特徴として取り、各直交方向のデータを「無相関化」します。つまり、異なる直交方向でデータを無相関にします。通常、情報の分散は大きく、ノイズの分散は小さいと考えられています。信号対雑音比は信号とノイズの分散比であるため、投影されたデータの分散が可能な限り大きくなることが望まれます。したがって、最良の k 次元特徴は、n 次元のサンプル ポイントを k 次元のサンプル ポイントに変換した後、各次元のサンプル分散が大きいことであると考えられます。

下の図に示すように、第 1 主成分は散布図を直線 (赤) の形で 2 つの辺に分割し、最大の分散を保持します。この直線 (赤) に投影されたデータ ポイントは平均 (白抜きの点) からの分散が最も大きいため、つまり、すべての青い点から灰色の線までの平均距離が最大の分散であるため、この主成分は最も多くの情報を保持します。

上図のように、第 2 主成分が赤い線 (第 1 主成分) に垂直な灰色の線であると仮定します。データ ポイントが第 2 主成分に投影されると、サンプル平均 (中空の点) からの分散は非常に小さくなります。これは、データ ポイントから赤い線までの平均距離です。したがって、赤い線は *** の主成分です。

共分散行列

行列は、あるベクトルを別のベクトルに変換する手段であることはすでに説明しました。また、行列は、すべてのデータに対して特定の方向に作用する力と考えることもできます。同時に、変数間の相関関係は分散と共分散によって表現できることもわかっており、最適な次元削減を実現するために最大の分散を維持することが期待されます。したがって、分散と共分散を統合し、両方を内積の形式で表現できるようにすると、行列の乗算と密接に関連します。したがって、これを行列乗算の形式で表現することができます。入力行列 X に 2 つの特徴 a と b があり、合計で m 個のサンプルがある場合、次のようになります。

X に X の転置を掛けると、共分散行列が得られます。

この行列の対角線上の 2 つの要素は 2 つの特徴の分散であり、他の要素は a と b の共分散です。これら 2 つは 1 つの行列に統合されているため、共分散行列を使用してデータ ポイント間の分散と共分散を記述できます。つまり、観測したデータを経験的に記述できます。

共分散行列の固有ベクトルと固有値を見つけることは、絶対分散を保存する直線または主成分を近似することと同じです。固有ベクトルは主成分の方向を追跡するため、分散軸と共分散軸はデータが最も変化する可能性のある方向を示します。上記の導出に基づくと、最適化目標を達成することは共分散行列を対角化することと同等であることがわかります。つまり、対角線以外のすべての要素が 0 に設定され、固有値が対角線の上から下に並べられます。実対称行列として、その主な特性の 1 つは、共分散行列を直交対角化できるため、固有ベクトルと固有値に分解できることです。

共分散行列を固有ベクトルと固有値に分解すると、固有ベクトルは変換方向を表し、固有値はスケーリングスケールを表します。この場合、固有値はデータ間の共分散を表します。固有ベクトルを固有値の降順で並べると、主成分が重要度順に並びます。

2 次正方行列の場合、共分散行列は次のようになります。

上記の共分散行列では、1.07 と 0.64 はそれぞれ変数 x と変数 y の分散を表し、下対角線の 0.63 は変数 x と y 間の共分散を表します。共分散行列は実対称行列(つまり、Aij = Aji)なので、直交化によって確かに対角化できます。これら 2 つの変数の共分散は正であるため、これら 2 つの変数の分布は正の相関関係にあります。下の図に示すように、共分散が負の場合、変数間には負の相関関係があります。

変数間の共分散がゼロの場合、変数は相関しておらず、線形関係は存在しないことに注意してください。したがって、2 つの変数の共分散が大きいほど相関は大きくなり、主成分への投影後の損失は小さくなります。共分散と分散の関係を理解するために、共分散と分散の計算式を検討することもできます。

共分散を計算する利点は、共分散の正、負、またはゼロの値を通じて、高次元空間内の 2 つの変数の関係を調べることができることです。一般に、共分散行列はデータの形状を定義し、共分散は対角線に沿って対称となる分布の強さを決定し、分散は分布が x 軸または y 軸に沿って対称となる傾向を決定します。

基底変換

共分散行列の固有ベクトルは互いに直交しているため、変換は x 軸と y 軸の 2 つの基底軸を主成分の 1 つの基底軸に置き換えることと同じです。つまり、データセットの座標系を、主成分を基軸とする新しい空間に変換します。もちろん、これらの主成分は最大分散を保持します。

上で述べた x 軸と y 軸は行列の基底と呼ばれます。つまり、行列のすべての値はこれら 2 つの基底で測定されます。ただし、行列の基底は変更できます。通常、固有ベクトルのセットは、行列の異なる基底座標のセットを形成でき、元の行列の要素はこの新しい基底のセットで表現できます。

上の図では、同じベクトル v が異なる座標系でどのように異なって表現されるかを示しています。黒い実線は xy 軸座標系を表し、赤い破線は別の座標系を表します。最初の座標系ではv = (1,1)、2番目の座標系ではv = (1,0)です。したがって、行列とベクトルは異なる座標系で同等に変換できます。数学的には、n 次元空間には一意の記述がないため、等価変換行列の基底によって問題が簡単に解決される可能性があります。

*** PCA アルゴリズムの基本的な概念と手順を簡単にまとめてみましょう。

まず、行列は変換と同等であり、変換の方向は固有ベクトルであり、変換のスケールは固有値であることを理解する必要があります。 PCA の本質は、最大分散の方向を主な特徴として使用し、各直交方向のデータを「無相関化」すること、つまり、異なる直交方向で相関がないようにすることです。したがって、次元削減の効果を得るために、最も関連性の高い特徴を主成分に投影することが望まれます。投影基準は、最大の分散を保持することです。実際の動作では、特徴量間の共分散行列を計算し、共分散行列を固有分解することで固有ベクトルと固有値を取得したいと考えています。固有値を大きいものから小さいものの順に並べると、対応する固有ベクトルで構成される行列が次元削減後に必要なデータになります。以下では、PCA アルゴリズムを段階的に実装します。

入力データ:

  1. numpyをnpとしてインポートする
  2. x = np.array ([2.5,0.5,2.2,1.9,3.1,2.3,2,1,1.5,1.1])
  3. y = np.array ([2.4,0.7,2.9,2.2,3,2.7,1.6,1.1,1.6,0.9])

正規化されたデータ:

  1. 平均x = np .平均(x)
  2. 平均y = np.平均(y)
  3. スケール x = x - 平均 x
  4. スケール y = y-平均 y
  5. データ= np .matrix([[scaled_x[i],scaled_y[i]]、i が範囲(len(scaled_x))内であるとき)

散布図を描いてデータの分布を表示します。

  1. matplotlib.pyplot を plt としてインポートします。
  2. plt.plot(スケールx、スケールy、'o')

共分散行列を求めます。

  1. cov = np.cov (スケールx、スケールy)

共分散行列の固有値と固有ベクトルを見つけます。

  1. eig_val、 eig_vec = np.linalg.eig (cov)

固有ベクトルを見つけた後、次元削減後のデータの次元 k を選択する必要があります (n 次元データは k 次元データに削減されます)。ただし、データには 2 つの次元しかないため、削減できるのは 1 つの次元だけです。

  1. eig_pairs = [(np.abs(eig_val[i]), eig_vec[:,i]) の場合、i は範囲(len(eig_val)) 内です。
  2. eig_pairs.sort(逆順= True )
  3. 特徴= eig_pairs [0][1]

データを変換して次元を削減します。

  1. 新しいデータ削減= np.transpose (np.dot(機能、np.transpose(データ))

オリジナル:

https://deeplearning4j.org/eigenvector#a-beginners-guide-to-eigenvectors-pca-covariance-and-entropy

[この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  ニューロモルフィックコンピューティングを理解する: 基本原理から実験的検証まで

>>:  厳しい期限内で機械学習を行う方法: ラベル付きニュースの構築

ブログ    
ブログ    
ブログ    

推薦する

...

人工知能は教育にどのような変化をもたらすのでしょうか?

[[441080]]経済観察記者 鄭躍新12月16日、中国教育部元副部長で中国教育国際交流協会会長...

食品産業における人工知能:農家の意思決定を支援する

人工知能は食品システムを最適化できると思いますか? 精密農業からパーソナライズされた栄養管理まで、農...

Stable Diffusion で 1 秒で写真を作成しましょう。清華大学マスターアクセラレーターはホットなトレンドで、いくつかの企業が参加している

AI画像生成は秒単位のスピードに達しました。描画を完了するには4ステップの推論しかかからず、最速では...

マイクロソフトは産業用メタバースプロジェクトProject Airsimを中止し、人工知能戦略をOpenAIに転換

10月25日、外国メディアは事情に詳しい関係者の話として、月曜日に「インダストリアル・メタバース」プ...

5つのリソースカテゴリー:大規模言語モデルのリソース効率を向上させる方法、超詳細なレビューはこちら

近年、OpenAI の GPT-3 などの大規模言語モデル (LLM) は、人工知能の分野で大きな進...

機械学習は株式市場を正確に予測できるのでしょうか?

株式市場が始まって以来、人々はシステムを悪用し、市場に勝とうとしてきました。長年にわたり、人々は何千...

生産効率が50%アップ!ファーウェイはAI機能を活用して大東コイルのデジタル変革を推進し、コスト削減と効率向上に貢献している。

デジタル変革は、現在の企業、特にハイテクの伝統的な製造業の主なテーマとなっています。人工知能、クラウ...

アルゴリズムの品質を評価するにはどうすればよいでしょうか?

序文アルゴリズムの品質を評価するには、そのアルゴリズムが問題を解決できるかどうかを確認することが重要...

Google は一連の大きな動きを発表しました: Gemini Pro は中国語をサポートし、Bard は描画を学習し、新しいモデルが利用可能になりました

この分野で GPT-4 を上回った Bard は「勢いをつかみ」、メジャーアップデートをリリースしま...

機械学習をサポートする 8 つのデータ ウェアハウス

[[399333]] [51CTO.com クイック翻訳]非常に大きなデータセットの場合、理想的な状...

ドローンが小型化するにつれて、その開発が成熟するためには3つの点を考慮する必要があります。

近年、コア技術の継続的な進歩と市場需要の継続的な解放により、ドローン産業は急速に発展しています。アプ...

ディープラーニング入門

2016年、Googleの人工知能プログラムAlphaGoが世界的囲碁プレイヤーのイ・セドルと対戦し...

...

AI搭載ストレージは企業がデータからより多くの価値を引き出すのに役立ちます

ストレージを、手作業で手間がかかる必需品ではなく、自動運転車として考えることができたらどうでしょうか...