📑

行列の最小二乗近似問題 (勉強メモ)

に公開

はじめに

データ解析で、最も基礎的かつ強力なツールの一つが最小二乗法です。観測データ\mathbf{y}と説明変数行列\mathbf{X}から、最も適合する係数ベクトル\mathbf{\beta}を求める、下のような問題です。

\underset{\mathbf{\beta}}{\arg \min} \ ||\mathbf{y} - \mathbf{X}\mathbf{\beta}||^2

今回は、上の問題をより発展させた最適化したい未知のパラメータがベクトルではなく行列\mathbf{B}であるような問題について記事を書いていこうと思います。
下の式が、今回扱う問題です。

\underset{\mathbf{B}}{\arg \min} \ ||\mathbf{Y} -\mathbf{X}\mathbf{B}||^2

計算過程

今回求めたいのは、||\mathbf{Y}-\mathbf{X}\mathbf{B}||^2を最小にするような\mathbf{B}です。この誤差の大きさをJ(\mathbf{B})とします。

J(\mathbf{B})=||\mathbf{Y}-\mathbf{X}\mathbf{B}||^2

ただし、\mathbf{X}は列フルランクであるとします。この条件は、\mathbf{X}^T\mathbf{X}の逆行列が存在するために必要です。

J(\mathbf{B})の展開

||\mathbf{Y}-\mathbf{X}\mathbf{B}||は、フロベニスノルムと呼べれます。フロベニスノルムの二乗は、転置行列とトレースを用いて下の式のように展開できます。

\begin{aligned} J(\mathbf{B})&=||\mathbf{Y}-\mathbf{X}\mathbf{B}||^2\\ &=\operatorname{Tr}[(\mathbf{Y}-\mathbf{X}\mathbf{B})^T (\mathbf{Y}-\mathbf{X}\mathbf{B})]\\ &=\operatorname{Tr}[(\mathbf{Y}^T-\mathbf{B}^T\mathbf{X}^T)(\mathbf{Y}-\mathbf{X}\mathbf{B})]\\ &=\operatorname{Tr}[\mathbf{Y}^T\mathbf{Y}-\mathbf{Y}^T\mathbf{X}\mathbf{B}-\mathbf{B}^T\mathbf{X}^T\mathbf{Y}+\mathbf{B}^T\mathbf{X}^T\mathbf{X}\mathbf{B}]\\ &=\operatorname{Tr}(\mathbf{Y}^T\mathbf{Y})-\operatorname{Tr}(\mathbf{Y}^T\mathbf{X}\mathbf{B})-\operatorname{Tr}(\mathbf{B}^T\mathbf{X}^T\mathbf{Y})+\operatorname{Tr}(\mathbf{B}^T\mathbf{X}^T\mathbf{X}\mathbf{B}) \end{aligned}

微分による最小化

このJ(\mathbf{B})が最小になるような\mathbf{B}を探したいので、通常の1変数の関数のときのように微分して0になるところを探していきます。
ただ、今回扱うのはベクトルや行列についての微分なので、初めての方は少し難しく感じるかもしれません。本記事では説明を割愛するので、詳細はYu Umegakiさんのこちらの記事をご覧ください。

\frac{\partial J(\mathbf{B})}{\partial \mathbf{B}} =-2 \mathbf{X}^T \mathbf{Y} + 2\mathbf{X}^T \mathbf{X} \mathbf{B}

そして、\frac{\partial J(\mathbf{B})}{\partial \mathbf{B}} =0とおくと、

\begin{aligned}  -2 \mathbf{X}^T \mathbf{Y} + 2\mathbf{X}^T \mathbf{X} \mathbf{B} &= 0 \\ 2\mathbf{X}^T \mathbf{X} \mathbf{B} &= 2 \mathbf{X}^T \mathbf{Y} \\ \mathbf{B} &= (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Y} \end{aligned}

特に\mathbf{X}正則行列である場合、\mathbf{B}= \mathbf{X}^{-1} \mathbf{Y}となります。

ただ、微分して勾配が0になる点が必ずしも最小値とは限りません(最大値や鞍点の可能性がある)。この点が最小値であることを保証するには、目的関数J(\mathbf{B})下に凸であることを示す必要があります。
幸い、今回の J(\mathbf{B})\mathbf{B}についての二次形式の和で構成されており、下に凸な関数です。したがって、勾配を0として求めた解 \mathbf{B}=(\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Y}が、ただ一つの最小値を与える解となります。
より厳密な証明には、ヘッセ行列が半正定値であることを確認する必要があります。

まとめ

本記事では、基本的な最小二乗法を拡張し、未知パラメータが行列である問題\underset{\mathbf{B}}{\arg \min} \ ||\mathbf{Y} -\mathbf{X}\mathbf{B}||^2 の解法を解説しました。

フロベニウスノルムをトレースを用いて展開し、行列\mathbf{B}で微分するという手順を経て、以下の解を導き出しました。

\mathbf{B}=(\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Y}

この式が、ベクトル\mathbf{\beta}での解法(正規方程式)を美しく一般化した形になっていることがお分かりいただけたかと思います。この記事が、行列を用いたデータ解析の世界への一歩となれば幸いです。

Discussion