About connecting the dots.

data science related trivial things

線形代数の用語と意味まとめ(主に自分用)

恥ずかしながら,線形代数周りの用語って似たようなものが多くて,すぐにアレがどれだっけと混同してしまいがちになります.線形代数の手計算とかがんばってたのなってもう10年とか昔の話だし,チートシート的にまとめなおしておこうと思いました.内容的には,主に統計や機械学習で使うような内容が中心になっています.

概要

統計・機械学習で使う線形代数は,基本的には以下「計算の簡便化」と「データ変換」の2つがメインです.もちろん数学的に突っ込んでいったり,統計・機械学習でも応用的な手法を用いる場合はその限りではないですが,基本的には下の2つが大きいと思います*1

計算の簡便化

  • (例えば固有値固有ベクトルを用いて)行列を対角化することで,行列の乗算を高速に実施する
  • (LU分解を用いて)扱いやすい形に行列を分解することで,その後の計算を高速にする

データ変換

  • SVDを行うことでLSIやPCAといったデータ縮約を行うことができる
  • 行列を用いてデータを抽象化することで,回帰係数の算出を統一的な形で記述できる*2

ということで,上のような目的に向けて順に用語と意味を並べました.できるだけ頭から順に読んでいけば理解できるように書き下したつもりです.またあくまで個人的な理解なので,数学的な厳密さについて欠ける箇所や,説明不足な所などあるかもしれません.

個別項目

ノルム

  • 意味: ベクトルの大きさのようなもの
  • 用例: \vec{a}=(3,4,5)のとき\|\vec{a}\|=\sqrt{3^2+4^2+5^2}
  • 備考: ↑は2次のノルムで,単に絶対値を加算しただけの1次ノルム,3乗和の3乗根を取った3次ノルムなどいろいろなパターンがある.とはいえ2次ノルム以外は余り使われない*3

内積

  • 意味: ベクトルの要素同士のかけ算
  • 用例: \vec{x}=(3,4),\vec{y}=(2,5)のときの\vec{x}\cdot \vec{y}=(\vec{x},\vec{y})=3 \times 2 + 2 \times 5 = 16
  • 備考: 図形的には\vec{x}から\vec{y}への正射影を意味するので,\vec{x}\vec{y}のなす角を\thetaとしたときに,\|\vec{x}\|\|\vec{y}\|cos\thetaとも表せる

一次結合

  • 意味: 複数のベクトルを実数倍したものの和
  • 用例: k\vec{a}+l\vec{b}

基底

  • 意味: 定義空間Wをベクトルの一次結合で一意に表せる場合に,\{\vec{a}, \vec{b}\}Wの基底という

標準基底

  • 意味: 要素の1つだけが1で,それ以外が0のベクトル群で構成された基底
  • 用例: 定義空間がR^2のときの\vec{e_{1}}=(1, 0),\vec{e_{2}}=(0, 1)

正規直交基底

  • 意味: 基底を構成するベクトルがすべてノルム1で,かつすべての要素ベクトルが互いに直交している((要素ベクトル同士の内積がゼロになる)もの
  • 用例: \vec{e_{1}}=(\frac{2}{\sqrt{5}},\frac{1}{\sqrt{5}}),\vec{e_{2}}=(-\frac{1}{\sqrt{5}},\frac{2}{\sqrt{5}})であれば. |\vec{e_{1}}|=|\vec{e_{2}}|=1かつ\vec{e_{1}} \cdot \vec{e_{2}}= 0
  • 備考: 標準基底は当然正規直交基底でもある.正規直交基底を用いたベクトル \vec{a}=a_1\vec{e_{1}}+a_2\vec{e_{2}}, \vec{b}=b_1\vec{e_{1}}+b_2\vec{e_{2}}については,|\vec{a}|=\sqrt{a_1+a_2}\vec{a}\cdot \vec{b}=a_1 b_1+a_2 b_2と標準基底同様の簡便な計算でノルムや内積が計算できる

線形写像

  • 意味: n次元ベクトル空間R^nの1つの要素を定めると,別のベクトル空間R^mのただ一つの要素が定まる場合,fを線形写像もしくは1次写像という
  • 備考: 特にf: R^n \rightarrow R^nの線形写像については,線形変換もしくは1次変換という.図形的には標準基底で\vec{OP}=k\vec{e_1}+l\vec{e_2}と表される点Pを,基底\vec{a},\vec{b}\vec{OQ}=k\vec{a}+l\vec{b}と表される点Qに移す作業を意味する

単位行列

  • 意味: 対角要素がすべて1で,それ以外がすべて0である行列
  • 用例: E=\begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix}

逆行列

  • 意味: 行列Aに掛けると単位行列Eになる行列
  • 用例:  AA^{-1}=E

正則

  • 意味: A逆行列を持つときAは正則であり,持たない場合は正則ではない

行列式

  • 意味: 行列の面積,体積のようなもの
  • 用例: 2次の場合 \rm{det} \begin{vmatrix}4&2\\3&7\end{vmatrix}=4\times7-2\times3=22
  • 備考:  \rm{det}A=0のときは,A逆行列を持たない.なお|A|と書く場合もある*4

線形変換における基底の取替

  • 意味: Aによる線形変換f: X \rightarrow AXにおいて,基底を(\vec{e_1},\vec{e_2}) \rightarrow (\vec{a},\vec{b})=Pに取替える場合, A \rightarrow P^{-1}APと表せる

対角行列

  • 意味: 行列の対角要素に0以外の数が,それ以外の要素には0が並ぶ行列のこと
  • 備考: 対角行列は累乗が\begin{pmatrix}2&0&0\\0&3&0\\0&0&4\end{pmatrix}^n=\begin{pmatrix}2^n&0&0\\0&3^n&0\\0&0&4^n\end{pmatrix}と非常に簡単に求められる,といった計算上の扱いやすさがある

固有値固有ベクトル

固有ベクトルによる対角化

  • 意味: 固有ベクトルを基底とした行列を用いて,Aの基底を取替えると,固有値を要素とした対角行列に変換できる
  • 用例:  P=(\vec{p_1},\vec{p_2},\vec{p_3})のとき,P^{-1}AP=\begin{pmatrix}\lambda_1&0&0\\0&\lambda_2&0\\0&0&\lambda_3\end{pmatrix}=L

スペクトル分解

  • 意味: 対角行列をE=\begin{pmatrix}1&0\\0&0\end{pmatrix}E=\begin{pmatrix}0&0\\0&1\end{pmatrix}の1次結合で表すこと
  • 用例: 固有値行列L固有ベクトルを基底とした行列Pとしたとき,A=PLP^{-1}=\lambda_1 P\begin{pmatrix}1&0&0\\0&0&0\\0&0&0\end{pmatrix}P^{-1}+\lambda_2 P\begin{pmatrix}0&0&0\\0&1&0\\0&0&0\end{pmatrix}P^{-1}+\lambda_3 P\begin{pmatrix}0&0&0\\0&0&0\\0&0&1\end{pmatrix}P^{-1}=\lambda_1 X+\lambda_2 Y+\lambda_3 Zと表せる*5
  • 備考: 上のX, Y, Zについては, X^2=X\\Y^2=Y\\Z^2=Z\\XY=YZ=ZX=O\\X+Y=Y+Z=Z+X=Eという性質がある

転置行列

  • 意味: 行列の列要素と行要素を入れ替えたもの
  • 用例: B=\begin{pmatrix}2&7&0\\0&3&1\\0&0&4\end{pmatrix}のとき,B^t=\begin{pmatrix}2&0&0\\7&3&0\\0&1&4\end{pmatrix}

正方行列

  • 意味: 行要素の数と列要素の数が等しい行列.要するに正方形の行列
  • 用例: B^t=\begin{pmatrix}2&0&0\\7&3&0\\0&1&4\end{pmatrix}3\times3の正方行列である

(実)対称行列

  • 意味: \begin{pmatrix}2&7&0\\7&3&1\\0&1&4\end{pmatrix}のように,行列の上三角成分と下三角成分が対角成分を挟んで対称になっている正方行列
  • 備考:一般的に対称行列は,実数のみを要素として持つ実対称行列を意味することが多い(複素数を要素に持つ場合,対称行列に対応するものとしてエルミート行列がある).対称行列の場合,転置しても元の行列と等しく A^t=Aとなる.また対称行列の固有値\lambda=(\lambda_1,\lambda_2,\lambda_3)固有ベクトルP=(\vec{p_1},\vec{p_2},\vec{p_3})としたとき,異なる固有値に対する固有ベクトルは直交するため,\vec{p_1}\cdot \vec{p_2}=\vec{p_2}\cdot \vec{p_3}=\vec{p_3}\cdot \vec{p_1}=0となる.なお実対称行列の固有値は必ず実数になる*6

直交行列

  • 意味: 行列とその転置行列の積が単位行列になるもの
  • 用例: CC^t=E
  • 備考: 対称行列の固有ベクトルを正規化(ノルムが1になるように)した行列をQ=(\vec{q_1},\vec{q_2},\vec{q_3})とすると,Q^{-1}=Q^tが成り立つ.また任意の行列Aについて,AA^t=A^tAが成り立つとき,Aは直交行列で対角化可能となる.あるベクトル xに直交行列Aをかけてもノルムは変化しない,つまり\left|Ax\right|=\left|x\right|が成り立つ*7

随伴行列

  • 意味: 複素数を成分にとる行列に対して,転置を行った上で複素共役を取ったもの
  • 用例: \begin{pmatrix}2&2+i\\1&3\\-i&7\end{pmatrix} \rightarrow \begin{pmatrix}2&1&-i\\2+i&3&7\end{pmatrix} \rightarrow \begin{pmatrix}2&1&i\\2-i&3&7\end{pmatrix}のように,転置して,複素共役を取った最後の行列は,もとの行列の随伴行列となる

エルミート行列

  • 意味: 複素数要素を持つ正方行列(=複素正方行列)のうち,随伴行列がもとの行列と一致するもの
  • 用例: B=\begin{pmatrix}2&2+i&3\\2-i&3&i\\3&-i&4\end{pmatrix}B_{1,2}=2+iの対称となる要素が B_{2,1}=2-iとなっている
  • 備考: 複素数要素を持たない場合には,単なる対称行列になる.エルミート行列の固有値は必ず実数になる

ユニタリ行列

  • 意味: 複素正方行列のうち,随伴行列が逆行列と等しいもの(=掛け合わせると単位行列になる)
  • 用例: U=\begin{pmatrix} \frac{1}{\sqrt{2}}&\frac{i}{\sqrt{2}}\\\frac{i}{\sqrt{2}}&\frac{1}{\sqrt{2}} \end{pmatrix}, U^{*}=\begin{pmatrix} \frac{1}{\sqrt{2}}&\frac{-i}{\sqrt{2}}\\\frac{-i}{\sqrt{2}}&\frac{1}{\sqrt{2}} \end{pmatrix}のとき, UU^*=U^*U=IよりU^*=U^{-1}
  • 備考: 直交行列の複素数バージョンと考えればよい.直交行列と同様,ユニタリ行列をかけても対象ベクトルのノルムは変化しない

正定値行列

  • 意味: エルミート行列 or 対称行列Aについて,すべての固有値の符号が正であるもの
  • 用例: 固有値 \lambda=2, 5を持つ \begin{pmatrix}3&\sqrt{2}\\\sqrt{2}&4\end{pmatrix}は正定値行列となる
  • 備考: 固有値が0と正の符号で構成されているときは半正定値行列という

三角行列

  • 意味: 対角線の左下,または右上がすべてゼロであるような正方行列のこと.左下がゼロの場合は上三角行列,右上がゼロの場合は下三角行列という
  • 用例:  U=\begin{pmatrix}2&3&5\\0&3&1\\0&0&4\end{pmatrix}は上三角行列, U=\begin{pmatrix}2&0&0\\1&3&0\\4&5&4\end{pmatrix}は下三角行列
  • 備考: 三角行列の行列式は,対角成分の積なので非常に簡便に求められる.下のLU分解は,この正方行列を三角行列に分解することで,計算を簡便化するための手法である

LU分解

  • 意味: 正方行列Aを下三角行列 Lと上三角行列Uの積に分解すること
  • 用例:  A=\begin{pmatrix}2&4&0\\2&6&4\\3&9&8\end{pmatrix}のとき,A=LU=\begin{pmatrix}1&0&0\\1&1&0\\\frac{3}{2}&\frac{3}{2}&1\end{pmatrix} \begin{pmatrix}2&4&0\\0&2&4\\0&0&2\end{pmatrix}
  • 備考: 計算しやすくするためLの対角成分を1に揃えるのが慣習となっている.またLUも対角成分を1にするかわりに,対角行列Dを加えてA=LDUとしたLDU分解の形もある.LU分解を行うことで,もとの正方行列を用いた一次方程式が簡単に解けたり,行列式が簡単に求まったりするようになる

コレスキー分解

  • 意味: LU分解の特殊な場合で,正定値エルミート行列Aを下三角行列Lとその随伴行列L^*に分解すること
  • 用例:  A=LL^*

QR分解

  • 意味: 行列Aを直交行列Qと上三角行列Rの積に分解すること
  • 用例:  A=\begin{pmatrix}1&2&3\\-1&0&-3\\0&-2&3\end{pmatrix} = \begin{pmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{6}}&\frac{1}{\sqrt{3}}\\\frac{-1}{\sqrt{2}}&\frac{1}{\sqrt{6}}&\frac{1}{\sqrt{3}}\\0&\frac{-2}{\sqrt{6}}&\frac{1}{\sqrt{3}}\end{pmatrix}\begin{pmatrix}\sqrt{2}&\sqrt{2}&\sqrt{18}\\0&\sqrt{6}&\sqrt{6}\\0&0&\sqrt{3}\end{pmatrix} =QR
  • 備考: QR分解を行うことによって,固有値を高速に求めることができるようになる

特異値分解(SVD)

  • 意味:  m \times n行列 Mを, m \times rの列直交行列 U r \times r行列 \Sigma n \times rの列直交行列 Vに分解すること
  • 用例:  M=U\Sigma V^t
  • 備考: 列直交とは,Uが4行2列のとき UU^t=\begin{pmatrix}1&0\\0&1\end{pmatrix}になることをいう.もちろん Mが正方行列であれば,U,Vはともに直交行列となる.LSI(潜在意味インデキシング)やPCA(主成分分析)を行う際に使われる

参考

上記のまとめを書くのに使ったのは,主に下記の2冊です.どちらもいわゆる教科書というよりは,線形代数どう使われるか,何の役に立つのかということを説明している良書です.順番は「意味がわかる線形代数」→「プログラミングのための線形代数」で,前者はいわゆる文系出身で数学忘れました,な人でも理解できるような形で丁寧に書かれている良書です.後者はプログラマ向けで,実装コードや処理の高速化といった面に結構ページを割いています.

まずはこの一冊から 意味がわかる線形代数 (BERET SCIENCE)

まずはこの一冊から 意味がわかる線形代数 (BERET SCIENCE)

プログラミングのための線形代数

プログラミングのための線形代数

*1:なので,線形代数の教科書には必ず出てくるジョルダン標準形については,ここでは触れません.あんまり統計・機械学習分野でジョルダン標準形を使う場面をみないし,流れがわかりにくくなるので...

*2:さらには,コレスキー分解やQR分解を用いて最小二乗法を解くことで,回帰分析の係数が定まるといった側面もあります

*3:ブコメをウケて修正しました.

*4:ブコメを受けて修正しました

*5:ブコメを受けて修正しました.

*6:ブコメを受けて追記しました

*7:ブコメを受けて追記しました