Python3ではじめるシステムトレード：射影の悪魔と天使

20240201 0:32 657

多くの人は微分を用いた最小二乗法を先に学び、その後に射影を学んでいるのではないでしょうか？特にあとから線形代数を学び、射影をまなぶ際にその違いの理解に苦しんでいる人は多いのではないでしょうか？私は最初は射影はたいして重要ではなく、学びの過程で出てくる単なる単語の1つでしかすぎませんでした。最小二乗法はあくまで微分で行う最小二乗法でした。したがって、ストラング：線形代数イントロダクション原書第4版の翻訳を学ぶ過程で、第4章直交性は、理解に苦しむ章の1つです。それは23年5月3日の投稿[python3ではじめるシステムトレード：射影と最小二乗法](https://qiita.com/innovation1005/items/99b3159627d6932e22b3)でも書きました。今回はさらに追加の体験談です。これは多くの勉強仲間が「射影」の重要性を訴える中でのきずきです。間違いはいつもと同じようにあるのでご指摘いただけると幸いです。

```math
\mathbf{a}=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}への\mathbf{b}=\begin{bmatrix}1 \\ 1 \\ 1 \end{bmatrix}の射影について考えます。これはp.220の例１を若干変えたものです。
```
# グローバルとローカル

原点と$\mathbf{a}$を通る直線への点$\mathbf{b}$からの射影はベクトルとしてのグローバルな視点、つまりすべてのデータ点についての誤差を最小化しています。これは点$\mathbf{b}$から直線$\mathbf{a}$に垂線を下すことで実現されます。

```math
\mathbf{a}\cdot (\mathbf{b}-\hat{\mathbf{x}}\mathbf{a})=\begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix}\cdot \left(\begin{bmatrix}1 \\ 1\\ 1\end{bmatrix}- \hat{\mathbf{x}}\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\right)
```
```math
=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \begin{bmatrix}1 \\ 1 \\ 1\end{bmatrix} -\hat{\mathbf{x}}\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}=\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix}1 \\1 \\1 \end{bmatrix} -\hat{\mathbf{x}}\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix}1 \\ 2 \\ 2\end{bmatrix}=0

```

```math
\mathbf{a}^T\mathbf{b}=\begin{bmatrix}1&2&2\end{bmatrix}\begin{bmatrix}1 \\ 1 \\ 1\end{bmatrix}=1+2+2=5
```
```math
\mathbf{a}^T\mathbf{a}=\begin{bmatrix}1&2&2\end{bmatrix}\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}=1+4+4=9

```

この場合直線への射影なので数$\hat{\mathbf{x}}$は,$\mathbf{a}^T\mathbf{b}/\mathbf{a}^T\mathbf{a}=5/9$です。

求めたいのは直性上の$\mathbf{b}$から最も近い点$\mathbf{p}$です。これを射影と呼び、それは$\mathbf{a}$の倍数なので、
したがって, 射影は$\mathbf{p}=\frac{5}{9}\mathbf{a}$となり、
$\mathbf{p}=\frac{5}{9}\mathbf{a}=\left(\frac{5}{9},\frac{10}{9},\frac{10}{9} \right)$が$\mathbf{b}$と$\mathbf{p}$の誤差は, $\mathbf{e}=\mathbf{b}-\mathbf{p}$となります.

$\mathbf{e}=\mathbf{b}-\mathbf{p}=\left(\frac{4}{9},-\frac{1}{9},-\frac{1}{9} \right)$
が得られます。

つぎに各点についての直交性について考えてみましょう。一つ一つの成分が本当に最小なのかどうかが疑問に思えませんか？もっと別の組みあわせがあるのではないか？

そこで、$\mathbf{a}=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}$と$\mathbf{b}=\begin{bmatrix}1 \\ 1 \\ 1 \end{bmatrix}$をペアのデータとして、行を観測値、列を特徴量または説明変数とします。これは実際$\mathbf{b}$のデータ点を一つの次元として扱うことになります。つまり$b_1=\begin{bmatrix}1 \\ 0 \\ 0 \end{bmatrix}$ $b_2=\begin{bmatrix}0 \\ 1 \\ 0 \end{bmatrix}$ $b_3=\begin{bmatrix}0 \\ 0 \\ 1 \end{bmatrix}$とします。
これらすべてに先ほどの直交を仮定します。先ほどのベクトルの交点をグローバルな特徴として、こちらをローカルな特徴とします。

```math
\mathbf{a}\cdot (\mathbf{b}_1-\hat{\mathbf{x}_1}\mathbf{a})=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \left(\begin{bmatrix}1 \\ 0 \\ 0 \end{bmatrix}- \hat{\mathbf{x}}_1\begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix}\right)
```
```math
=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \begin{bmatrix}1 \\ 0 \\ 0\end{bmatrix} -\hat{\mathbf{x}}_1\begin{bmatrix}1 \\ 2 \\ 2  \end{bmatrix}\cdot \begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}=\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} -\hat{\mathbf{x}}_1\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}=0
```

よって、$\hat{x}_1=\frac{1}{9}$

```math
\mathbf{a}\cdot (\mathbf{b}_2-\hat{\mathbf{x}_2}\mathbf{a})=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \left(\begin{bmatrix}0 \\ 1 \\ 0 \end{bmatrix}- \hat{\mathbf{x}}_2\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\right)
```
```math
=\begin{bmatrix}1 \\ 2 \\ 2\end{bmatrix}\cdot \begin{bmatrix}0 \\ 1 \\ 0\end{bmatrix} -\hat{\mathbf{x}}_2\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}=\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix}0 \\ 1 \\ 0 \end{bmatrix} -\hat{\mathbf{x}}_2\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix}1 \\ 2 \\ 2\end{bmatrix}=0
```

よって、$\hat{x}_2=\frac{2}{9}$

```math
\mathbf{a}\cdot (\mathbf{b}_3-\hat{\mathbf{x}_2}\mathbf{a})=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \left(\begin{bmatrix}0 \\ 0 \\ 1\end{bmatrix}- \hat{\mathbf{x}}_3\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\right)
```
```math
=\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \begin{bmatrix}0 \\ 0 \\ 1 \end{bmatrix} -\hat{\mathbf{x}}_3\begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}\cdot \begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}=\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix}0 \\ 0 \\ 1 \end{bmatrix} -\hat{\mathbf{x}}_3\begin{bmatrix}1&2&2\end{bmatrix} \begin{bmatrix}1 \\ 2 \\ 2 \end{bmatrix}=0
```

よって、$\hat{x}_3=\frac{2}{9}$

射影は$\mathbf{p}=\hat{\mathbf{x}}\mathbf{a}$なので、$p_1=\frac{1}{9}(1,2,2)=\left(\frac{1}{9},\frac{2}{9},\frac{2}{9}\right)$

射影は$\mathbf{p}=\hat{\mathbf{x}}\mathbf{a}$なので、$p_2=\frac{2}{9}(1,2,2)=\left(\frac{2}{9},\frac{4}{9},\frac{4}{9}\right)$

射影は$\mathbf{p}=\hat{\mathbf{x}}\mathbf{a}$なので、$p_3=\frac{2}{9}(1,2,2)=\left(\frac{2}{9},\frac{4}{9},\frac{4}{9}\right)$

よってグローバルな射影は$p_1+p_2+p_3=\left(\frac{5}{9},\frac{10}{9},\frac{10}{9}\right)$

ローカルな誤差は

```math
e_1=b_1-p_1=\begin{bmatrix}\frac{9}{9}\\ 0 \\ 0 \end{bmatrix}- \begin{bmatrix}\frac{1}{9}\\ \frac{2}{9}\\ \frac{2}{9} \end{bmatrix}=\begin{bmatrix} \frac{8}{9} \\ - \frac{2}{9} \\ - \frac{2}{9}\end{bmatrix}
```
```math
e_2=b_2-p_2=\begin{bmatrix}0 \\ \frac{9}{9}\\ 0 \end{bmatrix}- \begin{bmatrix}\frac{2}{9}\\ \frac{4}{9}\\ \frac{4}{9} \end{bmatrix}=\begin{bmatrix}-\frac{2}{9}\\ \frac{5}{9}\\ -\frac{4}{9}\end{bmatrix}
```

```math
e_3=b_2-p_2=\begin{bmatrix}0 \\ 0\\ \frac{9}{9} \end{bmatrix}- \begin{bmatrix}\frac{2}{9}\\ \frac{4}{9}\\ \frac{4}{9}\end{bmatrix}=\begin{bmatrix}-\frac{2}{9} \\ -\frac{4}{9} \\ \frac{5}{9}\end{bmatrix}
```

そうするとグローバルな誤差は

```math
\mathbf{e}=e_1+e_2+e_3=\begin{bmatrix}\frac{4}{9} \\ -\frac{1}{9} \\ - \frac{1}{9}\end{bmatrix}
```

となり、どちらの方法で求めても誤差が最小であることがわかります。直観的には射影による誤差の最小化はグローバルとローカルな最小の両方を同時に実現しています。線形回帰の誤差項は弱定常のホワイトノイズが仮定されますが、回帰係数などに関する統計検定を用いる場合には強定常が求められます。その際にはローカルな正確さも重要なのではと思います。

線形代数イントロダクションの4.3最小二乗近似では幾何と代数をつかって最小二乗解を射影を使って求め、最小二乗解を解析を使って求めると解として同じ正規方程式が導かれます。よって、射影による正規方程式の解と微分による正規方程式の解は全体像としては同じです。つまり、$\hat{\boldsymbol{x}}$がどちらの方法においても計算上全く同じになるので、**コメント**

@mtanaka-kumw(田中 昌昭)2024-01-29 15:50

になります。

# 微分による正規方程式の導出

最小二乗推定量の導出において、まず基本的な誤差の二乗和を考えます。つまり、以下の式を最小化する $\boldsymbol{\beta}$ を求めます。

```math
\begin{eqnarray}||\mathbf{Y} - X\boldsymbol{\beta}||^2 &=& (\mathbf{Y} - X\boldsymbol{\beta})^T(\mathbf{Y} - X\boldsymbol{\beta})\\
&=&(\mathbf{Y}^T - \boldsymbol{\beta}^T X^T)(\mathbf{Y} - X\boldsymbol{\beta})\\
&=&\mathbf{Y}^T\mathbf{Y} - \mathbf{Y}^T X\boldsymbol{\beta} - \boldsymbol{\beta}^T X^T\mathbf{Y} + \boldsymbol{\beta}^T X^T X\boldsymbol{\beta} \end{eqnarray}
```
ここで、ベクトルとその転置の積はスカラーであり、その転置は元のスカラーと同じです。したがって、$\mathbf{Y}^T X\boldsymbol{\beta}$ はスカラーであり、その転置は $(X\boldsymbol{\beta})^T\mathbf{Y}$ と等しいため、
$$=\mathbf{Y}^T\mathbf{Y} - 2\boldsymbol{\beta}^T X^T\mathbf{Y} + \boldsymbol{\beta}^T X^T X\boldsymbol{\beta}$$
式(3)の両辺に$\mathbf{Y}^TX(X^TX)^{-1}X^T\mathbf{Y}$を加えて変形すると
$$||\mathbf{Y} - X\boldsymbol{\beta}||^2+\mathbf{Y}^TX(X^TX)^{-1}X^T\mathbf{Y}-||\mathbf{Y}||^2$$
$$=\mathbf{Y}^TX(X^TX)^{-1}X^T\mathbf{Y}- \mathbf{Y}^T X\boldsymbol{\beta}- \boldsymbol{\beta}^T X^T\mathbf{Y} + \boldsymbol{\beta}^T X^T X\boldsymbol{\beta}$$
$$ =\mathbf{Y}^TX(X^TX)^{-1}X^T\mathbf{Y}- \mathbf{Y}^T X\boldsymbol{\beta}- \boldsymbol{\beta}^T(X^T X)[(X^T X)^{-1} X^T\mathbf{Y} -  \boldsymbol{\beta}]$$
$$ =\mathbf{Y}^TX[(X^TX)^{-1}X^T\mathbf{Y}- \boldsymbol{\beta}]- \boldsymbol{\beta}^T(X^T X)[(X^T X)^{-1} X^T\mathbf{Y} -  \boldsymbol{\beta}]$$
$$ =\mathbf{Y}^TX(X^TX)^{-1}(X^TX)[(X^TX)^{-1}X^T\mathbf{Y}- \boldsymbol{\beta}]- \boldsymbol{\beta}^T(X^T X)[(X^T X)^{-1} X^T\mathbf{Y} -  \boldsymbol{\beta}]$$
$$ =[\mathbf{Y}^TX(X^TX)^{-1}- \boldsymbol{\beta}^T](X^T X)[(X^T X)^{-1} X^T\mathbf{Y} -  \boldsymbol{\beta}]$$
$$ =[(X^TX)^{-1}X^T\mathbf{Y}- \boldsymbol{\beta}]^T(X^T X)[(X^T X)^{-1} X^T\mathbf{Y} -  \boldsymbol{\beta}]$$

次に、$X^TX$ が正定値対称行列である場合、最小二乗推定量 $\hat{\boldsymbol{\beta}}$ は $(X^TX)^{-1}X^T\mathbf{Y}$ で与えられることを示します。

これは、上記の誤差の二乗和の式を $\boldsymbol{\beta}$ について微分し、その導関数を 0 と置くことで求めることができます。微分の結果は次のようになります。

$$
\frac{\partial}{\partial \boldsymbol{\beta}}\left( \mathbf{Y}^T\mathbf{Y} - 2\boldsymbol{\beta}^T X^T\mathbf{Y} + \boldsymbol{\beta}^T X^T X\boldsymbol{\beta} \right) = -2X^T\mathbf{Y} + 2X^TX\boldsymbol{\beta} = 0
$$

これを $\boldsymbol{\beta}$ について解くと、

$$
X^TX\boldsymbol{\beta} = X^T\mathbf{Y}
$$

となり、両辺に $(X^TX)^{-1}$ を掛けることで、

$$
\hat{\boldsymbol{\beta}} = (X^TX)^{-1}X^T\mathbf{Y}
$$

となります。これが最小二乗推定量の導出です。これは射影による結果と全く同じものです。

# 最小二乗法の適応例


1. **曲線フィッティング**：実験データや観測データをより複雑な数学的モデル（例えば多項式、指数関数、対数関数）にフィットさせる際に最小二乗法が使用されます。これは線形回帰の一般化と見なすことができます。

2. **信号処理**：信号を異なる成分に分解する際に、最小二乗法を使用してノイズを最小限に抑えながら信号の特徴を抽出します。例えば、音声信号の分析や画像処理で使われます。

3. **制御システム**：システムの動的挙動をモデル化する際に最小二乗法が使われることがあります。システムのパラメータを推定するために使用されます。

4. **機械学習**：特に教師あり学習において、最小二乗法は回帰問題やいくつかの分類問題における学習アルゴリズムに組み込まれます。

5. **時間系列分析**：経済データや気象データなどの時間系列データを分析する際に、最小二乗法を用いてモデルパラメータを推定します。

6. **経済学**：経済モデルにおけるパラメータ推定に最小二乗法が用いられます。需要曲線や供給曲線の推定などが例です。

7. **地質学と地球物理学**：地震データや地質サンプルからのデータを分析し、地下構造などをモデル化する際に最小二乗法が使われます。

これらの例から分かるように、最小二乗法は多様な科学的・工学的問題に適用可能で、非常に強力なツールです。

# まとめ

まとめますと、最小二乗法による回帰係数の推定では、いくつかの異なる方法がありますが、基本的には同じ結果に至ります。それぞれの方法の特性をまとめると以下のようになります：

1. **微分による方法と射影による方法**: これらの方法は、回帰係数の推定において同じ結果（正規方程式の解）に至ります。これは、誤差の二乗和を最小化するための代数的または幾何学的アプローチに基づいています。

2. **最尤法**: 最尤法では、目的変数が特定の確率分布（通常は正規分布）に従うと仮定します。この仮定が成立する場合、最尤法による回帰係数の推定値は最小二乗法と一致します。しかし、目的変数が正規分布でない場合、推定される分散や標準誤差は異なる可能性があります。

3. **数値解析（勾配降下法など）**: 数値解析法は、特に大規模なデータセットや複雑なモデルに適していますが、計算上の近似やイテレーションに基づくため、厳密な解析解とは異なる結果になることがあります。

また、最小二乗推定量の一意性は、行列$X^TX$の可逆性（すなわち、フルランクであること）に依存します。行列が特異である場合（フルランクでない場合）、一意な解を得ることはできません。

最後に、不偏性、最小分散、分散の不偏推定量といった性質は、解法に依存しない一般的な統計的性質であり、どの解法を用いても成立します。これらの性質は、モデルの統計的効率性と信頼性を保証するものです。

<A HREF="http://www.tradersshop.com/bin/showprod?c=9784775991855
">Python3ではじめるシステムトレード【第2版】環境構築と売買戦略</A>

<A HREF="http://www.tradersshop.com/bin/showprod?c=9784775991855">
     <IMG SRC="http://www.tradersshop.com/images/prod/9784775991855.jpg"BORDER=1 WIDTH=70 HEIGHT=100  </A>

「画像をクリックしていただくとpanrollingのホームページから書籍を購入していただけます。