アラフォーからの機械学習

アラフォーです。機械学習や統計学の解説記事を書いていきます

固有値分解と特異値分解の説明

固有値分解と特異値分解統計学機械学習において頻繁に登場する手法です。とくに、主成分分析やリッジ回帰をより深く理解する上で大いに役立ちます。

固有値分解(Eigenvalue Decompositions)

一言でいうと、与えられた行列を直交するベクトルとその大きさに分解することです。

では数式で説明してみます。固有値分解とは\textbf{A}という次元がn \times nの正方行列があったとき、下式のように分解することです。

\displaystyle{
    \textbf{A} = \textbf{P}\textbf{D}\textbf{P}^\mathrm{T} \tag{1}
}

ここで\textbf{P}は直交行列、\textbf{D}は対角行列です。直交行列とは、

\displaystyle{
    \textbf{P}\textbf{P}^\mathrm{T} = \textbf{P}^\mathrm{T}\textbf{P} = \textbf{I}
}

となるような行列です。ここで\textbf{I}単位行列です。自身の内積\textbf{P}^\mathrm{T}\textbf{P}単位行列になるとは\textbf{P}の各ベクトル(基底)が直交しているということです。たとえば\textbf{P}

\displaystyle{
    \textbf{P} = 
    \begin{bmatrix}
        p_{11} & p_{12} \cr \\
        p_{21} & p_{22} 
    \end{bmatrix}
}

というような行列としたときに、自身の内積

\displaystyle{
    \textbf{P}^\mathrm{T}\textbf{P} =
    \begin{bmatrix}
        p^2_{11} + p^2_{21} & p_{11}p_{12} + p_{21}p_{22} \cr \\
        p_{11}p_{12} + p_{21}p_{22} & p^2_{12} + p^2_{22}
    \end{bmatrix}
}

となり、これが単位行列になるので、

\displaystyle{
    \begin{bmatrix}
        p^2_{11} + p^2_{21} & p_{11}p_{12} + p_{21}p_{22} \cr \\
        p_{11}p_{12} + p_{21}p_{22} & p^2_{12} + p^2_{22}
    \end{bmatrix}
    =
    \begin{bmatrix}
        1 & 0 \cr \\
        0 & 1
    \end{bmatrix}
}

これを各成分ごとに書くと、

\displaystyle{
    \begin{cases}
        p_{11}p_{12} + p_{21}p_{22} = 0 \cr \\
        p^2_{11} + p^2_{21} = 1 \cr \\
        p^2_{12} + p^2_{22} = 1 \tag{2}
    \end{cases}
}

となります。ところで、行列\textbf{P}をベクトルを使って表すと以下になります。

\displaystyle{
    \textbf{P} =
    \begin{bmatrix}
        \textbf{p}_{1} & \textbf{p}_{2} \tag{3}
    \end{bmatrix}
}

列成分をベクトルと置きました。さて(2)式と(3)式を見比べてみます。(2)式の各式は何を意味しているでしょうか。(2)式の1行目はベクトル[tex:\textbf{p}1, \textbf{p}2]の内積が0であると言っています。

\displaystyle{
    \textbf{p}_1 \cdot \textbf{p}_2 = p_{11}p_{12} + p_{21}p_{22} = 0 
}

内積が0であるとは2つのベクトルが直交していることを意味しています。これが直交行列という名前が付いている理由になります。また、(2)式の2行目と3行目はそれぞれベクトル[tex:\textbf{p}1, \textbf{p}2]の大きさが1であると言っています。つまり単位ベクトルです。これらのベクトルを固有ベクトルと言います。

直交行列を統計学機械学習で見ると、列ベクトルは変数(特徴量)に該当しますので、各変数が無相関であるような行列です。

話を固有値分解に戻します。対角行列である\textbf{D}は、対角成分以外が0である行列で、以下のような形状です。

\displaystyle{
    \begin{bmatrix}
        \lambda_1 & 0 &  \ldots & 0 \\
        0 & \lambda_2 &  \ldots & 0 \\
        \vdots & \vdots & \ddots & \vdots \\
        0 & 0 & \ldots & \lambda_n
    \end{bmatrix}
}

この\lambda_1, \ldots,\lambda_n固有値と言います。固有ベクトルが方向を示していたのに対して、こちらはその大きさを表現しています。なぜ大きさであるのかは固有値分解の式である(1)を展開するとわかります。簡単のために\textbf{A}2 \times 2の行列とします。

\displaystyle{
    \begin{aligned}
        \textbf{A} &= \textbf{P}\textbf{D}\textbf{P}^\mathrm{T} \cr \\
        &= 
        \begin{bmatrix}
            p_{11} & p_{12} \cr \\
            p_{21} & p_{22}
        \end{bmatrix}
        \begin{bmatrix}
            \lambda_{1} & 0 \cr \\
            0 & \lambda_{2}
        \end{bmatrix}
        \begin{bmatrix}
            p_{11} & p_{21} \cr \\
            p_{12} & p_{22}
        \end{bmatrix} \cr \\
        &=
        \begin{bmatrix}
            \lambda_1 p_{11} & \lambda_2 p_{12} \cr \\
            \lambda_1 p_{21} & \lambda_2 p_{22}
        \end{bmatrix}
        \begin{bmatrix}
            p_{11} & p_{21} \cr \\
            p_{12} & p_{22}
        \end{bmatrix} \cr \\
        &=
        \begin{bmatrix}
            \lambda_1 p^2_{11} + \lambda_2 p^2_{12} & \lambda_1 p_{11}p_{21} + \lambda_2 p_{12}p_{22} \cr \\
            \lambda_1 p_{11}p_{21} + \lambda_2 p_{12}p_{22} & \lambda_1 p^2_{21} + \lambda_2 p^2_{22}
        \end{bmatrix} \cr \\
        &=
        \lambda_1
        \begin{bmatrix}
            p^2_{11} & p_{11}p_{21} \cr \\
            p_{11}p_{21} & p^2_{21}
        \end{bmatrix}
        + \lambda_2
        \begin{bmatrix}
            p^2_{12} & p_{12}p_{22} \cr \\
            p_{12}p_{22} & p^2_{22}
        \end{bmatrix} \cr \\
        &=
        \lambda_1 \textbf{p}_1\textbf{p}_1^\mathrm{T} + \lambda_2 \textbf{p}_2\textbf{p}_2^\mathrm{T}
    \end{aligned} 
}

行列\textbf{A}は直交行列の列ベクトル(固有ベクトル)に対角行列の成分(固有値)をかけ合わせ、それらを固有ベクトルの分だけ足し合わせた形に分解できることを意味しています。固有ベクトルは大きさが1で方向のみを表しており、固有値はその方向の大きさを表していることがわかります。また、繰り返しになりますが、各固有ベクトルは直交しているため足し算の形に書き表すことができるわけです。

特異値分解(Singular Value Decompositions ; SVD)

固有値分解は正方行列であるという制限がありますが、一般的には特徴量の数よりデータの数のほうが多いと考えられます(行列が横より縦のほうが長い)。そこで特異値分解です。特異値分解は、ランクがr、次元がn \times m の行列\textbf{A}を下式のように分解することです。

\displaystyle{
    \textbf{A} = \textbf{P}\textbf{\Lambda}\textbf{O}^\mathrm{T} \tag{4}
}

ここで各行列は以下のような性質をを持ったものです。

  • \textbf{\Lambda} : 次元はr \times r, 対角行列である
  • \textbf{P} : 次元はn \times r, \textbf{P}^\mathrm{T}\textbf{P} = \textbf{I}となるような行列
  • \textbf{O} : 次元はm \times r, \textbf{O}^\mathrm{T}\textbf{O} = \textbf{I}となるような行列

なお、\Lambda\lambdaの大文字です。

\textbf{\Lambda}は以下のように固有値の時と同じ形になっており、各値を特異値と言います。

\displaystyle{
    \begin{bmatrix}
        \lambda_1 & 0 &  \ldots & 0 \\
        0 & \lambda_2 &  \ldots & 0 \\
        \vdots & \vdots & \ddots & \vdots \\
        0 & 0 & \ldots & \lambda_r
    \end{bmatrix}
}

固有値分解の時は\textbf{P}が直交行列であるという性質を持っていましたが、特異値分解では正方行列から一般の行列に拡張を行ったためその性質は失われています。しかしながら、特異値分解対象である\textbf{A}にフルランクであるという制約を設けることで一部その性質を得ることができます。フルランクであるとはランクと列数が同じ(r = m)ということです。その制約により、(4)式自体には変化はありませんが、各行列は以下の性質のように変化します。

  • \textbf{\Lambda} : 形状はm \times m, 対角行列である
  • \textbf{P} : 形状はn \times m, \textbf{P}^\mathrm{T}\textbf{P} = \textbf{I}となるような行列
  • \textbf{O} : 形状はm \times m, \textbf{O}^\mathrm{T}\textbf{O} = \textbf{O}\textbf{O}^\mathrm{T} = \textbf{I}となるような直交行列

参考