Help us understand the problem. What is going on with this article?

データ分析に必要な線形代数の基礎を幾何的な表現と共におさらいした備忘録

More than 1 year has passed since last update.

線形代数とデータ分析

機械学習やデータサイエンスを流行に伴い、線形代数をおさらいする機会があったので、「データ分析」に必要であるだろう部分を個人的にピックアップしておさらいしておきます。線形写像の定義、部分空間、行列式、余因子、ランクとかはすっ飛ばしてます・・・。
個人的に線形代数という分野は、抽象的でイマイチ理解が進まないことが多かったので、できる限り幾何学的な表現と結びつけておさらいしています。誤用・誤理解もあると思います…数学的に厳密な話とかは、私には根本難しい話なので、雰囲気で理解してもらい、詳細は各参考書や他の方の優れた解説を見ていただければと思います。初学者の方の参考になれば幸いです。

もくじ

  1. ベクトルとは
    1. ベクトルの表記
    2. 長さ(ノルム)
    3. 和と差、スカラー倍
    4. ベクトルの基準化(正規化)
    5. ベクトルの線形(1次)結合
    6. 内積
    7. 距離
    8. 線形独立と基底
  2. 行列とは
    1. 行列の表記
    2. 和と差、スカラー倍
    3. 行列の積
    4. 偏差行列
    5. 逆行列
  3. 行列の幾何的な表現
    1. 行列によるベクトル変換
    2. 直交行列による直交回転
    3. 分散と距離と直交回転
    4. 固有値と固有ベクトル
    5. 共分散行列と固有値と固有ベクトル
    6. ベクトルの微分

ベクトルとは

ベクトルの表記

ベクトルとは、もはや説明もいらないかもしれませんが、下記のように数値や記号に順番をつけて並べているものです。ベクトルは太字の小文字表記で統一します。

\boldsymbol { a } =\left( \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \\ { \vdots  } \\ { a }_{ n } \end{matrix} \right) 

${ a }_{ 1 },{ a }_{ 2 },\cdots ,{ a }_{ n }$は$\boldsymbol { a }$の要素や成分と呼ばれます。ベクトルを列方向に並べれば「列ベクトル」で、行方向に並べれば「行ベクトル」と呼ばれます。

\boldsymbol { a } =\left( \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \\ { \vdots  } \\ { a }_{ n } \end{matrix} \right) ,\boldsymbol { a } =\left( \begin{matrix} { a }_{ 1 } & { a }_{ 2 } & \cdots  \end{matrix}{ a }_{ n } \right) 

ベクトルの幾何的表現

ここでは、直交座標系において、ベクトルを幾何的に表現してみます。中学で習ったやつですね。小難しい定義はさておき、方向と長さが同じであれば、ベクトルは「同じもの」と考えることができます。
下記のような2次ベクトルは平面上で表現することが可能です。2次ベクトルであれば、次元1を横軸、次元2を縦軸と考えれば、原点を基準とすると矢印として表現できますね。次数が上がっても拡張すれば問題ないと思いますので、基本的にはイメージをしやすい2次元をもとに説明を進めていきます。

\boldsymbol { a } =\left( \begin{matrix} 3 \\ 1 \end{matrix} \right) ,\boldsymbol { b } =\left( \begin{matrix} 1 \\ 4 \end{matrix} \right) 


また、3次ベクトルであれば、空間上で表現することが可能ですね。

長さ(ノルム)

各ベクトルには、「長さ(ノルム)」という量を考えることができます。n次ベクトルの長さは、下記のように計算できます。

\parallel \boldsymbol { a } \parallel =\sqrt { { a }_{ 1 }^{ 2 }+{ a }_{ 2 }^{ 2 }+\cdots +{ a }_{ n }^{ 2 } } =\sqrt { \sum _{ i=1 }^{ n }{ { a }_{ i }^{ 2 } }  } 

なので、さきほどの2次ベクトル$\boldsymbol { a } =\left( \begin{matrix} 3 \ 1 \end{matrix} \right)^t $の長さは下記のように計算されます。

\parallel \boldsymbol { a } \parallel =\sqrt { { \left( 3 \right)  }^{ 2 }+{ \left( 1 \right)  }^{ 2 } } =\sqrt { 10 } \cong 3.16

この2次ベクトルの長さを幾何的に表現すると図のようになります。

長さが1となる2次ベクトルの長さを考えてみると、これは円周上の点と原点を結ぶ矢印となりますね。

\parallel \boldsymbol { e } \parallel =\sqrt { { e }_{ 1 }^{ 2 }+{ e }_{ 2 }^{ 2 } } =\sqrt { \sum _{ i=1 }^{ 2 }{ { e }_{ i }^{ 2 } }  } =1


長さが1のベクトルで座標軸に重ねっているベクトルを単位ベクトル${ \boldsymbol { e } }_{ i }$といいます。なので、2次元平面であれば、各次元と重なっている単位ベクトル${ \boldsymbol { e } }_{ 1 }$と${ \boldsymbol { e } }_{ 2 }$は、

{ \boldsymbol { e }  }_{ 1 }=\left( \begin{matrix} 1 \\ 0 \end{matrix} \right) ,{ \boldsymbol { e }  }_{ 2 }=\left( \begin{matrix} 0 \\ 1 \end{matrix} \right) 


となります。これをn次元に拡張したとしても、n次元空間上でも成り立つ話であって、各ベクトルの長さも変わらず1です。

{ \boldsymbol { e }  }_{ 1 }=\left( \begin{matrix} 1 \\ 0 \\ \vdots  \\ 0 \end{matrix} \right) ,{ \boldsymbol { e }  }_{ 2 }=\left( \begin{matrix} 0 \\ 1 \\ \vdots  \\ 0 \end{matrix} \right) ,\cdots ,{ \boldsymbol { e }  }_{ n }=\left( \begin{matrix} 0 \\ 0 \\ \vdots  \\ 1 \end{matrix} \right) \\ \parallel { \boldsymbol { e }  }_{ 1 }\parallel =\sqrt { \sum _{ i=1 }^{ n }{ { e }_{ 1 }^{ 2 } }  } =1

和と差、スカラー倍

ベクトル同士の和と差、スカラー倍(ベクトルとスカラーの積)を考えることができます。ベクトル同士の和と差は下記のように定義されます。

\boldsymbol { a } =\left[ \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \end{matrix} \right] ,\boldsymbol { b } =\left[ \begin{matrix} { b }_{ 1 } \\ b_{ 2 } \end{matrix} \right] \\ \left[ \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \end{matrix} \right] +\left[ \begin{matrix} { b }_{ 1 } \\ b_{ 2 } \end{matrix} \right] =\left[ \begin{matrix} { a }_{ 1 }+{ b }_{ 1 } \\ { a }_{ 2 }+b_{ 2 } \end{matrix} \right] 

ベクトルの要素同士を単純に足し合わせるだけです。幾何的に表現するとベクトルの終点にもう一つのベクトルの始点をくっつけたような感じです。例えば、

\boldsymbol { a } =\left[ \begin{matrix} 3 \\ 1 \end{matrix} \right] ,\boldsymbol { b } =\left[ \begin{matrix} 1 \\ 3 \end{matrix} \right] \\ \boldsymbol { a } +\boldsymbol { b } =\left[ \begin{matrix} 3+1 \\ 1+3 \end{matrix} \right] =\left[ \begin{matrix} 4 \\ 4 \end{matrix} \right]

というようなベクトルの和は幾何的に表現すると下記のように表されます。

\boldsymbol { a } =\left[ \begin{matrix} 3 \\ 1 \end{matrix} \right] ,\boldsymbol { b } =\left[ \begin{matrix} 1 \\ 3 \end{matrix} \right] \\ \boldsymbol { a } +\boldsymbol { b } =\left[ \begin{matrix} 3+1 \\ 1+3 \end{matrix} \right] =\left[ \begin{matrix} 4 \\ 4 \end{matrix} \right]

というようなベクトルの和は幾何的に表現すると下記のように表されます。

ベクトルの差は、要素同士を単純に除算するだけです。下記のように定義されます。

\boldsymbol { a } =\left[ \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \end{matrix} \right] ,\boldsymbol { b } =\left[ \begin{matrix} { b }_{ 1 } \\ b_{ 2 } \end{matrix} \right] \\ \boldsymbol { a } -\boldsymbol { b } =\left[ \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \end{matrix} \right] -\left[ \begin{matrix} { b }_{ 1 } \\ b_{ 2 } \end{matrix} \right] =\left[ \begin{matrix} { a }_{ 1 }-{ b }_{ 1 } \\ { a }_{ 2 }-b_{ 2 } \end{matrix} \right] 

ベクトルのスカラー倍は下記のように定義されます。

k{ \boldsymbol { a } = }k\left[ \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \end{matrix} \right] =\left[ \begin{matrix} k{ a }_{ 1 } \\ k{ a }_{ 2 } \end{matrix} \right] 

ベクトルの要素に$k$倍するだけです。幾何的に表現するとベクトルを$k$倍したような感じです。例えば、

\boldsymbol { a } =\left[ \begin{matrix} 2 \\ 1 \end{matrix} \right] ,k=2\\ k\boldsymbol { a } =2\left[ \begin{matrix} 2 \\ 1 \end{matrix} \right] =\left[ \begin{matrix} 4 \\ 2 \end{matrix} \right] 

というようなベクトルのスカラー倍は幾何的に表現すると下記のように表されます。

ベクトルの基準化(正規化)

ベクトルにその長さの逆数をかけることで、そのベクトルの長さを1に変換することができます。つまり、

Normalized\quad \boldsymbol { a } =\frac { 1 }{ \parallel \boldsymbol { a } \parallel  } \boldsymbol { a } =\frac { \boldsymbol { a }  }{ \parallel \boldsymbol { a } \parallel  } 

となります。さきほどの2次ベクトル$\boldsymbol { a } =\left( \begin{matrix} 3 \ -2 \end{matrix} \right) $を基準化してみます。長さは、

\parallel \boldsymbol { a } \parallel =\sqrt { 9+4 } =\sqrt { 13 } 

なので、この $\sqrt { 13 } $ の逆数をベクトルにかけます。

\\ Normalized\quad \boldsymbol { a } =\frac { 1 }{ \sqrt { 13 }  } \left[ \begin{matrix} 3 \\ -2 \end{matrix} \right] =\left[ \begin{matrix} \frac { 3 }{ \sqrt { 13 }  }  \\ \frac { -2 }{ \sqrt { 13 }  }  \end{matrix} \right] 

この基準化されたベクトルの長さは勿論1になります。

Normalized\parallel \boldsymbol { a } \parallel =\sqrt { { \left( \frac { 3 }{ \sqrt { 13 }  }  \right)  }^{ 2 }+{ \left( \frac { -2 }{ \sqrt { 13 }  }  \right)  }^{ 2 } } =\sqrt { \frac { 9+4 }{ 13 }  } =\sqrt { \frac { 13 }{ 13 }  } =1

ベクトルの1次(線形)結合(Linear combination)

ベクトルの1次結合は、スカラー倍したベクトルの和から成り立っているベクトルのことです。2次平面であれば、どのようなベクトルであっても、単位ベクトルの1次結合で表現することが可能です。例えば、さきほどの2次ベクトル$\boldsymbol { a } =\left( \begin{matrix} 3 \ -2 \end{matrix} \right)^t $を単位ベクトルの1次結合で表現すると下記のようになります。

\boldsymbol { a } =\left[ \begin{matrix} 3 \\ -2 \end{matrix} \right] ,\boldsymbol { { e }_{ 1 } } =\left[ \begin{matrix} 1 \\ 0 \end{matrix} \right] ,\boldsymbol { { e }_{ 2 } } =\left[ \begin{matrix} 0 \\ 1 \end{matrix} \right] \\ \boldsymbol { a } =k\boldsymbol { { e }_{ 1 } } +l\boldsymbol { { e }_{ 2 } } =\left[ \begin{matrix} 3 \\ -2 \end{matrix} \right] =3\left[ \begin{matrix} 1 \\ 0 \end{matrix} \right] +(-2)\left[ \begin{matrix} 0 \\ 1 \end{matrix} \right] =\left[ \begin{matrix} 3 \\ 0 \end{matrix} \right] +\left[ \begin{matrix} 0 \\ -2 \end{matrix} \right] =\left[ \begin{matrix} 3 \\ -2 \end{matrix} \right] 

もちろん、n次元でも同様に$n$個の単位ベクトルで、どのようなベクトルでも1次結合で表現することが可能です。

内積(Inner product)

ベクトル$\boldsymbol { a }$とベクトル$\boldsymbol { b }$の対応する成分の積和を定義したものを内積と呼びます。

\boldsymbol { a } =\left[ \begin{matrix} { a }_{ 1 } \\ { a }_{ 2 } \\ \vdots  \\ { a }_{ n } \end{matrix} \right] ,\boldsymbol { b } =\left[ \begin{matrix} { b }_{ 1 } \\ { b }_{ 2 } \\ \vdots  \\ b_{ n } \end{matrix} \right] \\ \left( \boldsymbol { a } \cdot \boldsymbol { b }  \right) ={ a }_{ 1 }{ b }_{ 1 }+a_{ 2 }{ b }_{ 2 }+\cdots +a_{ n }{ b }_{ n }=\sum _{ i=1 }^{ n }{ a_{ i }{ b }_{ i } } 

この定義通り、2次ベクトル$\boldsymbol { a } =\left( \begin{matrix} 2 \ 3 \end{matrix} \right)^t$と$\boldsymbol { b} =\left( \begin{matrix} 1 \ 2 \end{matrix} \right)^t $の内積を計算すると下記のようになります。

\boldsymbol { a } =\left[ \begin{matrix} 2 \\ 3 \end{matrix} \right] ,\boldsymbol { b } =\left[ \begin{matrix} 1 \\ 2 \end{matrix} \right] \\ \left( \boldsymbol { a } \cdot \boldsymbol { b }  \right) =2\cdot 1+3\cdot 2=2+6=8

内積はベクトル同士の積和からスカラーを返す演算です。つまり、2つのベクトルの情報を1つにまとめたものと考えることができそうです。内積を幾何的に表現してみましょう。天下り的ですが、内積は各ベクトルの長さと$cosθ$を用いて、表現しなおすことが可能です(証明などは他の方がされてますので、そちらをどうぞ)。

\left( \boldsymbol { a } \cdot \boldsymbol { b }  \right) =\parallel \boldsymbol { a } \parallel \parallel \boldsymbol { b } \parallel \cos { \theta  } 

つまり、2つのベクトル$\boldsymbol { a }$,$\boldsymbol { b }$の内積を表現している$\parallel \boldsymbol { a } \parallel \parallel \boldsymbol { b } \parallel \cos { \theta } $は、下記の図のように表現できます。

この図にあるように$\parallel \boldsymbol { a } \parallel \cos { \theta } $は、ベクトル$\boldsymbol { b }$と方向を揃えた上でのベクトル$\boldsymbol { a }$の長さと考えることができそうです。このとき、ベクトル$\boldsymbol { { a }_{ b } } $を$\boldsymbol { a }$の$\boldsymbol { b }$への正射影といいます。このように、方向が異なるベクトルを同じ方向に向けたときの成分同士の積和と考えられます。また図をみて明らかなように、ベクトルが同じ方向であれば、$cos(0)=1$となり、90°違うようであれば$cos(90)=0=直交$となるので、各ベクトル同士の類似度合い(相関係数とか、cos類似度など)を表現することも可能そうですね。試しに下記のようなベクトルの性質を見てみましょう。

\boldsymbol { a } =\left[ \begin{matrix} 2 \\ 3 \end{matrix} \right] ,\boldsymbol { b } =\left[ \begin{matrix} 1 \\ 2 \end{matrix} \right] \\ \parallel \boldsymbol { a } \parallel =\sqrt { 13 } ,\quad \parallel \boldsymbol { b } \parallel =\sqrt { 5 } ,\left( \boldsymbol { a } \cdot \boldsymbol { b }  \right) =2+6=8\\ \cos { \theta  } =\frac { \left( \boldsymbol { a } \cdot \boldsymbol { b }  \right)  }{ \parallel \boldsymbol { a } \parallel \parallel \boldsymbol { b } \parallel  } =\frac { 8 }{ \sqrt { 13 } \sqrt { 5 }  } \cong 0.99\\ \parallel \boldsymbol { a } \parallel \parallel \boldsymbol { b } \parallel \cos { \theta  } =\left( \boldsymbol { a } \cdot \boldsymbol { b }  \right) \\ \sqrt { 13 } \cdot \sqrt { 5 } \cdot \cos { (0.99)=8 } 

図より明らかですが、2つのベクトルの方向が似ているので、$cos(0.99)$となっており、限りになく1に近い=類似していると考えることができそうです。したがって、内積は2つのベクトルの情報を1つにまとめたものと考えそうですね。

距離

類似度を測る指標として距離というのもありますね。例えば、n次元ベクトルがあったとき、$a$と$b$の距離は、

\\ distance=\sqrt { \sum _{ i=1 }^{ n }{ { \left( { a }_{ i }-b_{ i } \right)  }^{ 2 } }  } 

となります。下記のような2次元ベクトルがあったとき、距離は下記のように計算できます。

\boldsymbol { a } =\left( \begin{matrix} -2 \\ 3 \end{matrix} \right) ,\boldsymbol { b } =\left( \begin{matrix} 1 \\ 2 \end{matrix} \right) \\ distance=\sqrt { \sum _{ i=1 }^{ 2 }{ { \left( { a }_{ i }-b_{ i } \right)  }^{ 2 } }  } \\ \boldsymbol { a } -\boldsymbol { b } =\left[ \begin{matrix} -2 \\ 3 \end{matrix} \right] -\left[ \begin{matrix} 1 \\ 2 \end{matrix} \right] =\left[ \begin{matrix} -2-1 \\ 3-2 \end{matrix} \right] =\left[ \begin{matrix} -3 \\ 1 \end{matrix} \right] \\ distance=\sqrt { { \left( -3 \right)  }^{ 2 }+{ \left( 1 \right)  }^{ 2 } } =\sqrt { 10 } 

計算式より明らかではありますが、2つのベクトルが似た者同士であれば、差の2乗の総和が小さくなるので、距離は小さくなります。一方で、2つのベクトルが似ていなければ、差の2乗の総和が大きくなるので、距離は大きくなりますね。クラスター分析(k-means)では、行ごとにクラスターラベルを割り付けますが、行ごとに距離などを使って、似た者同士を同じクラスタとしていたりしますね。

線形独立と基底

線形独立と基底をおさらいしています。個人的には、言葉で説明されてもイマイチ理解が進まなかったので、具体例ありきで始めます。下記のような式を満たす${ k }_{ 1 },{ k }_{ 2 }$を探すとします。つまり、ベクトルを原点に戻すための値の組み合わせです。

\left( \begin{matrix} 0 \\ 0 \end{matrix} \right) ={ k }_{ 1 }\left( \begin{matrix} 1 \\ 0 \end{matrix} \right) +{ k }_{ 2 }\left( \begin{matrix} 0 \\ 1 \end{matrix} \right) 

この場合${ k }_{ 1 }=0,{ k }_{ 2 }=0$しか、この式を満たす答えはありません。もう1つ似たような問題を考えます。下記のような式を満たす${ k }_{ 1 },{ k }_{ 2 },{ k }_{ 3 },{ k }_{ 4 }$を探すとします。

\left( \begin{matrix} 0 \\ 0 \end{matrix} \right) ={ k }_{ 1 }\left( \begin{matrix} 1 \\ 0 \end{matrix} \right) +{ k }_{ 2 }\left( \begin{matrix} 0 \\ 1 \end{matrix} \right) +{ k }_{ 3 }\left( \begin{matrix} 3 \\ 1 \end{matrix} \right) +{ k }_{ 4 }\left( \begin{matrix} 1 \\ 2 \end{matrix} \right) 

この場合は${ k }_{ 1 }=1,{ k }_{ 2 }=-3,{ k }_{ 3 }=-1,{ k }_{ 4 }=2$の組み合わせは、上記の式を満たすことができます。

\left( \begin{matrix} 0 \\ 0 \end{matrix} \right) =1\left( \begin{matrix} 1 \\ 0 \end{matrix} \right) +\left( -3 \right) \left( \begin{matrix} 0 \\ 1 \end{matrix} \right) +\left( -1 \right) \left( \begin{matrix} 3 \\ 1 \end{matrix} \right) +2\left( \begin{matrix} 1 \\ 2 \end{matrix} \right) \\ =\left( \begin{matrix} 1 \\ 0 \end{matrix} \right) +\left( \begin{matrix} 0 \\ -3 \end{matrix} \right) +\left( \begin{matrix} -3 \\ -1 \end{matrix} \right) +\left( \begin{matrix} 2 \\ 4 \end{matrix} \right) =\left( \begin{matrix} 0 \\ 0 \end{matrix} \right) 

他にも${ k }_{ 1 }=0,{ k }_{ 2 }=0,{ k }_{ 3 }=0,{ k }_{ 4 }=0$もこの式を満たします。このように、$k$が$n$個あったとしても、${ k }_{ 1 }=0,{ k }_{ 2 }=0,...,{ k }_{ n }=0$しか、その式を満たす組み合わせがない場合、「線形独立」といい、${ k }_{ 1 }=0,{ k }_{ 2 }=0,...,{ k }_{ n }=0$以外にも組み合わせが存在する場合、「線形従属」といいます。
次は「基底」というものを考えていきます。基底も同じく、言葉で説明されてもイマイチ理解が進まなかったので、具体例ありきで始めます。下記のような式を満たす ${ k }_{ 1 },{ k }_{ 2 }$を探すとします。つまり、ある位置ベクトルを満たす値の組み合わせです。

\left( \begin{matrix} 7 \\ 4 \end{matrix} \right) ={ k }_{ 1 }\left( \begin{matrix} 1 \\ 0 \end{matrix} \right) +{ k }_{ 2 }\left( \begin{matrix} 0 \\ 1 \end{matrix} \right) 

この場合${ k }_{ 1 }=7,{ k }_{ 2 }=4$しか、この式を満たす答えはありません。同じく、下記の式だとどうでしょうか。

\left( \begin{matrix} 7 \\ 4 \end{matrix} \right) ={ k }_{ 1 }\left( \begin{matrix} 3 \\ 1 \end{matrix} \right) +{ k }_{ 2 }\left( \begin{matrix} 1 \\ 2 \end{matrix} \right) 

この場合${ k }_{ 1 }=2,{ k }_{ 2 }=1$ですね。このようにして、任意のベクトルに対して、解の組み合わせが1組しか存在しない場合、そのベクトルの集合を基底と呼びます。なので、${ \left( \begin{matrix} 1 \ 0 \end{matrix} \right) }^{ t },{ \left( \begin{matrix} 0 \ 1 \end{matrix} \right) }^{ t }$や${ \left( \begin{matrix} 3 \ 1 \end{matrix} \right) }^{ t },{ \left( \begin{matrix} 1 \ 2 \end{matrix} \right) }^{ t }$は、基底と言えます。また、基底が直交する場合、それは正規直交基底と呼ばれます。${ \left( \begin{matrix} 1 \ 0 \end{matrix} \right) }^{ t },{ \left( \begin{matrix} 0 \ 1 \end{matrix} \right) }^{ t }$は、下記の通り内積が0なので、正規直交基底です。

{ \boldsymbol { e }  }_{ 1 }=\left( \begin{matrix} 1 \\ 0 \end{matrix} \right) ,{ \boldsymbol { e }  }_{ 2 }=\left( \begin{matrix} 0 \\ 1 \end{matrix} \right) \\ \left( { \boldsymbol { e }  }_{ 1 }\cdot { \boldsymbol { e }  }_{ 2 } \right) =1\cdot 0+0\cdot 1=0

見てわかるように${ \boldsymbol { e } }_{ 1 },{ \boldsymbol { e } }_{ 2 }$は、平面のすべての値を表現することが可能なので、${ \boldsymbol { e } }_{ 1 },{ \boldsymbol { e } }_{ 2 }$が張る平面(空間)と表記されることがあります。

行列

行列の表記

行列は、数、文字、記号を縦横に順番を付けて並べたものですね。下記のような行列は、見たとおり左から2行2列の行列、2行3列の行列、3行2列の行列と呼ばれます。

\left( \begin{matrix} 1 & 2 \\ 3 & 4 \end{matrix} \right) ,\left( \begin{matrix} 1 \\ 2 \\ 3 \end{matrix}\begin{matrix} 4 \\ 5 \\ 6 \end{matrix} \right) ,\left( \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{matrix} \right) 

一般的には下記のように表現されます。${ a }_{ 11 },{ a }_{ 21 },\dots ,{ a }_{ ij }$の各々のことベクトルと同様に$(i,j)$成分といいます。

A=\left( \begin{matrix} { a }_{ 11 } \\ { a }_{ 21 } \\ \vdots  \\ { a }_{ i1 } \end{matrix}\begin{matrix} { a }_{ 12 } \\ { a }_{ 22 } \\ \vdots  \\ { a }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { a }_{ 1j } \\ { a }_{ 2j } \\ \vdots  \\ { a }_{ ij } \end{matrix} \right) 

データサイエンスで有名なirisのデータは、150行5列の行列です。

iris=\left( \begin{matrix} 5.1 \\ 4.9 \\ \vdots  \\ 5.9 \end{matrix}\begin{matrix} 3.5 \\ 3.0 \\ \vdots  \\ 3.0 \end{matrix}\begin{matrix} 1.4 \\ 1.4 \\ \vdots  \\ 5.1 \end{matrix}\begin{matrix} 0.2 \\ 0.2 \\ \vdots  \\ 1.8 \end{matrix}\begin{matrix} setosa \\ setosa \\ \vdots  \\ virginica \end{matrix} \right) 

行列は、行に番号をつけたもの、列に番号をつけたもの、どちらとしても捉えることができます。下記のような行列があったとします。

\left( \begin{matrix} 1 \\ 2 \end{matrix}\begin{matrix} 2 \\ 3 \end{matrix}\begin{matrix} -3 \\ 4 \end{matrix} \right) 

幾何的に表現するために、この行列を列方向に分解していけば、2次元平面の位置ベクトルとして表現することが可能ですし、行方向に分解していけば、3次元空間の位置ベクトルとしても捉えることができます。

\left( \begin{matrix} 1 \\ 2 \end{matrix} \right) ,\left( \begin{matrix} 2 \\ 3 \end{matrix} \right) ,\left( \begin{matrix} -3 \\ 4 \end{matrix} \right) \\ \left( \begin{matrix} 1 & 2 & -3 \end{matrix} \right) ,\left( \begin{matrix} 2 & 3 & 4 \end{matrix} \right) 

データ分析では、行ごとに個人を識別するIDがあり、列方向に設問だったり、その集合を表す情報(irisの場合、長さや重さ)が保存されています。そのように考えれば、列ベクトルと考えて内積を計算すれば、列ごとの類似度を計算できますし、行ベクトルとして考えれば、個人ごとの類似度を計算できますね。
行列の演算をする際によく出てくるのが「転置行列」です。転置行列は行と列を入れ替えた行列のことです。右肩に$t,T$や$'$をつけて表記されます。

A=\left( \begin{matrix} 1 \\ 2 \end{matrix}\begin{matrix} 3 \\ 4 \end{matrix} \right) ,{ A }^{ t }=\left( \begin{matrix} 1 \\ 3 \end{matrix}\begin{matrix} 2 \\ 4 \end{matrix} \right) \\ A=\left( \begin{matrix} 1 \\ 4 \end{matrix}\begin{matrix} 2 \\ 5 \end{matrix}\begin{matrix} 3 \\ 6 \end{matrix} \right) ,{ A }^{ t }=\left( \begin{matrix} 1 \\ 2 \\ 3 \end{matrix}\begin{matrix} 4 \\ 5 \\ 6 \end{matrix} \right) 

まだまだ表現の話が続きますが、行列の対角に並んでいる値のことを「対角成分」といいます。その対角成分の和のことを「トレース」と呼びます。

A=\left( \begin{matrix} 1 \\ 2 \end{matrix}\begin{matrix} 3 \\ 4 \end{matrix} \right) \\ trace(A)=\sum _{ i=1 }^{ n }{ { a }_{ ii }={ a }_{ 11 }+{ a }_{ 12 }+\dots +{ a }_{ nn } } \\ trace(A)=1+4=5

次は「対角行列」を見ていきます。対角行列は対角成分以外が0を持つ行列です。そして、対角行列であり、対角成分が0の行列を「単位行列」と呼びます。

D=\left( \begin{matrix} { d }_{ 11 } \\ 0 \\ \vdots  \\ 0 \end{matrix}\begin{matrix} 0 \\ d_{ 22 } \\ \vdots  \\ 0 \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} 0 \\ 0 \\ \vdots  \\ d_{ ij } \end{matrix} \right) ,E=\left( \begin{matrix} 1 \\ 0 \\ \vdots  \\ 0 \end{matrix}\begin{matrix} 0 \\ 1 \\ \vdots  \\ 0 \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} 0 \\ 0 \\ \vdots  \\ 1 \end{matrix} \right) 

お次は「対称行列」です。対称行列は正方行列であり、対角成分を軸に値が対称の行列のことです。なので、転置しても何も変わりません。

A=\left( \begin{matrix} { a }_{ 11 } \\ { a }_{ 21 } \\ \vdots  \\ { a }_{ i1 } \end{matrix}\begin{matrix} { a }_{ 21 } \\ { a }_{ 22 } \\ \vdots  \\ { a }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { a }_{ i1 } \\ { a }_{ i2 } \\ \vdots  \\ { a }_{ ij } \end{matrix} \right) ,A=\left( \begin{matrix} 1 & 5 \\ 5 & 4 \end{matrix} \right) ,{ A }^{ t }=\left( \begin{matrix} 1 & 5 \\ 5 & 4 \end{matrix} \right) 

したがって、下記のような性質があります。転地しても何も変わらないということです。

A={ A }^{ t },\quad { \left( { A }^{ t } \right)  }^{ t }=A

最後の行列紹介です。「ゼロ行列」と「下(上)三角行列」です。ゼロ行列は成分が全て0の行列のことで、下(上)三角行列は下(上)三角以外は0の行列です。

0=\left( \begin{matrix} 0 \\ 0 \\ \vdots  \\ 0 \end{matrix}\begin{matrix} 0 \\ 0 \\ \vdots  \\ 0 \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} 0 \\ 0 \\ \vdots  \\ 0 \end{matrix} \right) ,T=\left( \begin{matrix} { t }_{ 11 } \\ { t }_{ 21 } \\ \vdots  \\ { t }_{ i1 } \end{matrix}\begin{matrix} 0 \\ t_{ 22 } \\ \vdots  \\ { t }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} 0 \\ 0 \\ \vdots  \\ t_{ ij } \end{matrix} \right) \\ 

和と差、スカラー倍

行列にもベクトルと同じようにスカラーをかけて演算することをスカラー倍と呼びます。各成分にスカラーである$k$倍するだけです。

kA=k\left( \begin{matrix} { a }_{ 11 } \\ { a }_{ 21 } \\ \vdots  \\ { a }_{ i1 } \end{matrix}\begin{matrix} { a }_{ 12 } \\ { a }_{ 22 } \\ \vdots  \\ { a }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { a }_{ 1j } \\ { a }_{ 2j } \\ \vdots  \\ { a }_{ ij } \end{matrix} \right) =\left( \begin{matrix} k{ a }_{ 11 } \\ k{ a }_{ 21 } \\ \vdots  \\ k{ a }_{ i1 } \end{matrix}\begin{matrix} k{ a }_{ 12 } \\ k{ a }_{ 22 } \\ \vdots  \\ k{ a }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} k{ a }_{ 1j } \\ k{ a }_{ 2j } \\ \vdots  \\ k{ a }_{ ij } \end{matrix} \right) 

2つの行列が等しい(=行の数、列の数が同じ)場合、和と差を考えることができます。下記では和を一般化したものを記載していますが、差の場合も同様に計算できます。

A=\left( \begin{matrix} { a }_{ 11 } \\ { a }_{ 21 } \\ \vdots  \\ { a }_{ i1 } \end{matrix}\begin{matrix} { a }_{ 12 } \\ { a }_{ 22 } \\ \vdots  \\ { a }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { a }_{ 1j } \\ { a }_{ 2j } \\ \vdots  \\ { a }_{ ij } \end{matrix} \right) ,B=\left( \begin{matrix} { b }_{ 11 } \\ { b }_{ 21 } \\ \vdots  \\ { b }_{ i1 } \end{matrix}\begin{matrix} { b }_{ 12 } \\ { b }_{ 22 } \\ \vdots  \\ { b }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { b }_{ 1j } \\ { b }_{ 2j } \\ \vdots  \\ { b }_{ ij } \end{matrix} \right) \\ A+B=A=\left( \begin{matrix} { a }_{ 11 }+{ b }_{ 11 } \\ { a }_{ 21 }+{ b }_{ 21 } \\ \vdots  \\ { a }_{ i1 }+{ b }_{ i1 } \end{matrix}\begin{matrix} { a }_{ 12 }+{ b }_{ 12 } \\ { a }_{ 22 }+{ b }_{ 22 } \\ \vdots  \\ { a }_{ i2 }+{ b }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { a }_{ 1j }+{ b }_{ 1j } \\ { a }_{ 2j }+{ b }_{ 2j } \\ \vdots  \\ { a }_{ ij }+{ b }_{ ij } \end{matrix} \right) 

行列の積

成分同士のかけ合わせ方が少し変わっているので、行列の積は体例を載せておきます。線形代数の基本・「スカラー」「ベクトル」「行列」の積でわかりやすく紹介されていましたので、更にグラフィカルに知りたい方にはおすすめです。勉強になる素晴らしい記事です。

A=\left( \begin{matrix} 1 & 1 \\ 1 & -2 \end{matrix} \right) ,B=\left( \begin{matrix} 3 & 1 \\ 1 & 2 \end{matrix} \right) \\ AB=\left( \begin{matrix} 1\cdot 3+1\cdot 1 & 1\cdot 1+1\cdot 2 \\ 1\cdot 3+\left( -2 \right) \cdot 1 & \quad 1\cdot 1+\left( -2 \right) \cdot 2 \end{matrix} \right) =\left( \begin{matrix} 4 & 3 \\ 1 & -3 \end{matrix} \right) 

2次正方行列で一般化するとこのようになります。行に対して列をかけて足す、行に対して列をかけて足す、の繰り返しです。行列の積は順序が重要なので、実数の掛け算のように交換法則は一般的には成り立ちません。なので、$BA$と$AB$は一般的には等しくありませんが、転置させた行列には$\ { \left( { A }B \right) }^{ t }={ B }^{ t }A^{ t }$という性質があります。

A=\left( \begin{matrix} { a }_{ 11 } & { a }_{ 12 } \\ { a }_{ 21 } & { a }_{ 22 } \end{matrix} \right) ,B=\left( \begin{matrix} { b }_{ 11 } & { b }_{ 12 } \\ { b }_{ 21 } & { b }_{ 22 } \end{matrix} \right) \\ AB=\left( \begin{matrix} { a }_{ 11 }b_{ 11 }+{ a }_{ 12 }b_{ 21 } & { \quad a }_{ 11 }b_{ 12 }+{ a }_{ 12 }b_{ 22 } \\ { a }_{ 21 }b_{ 11 }+{ a }_{ 22 }b_{ 21 } & \quad { a }_{ 21 }b_{ 12 }+{ a }_{ 22 }b_{ 22 } \end{matrix} \right) 

また、このように簡略化されて行列の積が表現されることがあります。はじめて見たときはなんのこっちゃさっぱりでしたが、分解すればなんとか理解できます。

データ分析では「偏差」というものを考えることがよくありますね。偏差を成分として持っている行列を偏差行列と呼びます。$\bar { A } $には、各列の平均が格納されています。$A$から$\bar { A } $を引いたものが偏差行列です。偏差行列を使って、転置した偏差行列と偏差行列の積を考えると、N倍の共分散行列を計算することが可能です。

A=\left( \begin{matrix} { a }_{ 11 } \\ { a }_{ 21 } \\ \vdots  \\ { a }_{ i1 } \end{matrix}\begin{matrix} { a }_{ 12 } \\ { a }_{ 22 } \\ \vdots  \\ { a }_{ i2 } \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { a }_{ 1j } \\ { a }_{ 2j } \\ \vdots  \\ { a }_{ ij } \end{matrix} \right) ,\bar { A } =\left( \begin{matrix} \bar { { a }_{ 1 } }  \\ \bar { { a }_{ 1 } }  \\ \vdots  \\ \bar { { a }_{ 1 } }  \end{matrix}\begin{matrix} \bar { { a }_{ 2 } }  \\ \bar { { a }_{ 2 } }  \\ \vdots  \\ \bar { { a }_{ 2 } }  \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} \bar { { a }_{ j } }  \\ \bar { { a }_{ j } }  \\ \vdots  \\ \bar { { a }_{ j } }  \end{matrix} \right) \\ A-\bar { A } =\left( \begin{matrix} { a }_{ 11 }-\bar { { a }_{ 1 } }  \\ { a }_{ 21 }-\bar { { a }_{ 1 } }  \\ \vdots  \\ { a }_{ i1 }-\bar { { a }_{ 1 } }  \end{matrix}\begin{matrix} { a }_{ 12 }-\bar { { a }_{ 2 } }  \\ { a }_{ 22 }-\bar { { a }_{ 2 } }  \\ \vdots  \\ { a }_{ i2 }-\bar { { a }_{ 2 } }  \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { a }_{ 1j }-\bar { { a }_{ j } }  \\ { a }_{ 2j }-\bar { { a }_{ j } }  \\ \vdots  \\ { a }_{ ij }-\bar { { a }_{ j } }  \end{matrix} \right) 

N倍の共分散行列を計算する行列の積のイメージを掴んでおきます。下記のような2×2行列を列ベクトルとして考えます。転置した$A'$と$A$の行列の積は、列ベクトルの内積を成分とする行列になることがわかりますね。つまり、対角成分は自分同士の掛け合わせ、対角要素以外は各々の内積となっていることがわかります。

A=\left( \begin{matrix} a_{ 11 } & a_{ 12 } \\ a_{ 21 } & a_{ 22 } \end{matrix} \right) =\left( \begin{matrix} a_{ 1 } & a_{ 2 } \end{matrix} \right) \\ { A }^{ t }A=\left( \begin{matrix} { a }_{ 11 }^{ 2 }+{ a }_{ 21 }^{ 2 } & { a }_{ 11 }^{ 2 }{ a }_{ 12 }^{ 2 }+{ a }_{ 21 }^{ 2 }{ a }_{ 22 }^{ 2 } \\ { a }_{ 11 }^{ 2 }{ a }_{ 12 }^{ 2 }+{ a }_{ 21 }^{ 2 }{ a }_{ 22 }^{ 2 } & { a }_{ 12 }^{ 2 }+{ a }_{ 22 } \end{matrix} \right) =\left( \begin{matrix} \left( { a }_{ 1 }\cdot { a }_{ 1 } \right)  & \left( { a }_{ 1 }\cdot { a }_{ 2 } \right)  \\ \left( { a }_{ 2 }\cdot { a }_{ 1 } \right)  & \left( { a }_{ 2 }\cdot { a }_{ 2 } \right)  \end{matrix} \right) 

このようなイメージをもっておけば、下記のような頭がクラクラするような行列であっても、対角成分は自分同士の掛け合わせ、対角要素以外は各々のベクトルの内積となっているだけなので、理解しやすいかと思います。

{ X }^{ t }X=\left( \begin{matrix} { x }_{ 11 }-\bar { { x }_{ 1 } }  \\ { x }_{ 12 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ 1n }-\bar { { x }_{ n } }  \end{matrix}\begin{matrix} { x }_{ 21 }-\bar { { x }_{ 1 } }  \\ { x }_{ 22 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ 2n }-\bar { { x }_{ n } }  \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { x }_{ i1 }-\bar { { x }_{ 1 } }  \\ { x }_{ i2 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ in }-\bar { { x }_{ n } }  \end{matrix} \right) \left( \begin{matrix} { x }_{ 11 }-\bar { { x }_{ 1 } }  \\ { x }_{ 21 }-\bar { { x }_{ 1 } }  \\ \vdots  \\ { x }_{ i1 }-\bar { { x }_{ 1 } }  \end{matrix}\begin{matrix} { x }_{ 12 }-\bar { { x }_{ 2 } }  \\ { x }_{ 22 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ i2 }-\bar { { x }_{ 2 } }  \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} { x }_{ 1n }-\bar { { x }_{ n } }  \\ { x }_{ 2n }-\bar { { x }_{ n } }  \\ \vdots  \\ { x }_{ in }-\bar { { x }_{ n } }  \end{matrix} \right) \\ =\left( \begin{matrix} \sum { { \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }^{ 2 } }  \\ \sum { \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right) \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }  \\ \vdots  \\ \sum { \left( { x }_{ in }-\bar { { x }_{ n } }  \right) \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }  \end{matrix}\begin{matrix} \sum { \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right) \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }  \\ \sum { { \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }^{ 2 } }  \\ \vdots  \\ \sum { \left( { x }_{ in }-\bar { { x }_{ n } }  \right) \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }  \end{matrix}\begin{matrix} \cdots  \\ \cdots  \\ \ddots  \\ \cdots  \end{matrix}\begin{matrix} \sum { \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right) \left( { x }_{ in }-\bar { { x }_{ n } }  \right)  }  \\ \sum { \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right) \left( { x }_{ in }-\bar { { x }_{ n } }  \right)  }  \\ \vdots  \\ \sum { { \left( { x }_{ in }-\bar { { x }_{ n } }  \right)  }^{ 2 } }  \end{matrix} \right) 

先程も紹介したようにこれはN倍の共分散行列なので行数$N$で割り戻せば、共分散行列($\frac { 1 }{ N } ({ X }^{ t }{ X })=\frac { 1 }{ \sqrt { N } } { X }^{ t }{ \frac { 1 }{ \sqrt { N } } X }$)となります。この行列の各成分を各列の標準偏差で割っている場合、これは相関行列になります。この方法の他に、下記のように共分散行列と標準偏差を対角成分に持つ対角行列から相関行列を得ることも可能です。

\left( \begin{matrix} 1 & { \rho  }_{ 12 } \\ { \rho  }_{ 21 } & 1 \end{matrix} \right) =\left( \begin{matrix} \frac { 1 }{ { { \sigma  } }_{ 1 } }  & 0 \\ 0 & \frac { 1 }{ { { \sigma  } }_{ 2 } }  \end{matrix} \right) \left( \begin{matrix} { \sigma  }_{ 1 }^{ 2 } & { \sigma  }_{ 12 } \\ { \sigma  }_{ 21 } & { \sigma  }_{ 2 }^{ 2 } \end{matrix} \right) \left( \begin{matrix} \frac { 1 }{ { { \sigma  } }_{ 1 } }  & 0 \\ 0 & \frac { 1 }{ { { \sigma  } }_{ 2 } }  \end{matrix} \right) 

逆行列

「逆行列」という行列も存在します。逆行列は正則行列(行列式が0ではない行列)について定義されるものです。役割としては、行列$A$との積が単位行列になるものをAの逆行列と表現し、${ A }^{ -1 }$で表します。

{ A }^{ -1 }A=E,\quad { AA }^{ -1 }=E

具体的には下記のような行列のことです。

A=\begin{pmatrix} 4 & 1 \\ 1 & 3 \end{pmatrix},{ A }^{ -1 }=\begin{pmatrix} \frac { 3 }{ 11 }  & -\frac { 1 }{ 11 }  \\ -\frac { 1 }{ 11 }  & \frac { 4 }{ 11 }  \end{pmatrix}\\ \begin{pmatrix} 4 & 1 \\ 1 & 3 \end{pmatrix}\begin{pmatrix} \frac { 3 }{ 11 }  & -\frac { 1 }{ 11 }  \\ -\frac { 1 }{ 11 }  & \frac { 4 }{ 11 }  \end{pmatrix}=\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}\\ \begin{pmatrix} \frac { 3 }{ 11 }  & -\frac { 1 }{ 11 }  \\ -\frac { 1 }{ 11 }  & \frac { 4 }{ 11 }  \end{pmatrix}\begin{pmatrix} 4 & 1 \\ 1 & 3 \end{pmatrix}=\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}

また、逆行列は下記が成り立ちます。

{ \left( AB \right)  }^{ -1 }={ B }^{ -1 }A^{ -1 }\\ \\ \\ 

行列の幾何的な表現

行列によるベクトル変換

下記のように、行列にベクトルを掛け合わせると、ベクトルになります。

\left( \begin{matrix} { x }^{ ' } \\ y^{ ' } \end{matrix} \right) =\begin{pmatrix} a & b \\ c & d \end{pmatrix}\left( \begin{matrix} x \\ y \end{matrix} \right) \\ 

下記のように考えると、行列$A$によって$X$と$Y$が対応付けられていることがわかります。

\boldsymbol { Y } =\left( \begin{matrix} { x }^{ ' } \\ y^{ ' } \end{matrix} \right) ,A=\begin{pmatrix} a & b \\ c & d \end{pmatrix},\boldsymbol { X } =\left( \begin{matrix} { x } \\ y \end{matrix} \right) \\ \boldsymbol { Y } =A\boldsymbol { X } 

つまり、$x$から$y$が決まるとき、$y=f\left( x \right) $として$f$を$x$の関数と考えるように、ベクトル$\boldsymbol { X } $から$\boldsymbol { Y } $の関係も$\boldsymbol { Y } =f\left( \boldsymbol { X } \right) $として、ベクトルの関数を考えることができます。これを線形写像といいます。下記の行列$A$を使って、各ベクトル$\boldsymbol { a } ,\boldsymbol { b } ,\boldsymbol { c } ,\boldsymbol { d } $の写像された様子が下記の図です。

この行列$A$のことを表現行列と呼びます。様々な表現行列を使うことで、ベクトルを新しい座標に写すことができます。$x$成分を$α$倍、$y$成分を$β$倍するような行列や回転行列は下記のとおりです。

\begin{pmatrix} \alpha  & 0 \\ 0 & \beta  \end{pmatrix},\begin{pmatrix} \cos { \theta  }  & -\sin { \theta  }  \\ \sin { \theta  }  & \cos { \theta  }  \end{pmatrix}

直交行列による直交回転

表現行列の1つとして、「直交行列」というものがあります。これは、正方行列を列ベクトルに分解したときに、各ベクトルが直交し(内積=0)、長さが1の行列のことを指します。下記の行列は直交行列の1例です。

\begin{pmatrix} \frac { 1 }{ \sqrt { 2 }  }  & -\frac { 1 }{ \sqrt { 2 }  }  \\ \frac { 1 }{ \sqrt { 2 }  }  & \frac { 1 }{ \sqrt { 2 }  }  \end{pmatrix}\\ Norm=\sqrt { { \left( \frac { 1 }{ \sqrt { 2 }  }  \right)  }^{ 2 }+{ \left( \frac { 1 }{ \sqrt { 2 }  }  \right)  }^{ 2 } } =\sqrt { 1 } =1\\ InnerProduct=\frac { 1 }{ \sqrt { 2 }  } \cdot \left( -\frac { 1 }{ \sqrt { 2 }  }  \right) +\frac { 1 }{ \sqrt { 2 }  } \cdot \frac { 1 }{ \sqrt { 2 }  } =0

単位ベクトル${ \boldsymbol { e } }_{ 1 }$と${ \boldsymbol { e } }_{ 2 }$も直交行列ですし、下記の回転を行う行列も直交行列です。

\begin{pmatrix} \cos { \theta  }  & \sin { \theta  }  \\ -\sin { \theta  }  & \cos { \theta  }  \end{pmatrix}\\ Norm=\sqrt { { \left( \cos { \theta  }  \right)  }^{ 2 }+{ \left( -\sin { \theta  }  \right)  }^{ 2 } } =\cos ^{ 2 }{ \theta +\sin ^{ 2 }{ \theta  }  } =1\\ InnerProduct=\cos { \theta  } \cdot \sin { \theta  } +\cos { \theta  } \cdot (-\sin { \theta ) } =0

$θ=30°$の行列を$\boldsymbol { a } =\left( \begin{matrix} 1 \ 2 \end{matrix} \right)^t $に掛け合わせると$(1.87, 1.23)$に写像されます。

T=\begin{pmatrix} \cos { { 30 }^{ \circ  } }  & \sin { { 30 }^{ \circ  } }  \\ -\sin { { 30 }^{ \circ  } }  & \cos { { 30 }^{ \circ  } }  \end{pmatrix}=\begin{pmatrix} \frac { \sqrt { 3 }  }{ 2 }  & \frac { 1 }{ 2 }  \\ -\frac { 1 }{ 2 }  & \frac { \sqrt { 3 }  }{ 2 }  \end{pmatrix}

面白い性質として、回転前と回転後で長さは変わらないという点です。

T=\begin{pmatrix} \frac { \sqrt { 3 }  }{ 2 }  & \frac { 1 }{ 2 }  \\ -\frac { 1 }{ 2 }  & \frac { \sqrt { 3 }  }{ 2 }  \end{pmatrix},\boldsymbol { a } =\left( \begin{matrix} 1 \\ 2 \end{matrix} \right) \\
\begin{pmatrix} \frac { \sqrt { 3 }  }{ 2 }  & \frac { 1 }{ 2 }  \\ -\frac { 1 }{ 2 }  & \frac { \sqrt { 3 }  }{ 2 }  \end{pmatrix}\left( \begin{matrix} 1 \\ 2 \end{matrix} \right) =\left( \begin{matrix} 1.87 \\ 1.23 \end{matrix} \right) \\ \parallel \boldsymbol { a } \parallel =\sqrt { { 1 }^{ 2 }+2^{ 2 } } =\sqrt { 5 } \\ \parallel T\boldsymbol { a } \parallel =\sqrt { { 1.87 }^{ 2 }+1.23^{ 2 } } =\sqrt { 5 } 

このように回転行列(30°)は、ベクトルを30°回転させた位置にベクトルは写像されます。または、ベクトルを回転させるのではなく、「軸を回転させる」と考えることもできそうです。図のように、ベクトルは固定したまま軸を回転させたイメージです。このように、直交行列による回転は直交回転と呼ばれます。

分散と距離と直交回転

直交回転による分散の変化を見ていきます。まずは下記の偏差行列を考えます。この2本の列ベクトルを行ベクトルとして捉えると、2次元平面上の$N$個の点の散布図として表現できますね。

X=\left( \begin{matrix} { x }_{ 11 }-\bar { { x }_{ 1 } }  \\ { x }_{ 21 }-\bar { { x }_{ 1 } }  \\ \vdots  \\ { x }_{ n1 }-\bar { { x }_{ 1 } }  \end{matrix}\begin{matrix} { x }_{ 12 }-\bar { { x }_{ 2 } }  \\ { x }_{ 22 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ n2 }-\bar { { x }_{ 2 } }  \end{matrix} \right) 

その場合、${ x }_{ 1 }$と${ x }_{ 2 }$の分散は下記のように計算されます。

Var\left( { x }_{ 1 } \right) =\frac { 1 }{ n } \sum { { \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }^{ 2 } } ,\quad Var\left( { x }_{ 2 } \right) =\frac { 1 }{ n } \sum { { \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }^{ 2 } } 

そして、このまま行列全体の全分散を考えると、分散の和を取ることで、下記のようになります。

Var\left( { x }_{ 1 }+{ x }_{ 2 } \right) =\frac { 1 }{ n } \sum { { \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }^{ 2 } } +\frac { 1 }{ n } \sum { { \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }^{ 2 } } =\frac { 1 }{ n } \sum { \left\{ { \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }^{ 2 }+{ \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }^{ 2 } \right\}  } 

このとき、各点への距離$d$を考えると、$\sum$の中身の部分と一致します。

{ { d } }_{ i }^{ 2 }={ \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }^{ 2 }+{ \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }^{ 2 }

つまり、この$d^2$は、N倍の全分散に個体$i$が占める割合と考えることができます。また、全分散の第1項は${ x }_{ 1 }$の占める割合の大きさ、第2項は${ x }_{ 2 }$の占める割合の大きさと考えられます。

全分散=\sum { \left\{ { \left( { x }_{ i1 }-\bar { { x }_{ 1 } }  \right)  }^{ 2 }+{ \left( { x }_{ i2 }-\bar { { x }_{ 2 } }  \right)  }^{ 2 } \right\}  } 

なので、この割合を変えることができれば、主成分分析のように、ある軸に個体$i$の情報を集約させるようなことができそうですね。先程の図をもう一度見てると、ある個体$a$を回転させたあとでは距離$d$は変わらず、成分$(1,2)→(1.87,1.23)$が変わっていることがわかります。

つまり、回転後では、点$a$の成分が黒色の横次元より、グレー色の横次元に集中していることがわかります。${ x }_{ 1 }$と${ x }_{ 2 }$の軸を回転させることで、成分の割合を変化させることができます。
したがって、すべての個体に対して、回転後の新たな次元に集中するような回転角を見つける必要ができてきます。その新たな次元に集中させられるような回転が実現できれば、主成分という軸が作れそうですね。そのためには固有ベクトルと固有値が必要になります。それは、次章で見ていくことにします。

固有値と固有ベクトル

固有値と固有ベクトルとは、下記の式を満たす$\lambda$と$\boldsymbol { x }$のことである…みたいな始まりはお決まりな訳ですが…

A\boldsymbol { x } =\lambda \boldsymbol { x } ,\quad \boldsymbol { x } \neq \boldsymbol { 0 } 

この式を満たすスカラー$\lambda$と$n$次非ゼロ列ベクトル$\boldsymbol { x }$が存在する場合、スカラー$\lambda$を行列$A$の固有値と呼び、$\boldsymbol { x }$を固有値$\lambda$の$A$に対応する固有ベクトルと呼びます。固有値と固有ベクトルの計算方法は沢山紹介されているので省きますが、例えば下記のような行列$A$に対応する固有値と固有ベクトルはこのようになります。計算の方法は省きます。

A=\begin{pmatrix} 1 & 2 \\ 2 & -2 \end{pmatrix}\\ \lambda =2,\quad \boldsymbol { { x }_{ 1 } } =\left( \begin{matrix} 2 \\ 1 \end{matrix} \right) \\ \lambda =-3,\quad \boldsymbol { { x }_{ 2 } } =\left( \begin{matrix} 1 \\ -2 \end{matrix} \right) \\ \\ 

行列$A$のように対称行列の場合、固有ベクトルは直行する性質があります。

\boldsymbol { { x }_{ 1 } } \cdot \boldsymbol { { x }_{ 2 } } =2\cdot 1+1\cdot \left( -2 \right) =0

また、行列$A$は、固有ベクトルからなる対称行列$X$と対角成分が固有値である対角行列$D$の積で表現できます。

\begin{pmatrix} 1 & 2 \\ 2 & -2 \end{pmatrix}=\begin{pmatrix} \frac { 2 }{ \sqrt { 5 }  }  & \frac { 1 }{ \sqrt { 5 }  }  \\ \frac { 1 }{ \sqrt { 5 }  }  & \frac { -2 }{ \sqrt { 5 }  }  \end{pmatrix}\begin{pmatrix} 2 & 0 \\ 0 & 3 \end{pmatrix}\begin{pmatrix} \frac { 2 }{ \sqrt { 5 }  }  & \frac { 1 }{ \sqrt { 5 }  }  \\ \frac { 1 }{ \sqrt { 5 }  }  & \frac { -2 }{ \sqrt { 5 }  }  \end{pmatrix}\\ A=XD{ X }^{ t }

この式に対して、両辺に左から${ X }^{ t }$、右から$X$をかけることで、固有値を対角化できます。

{ X }^{ t }AX={ X }^{ t }XD{ X }^{ t }X,\quad { X }^{ t }X=E\\ { X }^{ t }AX=D

共分散行列と固有値と固有ベクトル

対称行列(2次で考えます…)である分散共分散行列$C$の基準化した固有ベクトル${ \boldsymbol { u } }_{ 1 },{ \boldsymbol { u } }_{ 2 }$の列ベクトルからなる行列$U$、固有値を対角成分にもつ対角行列$D$とすると、下記のように固有値の対角行列$U$を表現できます

C=\frac { 1 }{ \sqrt { N }  } { \left( \begin{matrix} { x }_{ 11 }-\bar { { x }_{ 1 } }  \\ { x }_{ 21 }-\bar { { x }_{ 1 } }  \\ \vdots  \\ { x }_{ n1 }-\bar { { x }_{ 1 } }  \end{matrix}\begin{matrix} { x }_{ 12 }-\bar { { x }_{ 2 } }  \\ { x }_{ 22 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ n2 }-\bar { { x }_{ 2 } }  \end{matrix} \right)  }^{ t }\frac { 1 }{ \sqrt { N }  } \left( \begin{matrix} { x }_{ 11 }-\bar { { x }_{ 1 } }  \\ { x }_{ 21 }-\bar { { x }_{ 1 } }  \\ \vdots  \\ { x }_{ n1 }-\bar { { x }_{ 1 } }  \end{matrix}\begin{matrix} { x }_{ 12 }-\bar { { x }_{ 2 } }  \\ { x }_{ 22 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ n2 }-\bar { { x }_{ 2 } }  \end{matrix} \right) \\ \\ U^{ t }CU=D\\ 

共分散行列は、対称行列なので、ここから導かれる固有ベクトルは直交します。その直交するベクトルを列としてもつ行列を、例えば変数${ \boldsymbol { x } }_{ 1 },{ \boldsymbol { x } }_{ 2 }$に掛け合わせるとどうなるでしょうか。
直交行列は、座標軸または点を回転することになるため、${ \boldsymbol { x } }_{ 1 },{ \boldsymbol { x } }_{ 2 }$の成分が変化することがわかりますね。先程の式にあてはめると、下記のようになりますね。

{U}^{ t }\frac { 1 }{ \sqrt { N }  } { \left( \begin{matrix} { x }_{ 11 }-\bar { { x }_{ 1 } }  \\ { x }_{ 21 }-\bar { { x }_{ 1 } }  \\ \vdots  \\ { x }_{ n1 }-\bar { { x }_{ 1 } }  \end{matrix}\begin{matrix} { x }_{ 12 }-\bar { { x }_{ 2 } }  \\ { x }_{ 22 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ n2 }-\bar { { x }_{ 2 } }  \end{matrix} \right)  }^{ t }\frac { 1 }{ \sqrt { N }  } \left( \begin{matrix} { x }_{ 11 }-\bar { { x }_{ 1 } }  \\ { x }_{ 21 }-\bar { { x }_{ 1 } }  \\ \vdots  \\ { x }_{ n1 }-\bar { { x }_{ 1 } }  \end{matrix}\begin{matrix} { x }_{ 12 }-\bar { { x }_{ 2 } }  \\ { x }_{ 22 }-\bar { { x }_{ 2 } }  \\ \vdots  \\ { x }_{ n2 }-\bar { { x }_{ 2 } }  \end{matrix} \right) U=D

つまり、回転後の次元1の座標の二乗和は${ \lambda }_{ 1 }$であり、次元2の二乗和は${ \lambda }_{ 2 }$となることから、回転後には全分散が占める割合が変化することがわかります。
固有ベクトルからなる直交行列は、各次元の成分が順番に大きくなります。言い換えると、分散が最も大きくなるように回転させていることになります。これは$n$次元でも同様です。このような考えは主成分分析の計算に通ずる考え方です。

ベクトルの微分

ベクトルだったり、行列を使うことで計算式をコンパクトにできますが、ベクトルを微分することになるので、少し抽象的になってしまうと個人的には感じています。なので、ベクトルの微分を少しおさらいしておきます。
$x,y,z$の3つの変数で表される$f\left( x,y,z \right) $があったとします。この関数をベクトル${ \boldsymbol { x } }={ \left( \begin{matrix} x & y & z \end{matrix} \right) }^{ t }$で微分することを下記のように表します。

\frac { \partial f }{ \partial { \boldsymbol { x }  } } =\left( \begin{matrix} \frac { \partial f }{ \partial { x } }  \\ \frac { \partial f }{ \partial { y } }  \\ \frac { \partial f }{ \partial { z } }  \end{matrix} \right) 

実際に$f\left( \boldsymbol { x } \right) =x^{ 2 }+2xy+2yz\ $を微分してみます。

\frac { \partial f }{ \partial { \boldsymbol { x }  } } =\left( \begin{matrix} \frac { \partial f }{ \partial { x } }  \\ \frac { \partial f }{ \partial { y } }  \\ \frac { \partial f }{ \partial { z } }  \end{matrix} \right) =\left( \begin{matrix} 2x+2y \\ 2x+2z \\ 2y \end{matrix} \right) 

なんとなく雰囲気はつかめたかと思いますが、下記のような、どの項も2次式の多項式を微分するとどうなるでしょうか。こような式を「2次形式(2次同次多項式)」と呼びます。

x^{ 2 }+2xy+4y^{ 2 }\\ x^{ 2 }+2y^{ 2 }+3z^{ 2 }+xy+2yz-3zx

行列で表現するとこんな感じです。

Q\left( x,y \right) =\left( \begin{matrix} x & y \end{matrix} \right) \begin{pmatrix} a & b \\ b & c \end{pmatrix}\left( \begin{matrix} x \\ y \end{matrix} \right) =x\left( ax+by \right) +y\left( bx+cy \right) =ax^{ 2 }+2bxy+cy^{ 2 }

$2bxy$がない下記のような場合は「標準形」といいます。2次形式を標準系にすることで図形の性質を調べたりできますが…

Q\left( x,y \right) =\left( \begin{matrix} x & y \end{matrix} \right) \begin{pmatrix} a & 0 \\ 0 & c \end{pmatrix}\left( \begin{matrix} x \\ y \end{matrix} \right) =ax^{ 2 }+cy^{ 2 }

標準形はさておき、下記のようにまとめてしまえば、より見通しが良くなりますね。

{ \boldsymbol { x }  }^{ t }=\left( \begin{matrix} x & y \end{matrix} \right) ,\quad A=\begin{pmatrix} a & b \\ b & c \end{pmatrix},\quad { \boldsymbol { x }  }=\left( \begin{matrix} x \\ y \end{matrix} \right) \\ Q\left( x,y \right) ={ \boldsymbol { x }  }^{ t }A{ \boldsymbol { x }  }

さてさて、これを微分してみましょう。微分すると下記のようにまとめられます。

\frac { \partial Q }{ \partial { \boldsymbol { x }  } } =\left( \begin{matrix} \frac { \partial f }{ \partial { x } }  \\ \frac { \partial f }{ \partial y }  \end{matrix} \right) =\left( \begin{matrix} 2ax+2by \\ 2bx+2cy \end{matrix} \right) =2\begin{pmatrix} a & b \\ b & c \end{pmatrix}\left( \begin{matrix} x \\ y \end{matrix} \right) =2A\boldsymbol { x } 

一般化するとこのようになりますね。

\frac { \partial \left( { \boldsymbol { x }  }^{ t }A{ \boldsymbol { x }  } \right)  }{ \partial { \boldsymbol { x }  } } =2A\boldsymbol { x } 

ベクトル・行列の微分については、The Matrix Cookbookにすごくすごくまとまっています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away