固有値と固有ベクトルの話は少し前にやりました。今回は固有値分解についてです。固有値分解は実質的に対角化そのものです。で、対角化とは何だったかと言いますと、正方行列 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 件のコメント:
コメントを投稿