【対称行列】なぜ「斜めに折り返す」と計算が楽になる?固有値の性質と「直交」の魔法

こんにちは。ゆうせいです。

線形代数の勉強をしていると、いろいろな種類の行列が出てきて頭が痛くなりますよね。「逆行列」「転置行列」「対角行列」……。

でも、その中でも「もっとも性格が良くて、扱いやすい優等生」がいるのをご存知でしょうか。

それが今回紹介する 対称行列 です。

データ分析や機械学習(特に主成分分析など)の世界では、この対称行列が主役級の活躍をします。なぜなら、対称行列には計算を劇的にシンプルにする「魔法のような性質」が隠されているからです。

今日は、その計算方法と、なぜそれが嬉しいのか(意義)について、数式アレルギーの方でもわかるようにじっくり解説していきます。

対称行列ってどんな形?

まずは見た目の確認です。

対称行列とは、その名の通り「対角線を軸にして、数字が対称(鏡写し)になっている行列」のことです。

具体的には、右上の数字と左下の数字が同じになっている状態です。

数式で書くと A = A^T (転置しても変わらない)という性質を持っています。

例を見てみましょう。

A = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}

左上が「2」、右下が「2」。そして右上の「1」と左下の「1」が同じですね。

これが対称行列です。このシンプルな形が、驚くべき奇跡を起こします。

実際に固有値を計算してみよう

では、この行列 A の「固有値」と「固有ベクトル」を計算してみます。

ここでの計算結果が、後の解説の伏線になるので、少しだけお付き合いください。

手順1:固有値方程式を解く

固有値を求めるお決まりの式、 \det(A - \lambda I) = 0 を解きます。

\det \begin{pmatrix} 2 - \lambda & 1 \\ 1 & 2 - \lambda \end{pmatrix} = 0

斜めに掛けて引きます。

(2 - \lambda)(2 - \lambda) - (1 \times 1) = 0

展開して整理すると…

\lambda^2 - 4 \lambda + 4 - 1 = 0

\lambda^2 - 4 \lambda + 3 = 0

(\lambda - 1)(\lambda - 3) = 0

よって、固有値は 13 です。

綺麗な整数が出ましたね。

手順2:固有ベクトルを求める

それぞれの固有値に対応するベクトル(矢印の向き)を求めます。

① 固有値 \lambda = 3 のとき

元の行列の式に代入して連立方程式を解くと、 x = y という関係が出てきます。

もっともシンプルな形として、ベクトル \vec{v}_1 = \begin{pmatrix} 1 \\ 1 \end{pmatrix} が求まります。

② 固有値 \lambda = 1 のとき

同様に計算すると、 x = -y という関係が出てきます。

ベクトル \vec{v}_2 = \begin{pmatrix} 1 \\ -1 \end{pmatrix} が求まります。

ここがすごい!対称行列の2つの意義

さて、計算が終わりました。

ここで注目してほしいポイントが2つあります。これが対称行列の「意義」そのものです。

意義1:固有値が必ず「実数」になる

普通の行列だと、固有値を計算したときに「虚数( i )」が出てきて、計算が複雑怪奇になることがあります。現実のデータ分析で虚数が出てくると、解釈に困りますよね。

しかし、対称行列なら絶対に実数になる ことが数学的に証明されています。

「計算結果が必ず現実世界に存在する数字になる」という安心感。これがエンジニアにとってどれだけありがたいことか!

意義2:固有ベクトル同士が「直交」する

ここが一番のハイライトです。

先ほど求めた2つのベクトルを見てみましょう。

  • \vec{v}_1 = \begin{pmatrix} 1 \\ 1 \end{pmatrix} (右上に向かう矢印)
  • \vec{v}_2 = \begin{pmatrix} 1 \\ -1 \end{pmatrix} (右下に向かう矢印)

この2つの矢印のなす角を考えてみてください。

傾きが「1」と「-1」ですから、ちょうど 90度(直角) になっていますよね。

ベクトルの内積を計算しても 1 \times 1 + 1 \times (-1) = 0 となり、直交していることがわかります。

これが対称行列の最大の魔法です。

「対称行列の異なる固有値に対応する固有ベクトルは、必ず直交する」

直交すると何が嬉しいの?

「90度だから何なの?」と思うかもしれません。

直交するということは、「お互いが完全に独立していて、干渉しない」 ということを意味します。

例えば、データを分析するときに「軸」を取り直す(座標変換する)操作をよく行います。

このとき、新しい軸同士が斜めに歪んでいると扱いづらいですが、綺麗な十字(直交)の形をしていれば、非常にすっきりとした基準を作ることができます。

この性質を利用している代表例が 主成分分析(PCA) です。

データの「分散共分散行列」というものを作るのですが、これは必ず「対称行列」になります。

だからこそ、PCAではデータを「互いに無関係な(直交する)特徴」に綺麗に分解できるのです。

つまり、対称行列の固有値を計算することは、「ごちゃごちゃしたデータを、整理整頓された直角の座標軸で見直すための鍵を探すこと」 と言えるのです。

今日の練習問題

以下の行列 A は、右上の「2」と左下の「2」が同じなので、対称行列です。

A = \begin{pmatrix} 1 & 2 \\ 2 & 1 \end{pmatrix}

この行列について、以下の3つのステップで計算を行ってください。

問題1

固有値方程式 \det(A - \lambda I) = 0 を解いて、2つの 固有値 を求めてください。

(計算結果がちゃんと「実数」になるか確認しましょう)

問題2

それぞれの固有値に対応する 固有ベクトル を求めてください。

問題3

求めた2つの固有ベクトルの 内積 を計算し、それらが 直交 しているか(内積が0になるか)を確かめてください。


解答と解説

計算お疲れさまでした。

「ルート( \sqrt{} )」や「虚数( i )」が出てこず、スッキリ解けたのではないでしょうか。

それでは答え合わせをしていきます。

解答1:固有値を求める

まずは、お決まりの式に当てはめて計算します。

\det \begin{pmatrix} 1 - \lambda & 2 \\ 2 & 1 - \lambda \end{pmatrix} = 0

行列式(ななめ掛け算の引き算)を計算します。

(1 - \lambda)(1 - \lambda) - (2 \times 2) = 0

展開して整理します。

(1 - 2\lambda + \lambda^2) - 4 = 0

\lambda^2 - 2\lambda - 3 = 0

因数分解します。足して -2 、掛けて -3 になる組み合わせですね。

(\lambda - 3)(\lambda + 1) = 0

よって、固有値は 3-1 です。

どうでしょう、ちゃんと「実数」になりましたね!

対称行列なので、計算途中で虚数が出てきて焦る心配はありません。

解答2:固有ベクトルを求める

次に、それぞれの固有値に対応する「矢印の向き」を求めます。

① 固有値 \lambda = 3 のとき

元の行列の式 (A - 3I)\vec{x} = \vec{0} を考えます。

対角成分から3を引くと:

\begin{pmatrix} -2 & 2 \\ 2 & -2 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix}

上の行を見ると -2x + 2y = 0 ですから、整理すると x = y となります。

xy が同じ値なら何でも良いので、一番シンプルな形として

\vec{v}_1 = \begin{pmatrix} 1 \\ 1 \end{pmatrix}

とします。

② 固有値 \lambda = -1 のとき

対角成分から-1を引く(つまり1を足す)と:

\begin{pmatrix} 2 & 2 \\ 2 & 2 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix}

上の行を見ると 2x + 2y = 0 ですから、整理すると x = -y となります。

符号が逆なら何でも良いので、

\vec{v}_2 = \begin{pmatrix} 1 \\ -1 \end{pmatrix}

とします。

解答3:直交しているか確かめる(内積の計算)

いよいよクライマックスです。

求めた2つのベクトルが、本当に90度(直交)になっているか、内積を使って判定します。

ベクトル1: \begin{pmatrix} 1 \\ 1 \end{pmatrix}

ベクトル2: \begin{pmatrix} 1 \\ -1 \end{pmatrix}

内積の計算式は「成分ごとの掛け算の合計」でしたね。

内積 = (1 \times 1) + (1 \times -1)

= 1 - 1

= 0

内積が ゼロ になりました!

つまり、この2つのベクトルは間違いなく 直交しています。

まとめ

実際に手を動かしてみて、いかがでしたか。

どんな数字が入った対称行列でも(今回は 12 でしたが)、必ず以下のルールが守られることを体感できたはずです。

  1. 固有値は、扱いやすい実数になる。
  2. 固有ベクトルは、綺麗に直交する(十字に交わる)。

この「絶対に直交する」という安心感があるからこそ、私たちは複雑なデータを分析するときに、とりあえず「分散共分散行列(対称行列)」を作って、固有値を計算しにいくのです。そうすれば、必ず綺麗な座標軸が得られることが約束されているからです。

この感覚を覚えておけば、機械学習の数式が出てきても「あ、これはデータを整理整頓しているんだな」と余裕を持って見ることができますよ。

まとめ

対称行列は、単に「形が綺麗」なだけではありません。

  1. 固有値が実数 なので、安心して計算できる。
  2. 固有ベクトルが直交 するので、綺麗な座標軸を作れる。

この2つの「性格の良さ」のおかげで、複雑なデータ解析や画像の圧縮などが可能になっています。

もし今後、数式の中で A^T A のような対称行列の形を見かけたら、「お、ここは綺麗な直交軸が作れるチャンスだな!」と思ってあげてください。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。