2019年9月15日日曜日

固有値分解

固有値と固有ベクトルの話は少し前にやりました。今回は固有値分解についてです。固有値分解は実質的に対角化そのものです。で、対角化とは何だったかと言いますと、正方行列 A に対して、直交行列 P, 対角行列 D として \begin{equation} \rm {A = P D P^t} \end{equation} のような形にすることです。このとき、 \begin{equation} \rm D = \begin{pmatrix} \lambda_1 & & \\ & \lambda_2 & \\ & & \ddots \\ \end{pmatrix}, \\ \rm P = \begin{pmatrix} \vec{v_1} & \vec{v_2} & \cdots & \\ \end{pmatrix} \end{equation} です。ただし、\( \lambda \) は固有値、\( \vec{v} \) は固有ベクトルです。D は固有値が対角成分に並んだ形になっていますから、対角化です。

で、 \( \rm {A = P D P^t} \) という形に変換したことは、正方行列 A を P の要素( P に含まれる直交ベクトル)それぞれの和で表したことになります。つまり、 \begin{equation} {\rm A} = \lambda_1 \vec{v_1} \vec{v_1^t} + \lambda_2 \vec{v_2} \vec{v_2^t} + \cdots \end{equation} です。固有値は各項の重みを表していることになりますから、ゼロに近い固有値は無視して計算してしまっても、ある程度の精度が保てます。これは次元削減したことになり、計算コストを下げたりデータ量を減らしたりできます。あとは、\( \rm A \)の累乗の計算が簡単になります。

0 件のコメント:

コメントを投稿