ツイートシェアシェア

Last Updated on August9,2019

行列分解は、より複雑な操作の範囲を簡素化するために、行列を構成部分に縮小するのに便利なツールです。

おそらく最もよく使われるタイプの行列分解は、行列を固有ベクトルと固有値に分解するeigendecompositionです。 この分解は、主成分分析法やPCAなどの機械学習で使用される方法でも役割を果たします。このチュートリアルでは、線形代数における固有分解、固有ベクトル、および固有値を発見します。このチュートリアルを完了した後、あなたは知っているでしょう:

  • 固有分解とは何か、固有ベクトルと固有値の役割。NumPyを使用してPythonでeigendecompositionを計算する方法。
  • ベクトルが固有ベクトルであることを確認する方法と、固有ベクトルと固有値から行列を再構築する方法。私の新しい本Linear Algebra for Machine Learningで、ステップバイステップのチュートリアルやすべての例のPythonソースコードファイルを含めて、プロジェクトを開始します。

    始めましょう。

    機械学習のためのEigendecomposition、固有値、および固有ベクトルへの穏やかな紹介
    Mathias Appelによる写真、some rights reserved。

    チュートリアルの概要

    このチュートリアルは5つの部分に分かれています。:

    1. 行列の固有ベクトルと固有値
    2. 固有ベクトルと固有値の計算
    3. 固有ベクトルと固有値を確認
    4. 元の行列を再構築

    機械学習のための線形代数の助けが必要ですか?

    今私の無料の7日間の電子メールクラッシュコースを取る(サンプルコード付き)。

    クリックしてサインアップし、コースの無料のPDF電子ブック版を取得します。

    無料のミニコースをダウンロード

    行列の固有値分解

    行列の固有値分解は、正方行列を固有ベクトルと固有値のセットに分解

    行列分解の最も広く使用されている種類の一つは、我々は固有ベクトルと固有値のセットに行列を分解するeigendecompositionと呼ばれています。

    —ページ42、ディープラーニング、2016。

    A vector is an eigenvector of a matrix if it satisfies the following equation.

    1
    A . v = lambda . v

    これは固有値方程式と呼ばれ、Aは分解する親正方行列、vは行列の固有ベクトル、lambdaは小文字のギリシャ文字で固有値

    またはドット表記なし。

    1
    Av = lambdav

    A matrix could have one eigenvector and eigenvalue for each dimension of the parent マトリックス すべての正方行列を固有ベクトルと固有値に分解できるわけではなく、複素数を必要とする方法でのみ分解できるものもあります。 親行列は、固有ベクトルと固有値の積であることを示すことができます。

    1
    A = Q . diag(V) . Q^-1

    Or, without the dot notation.

    1
    A = Qdiag(V)Q^-1

    Where Q is a matrix comprised of the eigenvectors, diag(V) is a diagonal matrix 対角に沿った固有値(大文字のラムダで表されることもあります)で構成され、Q^-1は固有ベクトルで構成される行列の逆行列です。しかし、行列を固有値と固有ベクトルに分解したいことがよくあります。 そうすることで、整数を素因数に分解することで、その整数の動作を理解するのに役立つので、行列の特定の特性を分析するのに役立ちます。

    —ページ43、ディープラーニング、2016。

    Eigenは名前ではありません。; eigen(eye-ganと発音される)は、親行列に属するように、”自分自身”または”生得的”を意味するドイツ語の単語です。

    分解操作は、行列の圧縮にはなりません;代わりに、行列の特定の操作を実行しやすくするために、それを構成部分に分解します。 他の行列分解法と同様に、Eigendecompositionは、他のより複雑な行列演算の計算を単純化するための要素として使用されます。p>

    ほとんどすべてのベクトルは、aで乗算されると方向が変わります。 特定の例外的なベクトルxはAxと同じ方向にあります。 それらは「固有ベクトル」です。 固有ベクトルにaを乗算し、ベクトルAxは元のxの数lambda倍です。固有値lambdaは、特殊なベクトルxが伸びているか縮小されているか、逆になっているか、未変更のままになっているかを示します。

    –Page289,Introduction to Linear Algebra,Fifth Edition,2016。

    Eigendecompositionは、機械学習におけるデータの次元を減らすために使用できる主成分分析法またはPCAにおける行列の主成分を計算するためにも使用できます。

    固有ベクトルと固有値

    固有ベクトルは単位ベクトルであり、その長さまたは大きさは1.0に等しいことを意味します。 これらはしばしば右ベクトルと呼ばれ、単に列ベクトルを意味します(行ベクトルまたは左ベクトルとは対照的に)。 右ベクトルは、私たちが理解しているようにベクトルです。

    固有値は、ベクトルの長さまたは大きさを与える固有ベクトルに適用される係数です。 たとえば、負の固有値は、スケーリングの一部として固有ベクトルの方向を逆にすることができます。

    正の固有値のみを持つ行列は正定行列と呼ばれ、固有値がすべて負の場合は負定行列と呼ばれます。

    正の固有値のみを持つ行列は正定行列と呼ばれます。

    正の固有値のみを持つ行列は正定行列と呼ばれます。

    その固有値とその固有ベクトルの観点から行列を分解することは、行列の特性に貴重な洞察を与えます。 特定の行列の計算は、行列の冪を計算するように、行列の固有分解を使用するとはるかに簡単になります。

    —ページ262、線形代数へのでたらめなガイド、2017

    Eigendecompositionの計算

    eigendecompositionは、効率的な反復アルゴリズムを使用して正方行列上で計算されます。

    多くの場合、最初に固有値が見つかり、次に方程式を係数の集合として解くための固有ベクトルが見つかります。eigendecompositionは、Eig()関数を使用してNumPyで計算できます。

    以下の例では、最初に3×3正方行列を定義します。 固有成分は、固有値と固有ベクトルを返す行列上で計算されます。

    この例を実行すると、最初に定義された行列が出力され、その後に固有値と固有ベクトルが出力されます。 より具体的には、固有ベクトルは右側の固有ベクトルであり、単位長さに正規化されます。

    固有ベクトルと固有値を確認する

    ベクトルが実際に行列の固有ベクトルであることを確認できます。これを行うには、候補固有ベクトルに固有ベクトルを乗算し、結果を固有値と比較します。

    まず、行列を定義し、固有値と固有ベクトルを計算します。 次に、最初のベクトルと値が実際に行列の固有値と固有ベクトルであるかどうかをテストします。 私たちは彼らが知っていますが、それは良い運動です。

    固有ベクトルは親行列と同じ次元の行列として返され、各列は固有ベクトルであり、たとえば最初の固有ベクトルはベクトルです。 固有値はリストとして返され、返された配列内の値インデックスは列インデックスによって固有ベクトルとペアになります。

    この例では、元の行列に最初の固有ベクトルを乗算し、それを最初の固有ベクトルに最初の固有値を乗算したものと比較します。

    この例を実行すると、期待どおりに同じ結果のベクトルを示すこれら二つの乗算の結果が出力されます。

    1
    2
    3

    Reconstruct Original Matrix

    We プロセスを逆にして、固有ベクトルと固有値のみを与えられた元の行列を再構築することができます。

    まず、固有ベクトルのリストを行列に変換し、各ベクトルが行になる必要があります。 固有値は対角行列に配置する必要があります。 これにはNumPy diag()関数を使用できます。次に、固有ベクトル行列の逆行列を計算する必要があり、これはinv()NumPy関数で達成できます。 最後に、これらの要素はdot()関数と一緒に乗算する必要があります。

    この例では、固有値と固有ベクトルを再度計算し、それらを使用して元の行列を再構築します。

    この例を実行すると、最初に元の行列が出力され、次に元の行列に一致する固有値と固有ベクトルから再構成された行列が出力されます。div>

    /div>

    拡張機能

    このセクションでは、チュートリアルを拡張するためのいくつかのアイデアを

    • 独自のデータを使用して、各操作を使用して5つの例を作成します。
    • リストのリストとして定義された行列に対して、各行列演算を手動で実装します。
    • 機械学習の論文を検索し、使用されている各操作の1例を見つけます。これらの拡張機能のいずれかを探索する場合、私は知りたいと思います。

      さらに読む

      このセクションでは、より深く行くために探している場合は、トピックに関するより多くのリソースを提供します。

      Books

      • セクション6.1固有値と固有ベクトル。 線形代数へのでたらめなガイドはありません、2017。
      • 第6章固有値と固有ベクトル,線形代数の紹介,第五版,2016.
      • Section2.7Eigendecomposition,Deep Learning,2016.
      • 第5章固有値、固有ベクトル、および不変部分空間、線形代数Done Right、第三版、2015。Lecture24,Eigenvalue Problems,Numerical Linear Algebra,1997.

      API

      • numpy。リナルグeig()API
      • numpy.diag()API
      • numpy.dot()API
      • numpy。リナルグinv()API

      記事

      • wiktionary上の固有
      • 固有値と固有ベクトル
      • 行列の固有値分解
      • 固有値アルゴリズム
      • 行列分解

      要約

      このチュートリアルでは、固有ベクトル、固有ベクトル、および固有値を発見しました。線形代数。具体的には、あなたは学びました:

      • 固有分解とは何か、固有ベクトルと固有値の役割。NumPyを使用してPythonでeigendecompositionを計算する方法。
      • ベクトルが固有ベクトルであることを確認する方法と、固有ベクトルと固有値から行列を再構築する方法。

      何か質問がありますか?

    質問がありますか?
    以下のコメントであなたの質問をすると、私は答えるために最善を尽くします。

    機械学習のための線形代数のハンドルを手に入れよう!h2>

    線形代数の理解を開発する

    …pythonでコード行を書くことによって

    私の新しい電子ブックでどのように発見する:
    機械学習のための線形代数

    それはのようなトピックに関する自習チュートリアルを提供します:
    ベクトルノルム、行列乗算、テンソル、Eigendecomposition、SVD、PCAとはるか。..

    最後にデータの数学を理解する

    学者をスキップします。 ちょうど結果。

コメントを残す

メールアドレスが公開されることはありません。