QCプラネッツ 品質のプロフェッショナルを育成するサイト

固有ベクトルが直交する理由がわかる

多変量解析

「主成分分析で解く固有ベクトルはなぜ互いに直交するのかがわからない」などと困っていませんか?

こういう疑問に答えます。

本記事のテーマ

固有ベクトルが直交する理由がわかる

おさえておきたいポイント

  • ①対称行列\(A\)の性質
  • ➁対称行列\(A\)の性質\((A \vec{x})・\vec{y}\)=\(\vec{x}・(A \vec{y})\)の証明
  • ➂固有ベクトルが互いに直交する理由がわかる
主成分分析は自分で解けます!
Excelや固有値、因子負荷量とか暗記不要!
自力で導出できるぜ!
線形代数の代名詞な固有ベクトル
互いに直交する理由をわかりやすく解説します。
線形代数・行列の式変形は
難しいし、苦手なので、
成分を書き出して
わかりやすく計算します!

①対称行列\(A\)の性質

固有方程式

線形代数でもおなじみの固有方程式、固有値、固有ベクトル。
関連記事で解説したとおり、主成分分析でも出て来ます。

【重要】主成分分析が導出できる
主成分分析で自力で主成分方向が導出できますか?「主成分分析=固有値解」とインプットしていませんか? 本記事では主成分分析の本質が理解できるために導出過程をわかりやすく解説します。2次元の例で基礎をしっかり理解しましょう。多変量解析を学ぶ人は必読です。

2次元、3次元の固有方程式を書き出すと

2次元の場合

\(\left(
\begin{array}{cccc}
S_{11} & S_{12} \\
S_{12} & S_{22}
\end{array}
\right)
\)\(\left(
\begin{array}{cccc}
a_j\\
b_j
\end{array}
\right)
\)=\(λ_j\)\(\left(
\begin{array}{cccc}
a_j \\
b_j
\end{array}
\right)
\)

ただし、
●\(i\)=\(1,2,…,n\) (データ数)
●\(j\)=1,2 (固有値の種類)
\(a_j^2+b_j^2\)=1(単位ベクトル)

3次元の場合

\(\left(
\begin{array}{cccc}
S_{11} & S_{12} & S_{13} \\
S_{12} & S_{22} & S_{23} \\
S_{13} & S_{23} & S_{33}
\end{array}
\right)
\)\(\left(
\begin{array}{cccc}
a_j \\
b_j \\
c_j
\end{array}
\right)
\)=\(λ_j\)\(\left(
\begin{array}{cccc}
a_j \\
b_j \\
c_j
\end{array}
\right)
\)

ただし、
●\(i\)=\(1,2,…,n\) (データ数)
●\(j\)=1,2,3 (固有値の種類)
\(a_j^2+b_j^2+c_j^2\)=1(単位ベクトル)

がありますよね。

本記事では、固有方程式にある行列に注目します。つまり、
●2次元なら
\(\left(
\begin{array}{cccc}
S_{11} & S_{12} \\
S_{12} & S_{22}
\end{array}
\right)
\)

●3次元なら
\(\left(
\begin{array}{cccc}
S_{11} & S_{12} & S_{13} \\
S_{12} & S_{22} & S_{23} \\
S_{13} & S_{23} & S_{33}
\end{array}
\right)
\)

です。よく見ると、
これらの行列は対称行列になっています。

対称行列\(A\)は、\(i\)行、\(j\)列の成分\(a_{ij}\)において、
\(a_{ij}\)=\(a_{ji}\)と行列入れ替えた成分の値がすべて同じもので、
よく\(A={}^tA\)と書きます。

以下、行列\(A\)は\(a_{ij}\)=\(a_{ji}\)と行列入れ替えた成分の値が同じである対称行列が前提として話を進めます。

➁対称行列\(A\)の性質\((A \vec{x})・\vec{y}\)=\(\vec{x}・(A \vec{y})\)の証明

\((A \vec{x})・\vec{y}\)の計算

実際に計算していきましょう。

まず行列\(A\)とベクトル\(\vec{x}\),\(\vec{y}\)を準備します。

\(A\)=\(\left(
\begin{array}{cccc}
a_{11} & a_{12} & \ldots & a_{1n} \\
a_{21} & a_{22} & \ldots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \ldots & a_{nn}
\end{array}
\right)
\)

\(\vec{x}\)=\(
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{array}
\right)
\)

\(\vec{y}\)=\(
\left(
\begin{array}{c}
y_1 \\
y_2 \\
\vdots \\
y_n
\end{array}
\right)
\)

では、計算してきましょう。

\((A \vec{x})\)の計算

\((A \vec{x})\)=\(\left(
\begin{array}{cccc}
a_{11} & a_{12} & \ldots & a_{1n} \\
a_{21} & a_{22} & \ldots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \ldots & a_{nn}
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{array}
\right)
\)
=\(
\left(
\begin{array}{c}
a_{11} x_1+ a_{12} x_2+…+ a_{1n} x_n \\
a_{21} x_1+ a_{22} x_2+…+ a_{2n} x_n \\
\vdots \\
a_{n1} x_1+ a_{n2} x_2+…+ a_{nn} x_n
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
\sum_{i=1}^{n} a_{1i} x_i\\
\sum_{i=1}^{n} a_{2i} x_i \\
\vdots \\
\sum_{i=1}^{n} a_{ni} x_i
\end{array}
\right)
\)

式は複雑ですが、機械的に計算しているだけです。

\((A \vec{x})・\vec{y}\)の計算

次に、\(\vec{y}\)も付加しましょう。

\((A \vec{x})・\vec{y}\)=\(
\left(
\begin{array}{c}
a_{11} x_1+ a_{12} x_2+…+ a_{1n} x_n \\
a_{21} x_1+ a_{22} x_2+…+ a_{2n} x_n \\
\vdots \\
a_{n1} x_1+ a_{n2} x_2+…+ a_{nn} x_n
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
y_1 \\
y_2 \\
\vdots \\
y_n
\end{array}
\right)
\)
ですが、これは内積なのでスカラー量になりますね。
=\( (a_{11} x_1+ a_{12} x_2+…+ a_{1n} x_n) y_1 \)
+ \((a_{21} x_1+ a_{22} x_2+…+ a_{2n} x_n) y_2\)

+ \((a_{n1} x_1+ a_{n2} x_2+…+ a_{nn} x_n) y_n\)
これを∑でまとめて表記すると
=\(\sum_{i=1}^{n} \sum_{j=1}^{n} a_{ij} x_j y_i\) =(式1)
となります。

次に(右辺)側を計算します。

\(\vec{x}・(A \vec{y})\)の計算

機械的にどんどん計算します。

\((A \vec{y})\)=\(
\left(
\begin{array}{c}
a_{11} y_1+ a_{12} y_2+…+ a_{1n} y_n \\
a_{21} y_1+ a_{22} y_2+…+ a_{2n} y_n \\
\vdots \\
a_{n1} y_1+ a_{n2} y_2+…+ a_{nn} y_n
\end{array}
\right)
\)
これは、さっき\((A \vec{x})\)を計算したときの結果をx⇒yに変えればOKですね。

\(\vec{x}・(A \vec{y})\)=\(
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a_{11} y_1+ a_{12} y_2+…+ a_{1n} y_n \\
a_{21} y_1+ a_{22} y_2+…+ a_{2n} y_n \\
\vdots \\
a_{n1} y_1+ a_{n2} y_2+…+ a_{nn} y_n
\end{array}
\right)
\)
これは内積なのでスカラー量になりますね。
=\(( a_{11} y_1+ a_{12} y_2+…+ a_{1n} y_n) x_1\)
+\(( a_{21} y_1+ a_{22} y_2+…+ a_{2n} y_n) x_2\)

+\(( a_{n1} y_1+ a_{n2} y_2+…+ a_{nn} y_n) x_n\)
これを∑でまとめて表記すると
=\(\sum_{i=1}^{n} \sum_{j=1}^{n} a_{ij} y_j x_i\) =(式2)
となります。

\((A \vec{x})・\vec{y}\)=\(\vec{x}・(A \vec{y})\)の証明の計算

さて、
(左辺)= \(\sum_{i=1}^{n} \sum_{j=1}^{n} a_{ij} x_j y_i\) =(式1)
(右辺)= \(\sum_{i=1}^{n} \sum_{j=1}^{n} a_{ij} y_j x_i\) =(式2)
と似たようで違う式になっていますが、等しいことを証明していきます。

まず、行列\(A\)は対称行列でしたね。

対称行列\(A\)は、\(i\)行、\(j\)列の成分\(a_{ij}\)において、
\(a_{ij}\)=\(a_{ji}\)と行列入れ替えた成分の値がすべて同じもの

\(a_{ij}\)=\(a_{ji}\)を(式2)に代入すると、
(式2)= \(\sum_{i=1}^{n} \sum_{j=1}^{n} a_{ij} y_j x_i \)
= \(\sum_{i=1}^{n} \sum_{j=1}^{n} a_{ji} x_i y_j \)
ここで、\(i\)⇒\(j\),\(j\)⇒\(i\)と入れ替えると
= \(\sum_{i=1}^{n} \sum_{j=1}^{n} a_{ij} x_j y_i\)
=(左辺)

となるので、証明できました!

対称行列\(A\)の性質\((A \vec{x})・\vec{y}\)=\(\vec{x}・(A \vec{y})\)
が証明できました。

➂固有ベクトルが互いに直交する理由がわかる

対称行列\(A\)の性質\((A \vec{x})・\vec{y}\)=\(\vec{x}・(A \vec{y})\)

固有ベクトルの直交性の話のために、長々と証明してきましたが、この式を使うと簡単に固有ベクトルの直交性が証明できます。

ここで、対称行列\(A\)の固有値\(λ_i\),固有ベクトル\(\vec{v_i}\) (\(i\)=1,2,…\(n\))と置くと、

\(A \vec{v_i}\)=\(λ_i \vec{v_i}\)
が成り立つ。

固有ベクトルが互いに直交する理由

上の証明した式において、ベクトルを
●\(\vec{x}\)=\(\vec{v_i}\)
●\(\vec{y}\)=\(\vec{v_j}\)
(\(i\)≠\(j\))と置きます。

\((A \vec{x})・\vec{y}\)=\(\vec{x}・(A \vec{y})\)
\((A \vec{v_i})・\vec{v_j}\)=\(\vec{v_i}・(A \vec{v_j})\)=(式3)

固有方程式から
●\(A \vec{v_i}\)=\(λ_i \vec{v_i}\)
●\(A \vec{v_j}\)=\(λ_j \vec{v_j}\)
を代入すると

(式3)は
\((λ_i \vec{v_i})\)・\(\vec{v_j}\)=\(\vec{v_i}\)・\((λ_j \vec{v_j})\)
\(λ_i \vec{v_i}\)・\(\vec{v_j}\)=\(λ_j \vec{v_i}\)・\(\vec{v_j}\)
\((λ_i-λ_j)\)\(\vec{v_i}\)・\(\vec{v_j}\)=0=(式4)

(式4)において、\(i\)≠\(j\)から(\(λ_i\)≠\(λ_j\)なので、
\(\vec{v_i}\)・\(\vec{v_j}\)=0
が成り立ちます。

\(\vec{v_i}\)・\(\vec{v_j}\)=0
より、固有ベクトルは互いに直交することが証明できました。

めでたし、めでたし!

まとめ

「固有ベクトルが直交する理由がわかる」を解説しました。

  • ①対称行列\(A\)の性質
  • ➁対称行列\(A\)の性質\((A \vec{x})・\vec{y}\)=\(\vec{x}・(A \vec{y})\)の証明
  • ➂固有ベクトルが互いに直交する理由がわかる

固有ベクトルが直交する理由がわかる


Warning: count(): Parameter must be an array or an object that implements Countable in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 119

    Warning: Invalid argument supplied for foreach() in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 122
error: Content is protected !!